Initial commit to Gerrit
[profile/ivi/orc.git] / testsuite / orcc / testorc.c
1
2 /* autogenerated from test.orc */
3
4 #ifdef HAVE_CONFIG_H
5 #include "config.h"
6 #endif
7 #ifndef DISABLE_ORC
8 #include <orc/orc.h>
9 #endif
10 #include <stdint.h>
11
12 #ifndef _ORC_INTEGER_TYPEDEFS_
13 #define _ORC_INTEGER_TYPEDEFS_
14 #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
15 #include <stdint.h>
16 typedef int8_t orc_int8;
17 typedef int16_t orc_int16;
18 typedef int32_t orc_int32;
19 typedef int64_t orc_int64;
20 typedef uint8_t orc_uint8;
21 typedef uint16_t orc_uint16;
22 typedef uint32_t orc_uint32;
23 typedef uint64_t orc_uint64;
24 #define ORC_UINT64_C(x) UINT64_C(x)
25 #elif defined(_MSC_VER)
26 typedef signed __int8 orc_int8;
27 typedef signed __int16 orc_int16;
28 typedef signed __int32 orc_int32;
29 typedef signed __int64 orc_int64;
30 typedef unsigned __int8 orc_uint8;
31 typedef unsigned __int16 orc_uint16;
32 typedef unsigned __int32 orc_uint32;
33 typedef unsigned __int64 orc_uint64;
34 #define ORC_UINT64_C(x) (x##Ui64)
35 #else
36 #include <limits.h>
37 typedef signed char orc_int8;
38 typedef short orc_int16;
39 typedef int orc_int32;
40 typedef unsigned char orc_uint8;
41 typedef unsigned short orc_uint16;
42 typedef unsigned int orc_uint32;
43 #if INT_MAX == LONG_MAX
44 typedef long long orc_int64;
45 typedef unsigned long long orc_uint64;
46 #define ORC_UINT64_C(x) (x##ULL)
47 #else
48 typedef long orc_int64;
49 typedef unsigned long orc_uint64;
50 #define ORC_UINT64_C(x) (x##UL)
51 #endif
52 #endif
53 typedef union { orc_int16 i; orc_int8 x2[2]; } orc_union16;
54 typedef union { orc_int32 i; float f; orc_int16 x2[2]; orc_int8 x4[4]; } orc_union32;
55 typedef union { orc_int64 i; double f; orc_int32 x2[2]; float x2f[2]; orc_int16 x4[4]; } orc_union64;
56 #endif
57
58 void orc_add2_rshift_add_s16_22_op (int16_t * d1, const int16_t * s1, const int16_t * s2, const int16_t * s3, int n);
59 void orc_add2_rshift_add_s16_22 (int16_t * d1, const int16_t * s1, const int16_t * s2, int n);
60 void orc_add2_rshift_sub_s16_22_op (int16_t * d1, const int16_t * s1, const int16_t * s2, const int16_t * s3, int n);
61 void orc_add2_rshift_sub_s16_22 (int16_t * d1, const int16_t * s1, const int16_t * s2, int n);
62 void orc_add2_rshift_add_s16_11_op (int16_t * d1, const int16_t * s1, const int16_t * s2, const int16_t * s3, int n);
63 void orc_add2_rshift_add_s16_11 (int16_t * d1, const int16_t * s1, const int16_t * s2, int n);
64 void orc_add2_rshift_sub_s16_11_op (int16_t * d1, const int16_t * s1, const int16_t * s2, const int16_t * s3, int n);
65 void orc_add2_rshift_sub_s16_11 (int16_t * d1, const int16_t * s1, const int16_t * s2, int n);
66 void orc_add_const_rshift_s16_11 (int16_t * d1, const int16_t * s1, int n);
67 void orc_add_const_rshift_s16 (int16_t * d1, int p1, int p2, int n);
68 void orc_add_s16 (int16_t * d1, const int16_t * s1, const int16_t * s2, int n);
69 void orc_add_s16_2d (int16_t * d1, int d1_stride, const int16_t * s1, int s1_stride, int n, int m);
70 void orc_addc_rshift_s16 (int16_t * d1, const int16_t * s1, const int16_t * s2, int p1, int n);
71 void orc_lshift1_s16 (int16_t * d1, const int16_t * s1, int n);
72 void orc_lshift2_s16 (int16_t * d1, const int16_t * s1, int n);
73 void orc_lshift_s16_ip (int16_t * d1, int p1, int n);
74 void orc_mas2_add_s16_op (int16_t * d1, const int16_t * s1, const int16_t * s2, const int16_t * s3, int p1, int p2, int p3, int n);
75 void orc_mas2_add_s16_ip (int16_t * d1, const int16_t * s1, const int16_t * s2, int p1, int p2, int p3, int n);
76 void orc_mas2_sub_s16_op (int16_t * d1, const int16_t * s1, const int16_t * s2, const int16_t * s3, int p1, int p2, int p3, int n);
77 void orc_mas2_sub_s16_ip (int16_t * d1, const int16_t * s1, const int16_t * s2, int p1, int p2, int p3, int n);
78 void orc_mas4_across_add_s16_1991_op (int16_t * d1, const int16_t * s1, const int16_t * s2, const int16_t * s3, const int16_t * s4, const int16_t * s5, int p1, int p2, int n);
79 void orc_mas4_across_add_s16_1991_ip (int16_t * d1, const int16_t * s1, const int16_t * s2, const int16_t * s3, const int16_t * s4, int p1, int p2, int n);
80 void orc_mas4_across_sub_s16_1991_op (int16_t * d1, const int16_t * s1, const int16_t * s2, const int16_t * s3, const int16_t * s4, const int16_t * s5, int p1, int p2, int n);
81 void orc_mas4_across_sub_s16_1991_ip (int16_t * d1, const int16_t * s1, const int16_t * s2, const int16_t * s3, const int16_t * s4, int p1, int p2, int n);
82 void orc_subtract_s16 (int16_t * d1, const int16_t * s1, const int16_t * s2, int n);
83 void orc_add_s16_u8 (int16_t * d1, const int16_t * s1, const orc_uint8 * s2, int n);
84 void orc_add_s16_u8_2d (int16_t * d1, int d1_stride, const orc_uint8 * s1, int s1_stride, int n, int m);
85 void orc_convert_s16_u8 (orc_uint16 * d1, const orc_uint8 * s1, int n);
86 void orc_convert_u8_s16 (orc_uint8 * d1, const int16_t * s1, int n);
87 void orc_offsetconvert_u8_s16 (orc_uint8 * d1, const int16_t * s1, int n);
88 void orc_offsetconvert_s16_u8 (int16_t * d1, const orc_uint8 * s1, int n);
89 void orc_subtract_s16_u8 (int16_t * d1, const int16_t * s1, const orc_uint8 * s2, int n);
90 void orc_multiply_and_add_s16_u8 (int16_t * d1, const int16_t * s1, const orc_uint8 * s2, int n);
91 void orc_splat_s16_ns (int16_t * d1, int p1, int n);
92 void orc_splat_s16_2d_4xn (int16_t * d1, int d1_stride, int p1, int m);
93 void orc_splat_s16_2d_8xn (int16_t * d1, int d1_stride, int p1, int m);
94 void orc_splat_s16_2d (int16_t * d1, int d1_stride, int p1, int n, int m);
95 void orc_splat_u8_ns (orc_uint8 * d1, int p1, int n);
96 void orc_splat_u8_2d (orc_uint8 * d1, int d1_stride, int p1, int n, int m);
97 void orc_average_u8 (orc_uint8 * d1, const orc_uint8 * s1, const orc_uint8 * s2, int n);
98 void orc_rrshift6_add_s16_2d (uint8_t * d1, int d1_stride, const int16_t * s1, int s1_stride, const int16_t * s2, int s2_stride, int n, int m);
99 void orc_rrshift6_sub_s16_2d (int16_t * d1, int d1_stride, int16_t * d2, int d2_stride, int n, int m);
100 void orc_rrshift6_s16_ip_2d (int16_t * d1, int d1_stride, int n, int m);
101 void orc_rrshift6_s16_ip (int16_t * d1, int n);
102 void orc_unpack_yuyv_y (orc_uint8 * d1, const orc_uint16 * s1, int n);
103 void orc_unpack_yuyv_u (orc_uint8 * d1, const orc_uint32 * s1, int n);
104 void orc_unpack_yuyv_v (orc_uint8 * d1, const orc_uint32 * s1, int n);
105 void orc_packyuyv (orc_uint32 * d1, const uint8_t * s1, const orc_uint8 * s2, const orc_uint8 * s3, int n);
106 void orc_unpack_uyvy_y (orc_uint8 * d1, const orc_uint16 * s1, int n);
107 void orc_unpack_uyvy_u (orc_uint8 * d1, const orc_uint32 * s1, int n);
108 void orc_unpack_uyvy_v (orc_uint8 * d1, const orc_uint32 * s1, int n);
109 void orc_interleave2_s16 (int16_t * d1, const int16_t * s1, const int16_t * s2, int n);
110 void orc_interleave2_rrshift1_s16 (int16_t * d1, const int16_t * s1, const int16_t * s2, int n);
111 void orc_deinterleave2_s16 (int16_t * d1, int16_t * d2, const int16_t * s1, int n);
112 void orc_deinterleave2_lshift1_s16 (int16_t * d1, int16_t * d2, const int16_t * s1, int n);
113 void orc_haar_deint_lshift1_split_s16 (int16_t * d1, int16_t * d2, const int16_t * s1, int n);
114 void orc_haar_deint_split_s16 (int16_t * d1, int16_t * d2, const int16_t * s1, int n);
115 void orc_haar_split_s16_lo (int16_t * d1, const int16_t * s1, const int16_t * s2, int n);
116 void orc_haar_split_s16_hi (int16_t * d1, const int16_t * s1, const int16_t * s2, int n);
117 void orc_haar_split_s16_op (int16_t * d1, int16_t * d2, const int16_t * s1, const int16_t * s2, int n);
118 void orc_haar_split_s16 (int16_t * d1, int16_t * d2, int n);
119 void orc_haar_synth_s16_lo (int16_t * d1, const int16_t * s1, const int16_t * s2, int n);
120 void orc_haar_synth_s16_hi (int16_t * d1, const int16_t * s1, const int16_t * s2, int n);
121 void orc_haar_synth_s16_op (int16_t * d1, int16_t * d2, const int16_t * s1, const int16_t * s2, int n);
122 void orc_haar_synth_s16 (int16_t * d1, int16_t * d2, int n);
123 void orc_haar_synth_rrshift1_int_s16 (int16_t * d1, const int16_t * s1, const int16_t * s2, int n);
124 void orc_haar_synth_int_s16 (int16_t * d1, const int16_t * s1, const int16_t * s2, int n);
125 void orc_haar_sub_s16 (int16_t * d1, const int16_t * s1, int n);
126 void orc_haar_add_half_s16 (int16_t * d1, const int16_t * s1, int n);
127 void orc_haar_add_s16 (int16_t * d1, const int16_t * s1, int n);
128 void orc_haar_sub_half_s16 (int16_t * d1, const int16_t * s1, int n);
129 void orc_sum_u8 (int32_t * a1, const orc_uint8 * s1, int n);
130 void orc_sum_s16 (int32_t * a1, const int16_t * s1, int n);
131 void orc_sum_square_diff_u8 (int32_t * a1, const orc_uint8 * s1, const orc_uint8 * s2, int n);
132 void orc_dequantise_s16_2d_4xn (int16_t * d1, int d1_stride, const int16_t * s1, int s1_stride, int p1, int p2, int m);
133 void orc_dequantise_s16_2d_8xn (int16_t * d1, int d1_stride, const int16_t * s1, int s1_stride, int p1, int p2, int m);
134 void orc_dequantise_s16_ip_2d_8xn (int16_t * d1, int d1_stride, int p1, int p2, int m);
135 void orc_dequantise_s16_ip_2d (int16_t * d1, int d1_stride, int p1, int p2, int n, int m);
136 void orc_dequantise_s16_ip (int16_t * d1, int p1, int p2, int n);
137 void orc_dequantise_s16 (int16_t * d1, const int16_t * s1, int p1, int p2, int n);
138 void orc_dequantise_var_s16_ip (int16_t * d1, const int16_t * s1, const int16_t * s2, int n);
139 void orc_quantise1_s16 (int16_t * d1, const int16_t * s1, int p1, int p2, int p3, int n);
140 void orc_quantise2_s16 (int16_t * d1, const int16_t * s1, int p1, int p2, int n);
141 void orc_quantdequant1_s16 (int16_t * d1, int16_t * d2, int p1, int p2, int p3, int p4, int p5, int n);
142 void orc_quantdequant3_s16 (int16_t * d1, int16_t * d2, int p1, int p2, int p3, int p4, int p5, int p6, int n);
143 void orc_quantdequant2_s16 (int16_t * d1, int16_t * d2, int p1, int p2, int p3, int p4, int n);
144 void orc_downsample_vert_u8 (orc_uint8 * d1, const orc_uint8 * s1, const orc_uint8 * s2, const orc_uint8 * s3, const orc_uint8 * s4, int n);
145 void orc_downsample_horiz_u8 (orc_uint8 * d1, const uint8_t * s1, const uint8_t * s2, int n);
146 void orc_stats_moment_s16 (int32_t * a1, const int16_t * s1, int n);
147 void orc_stats_above_s16 (int32_t * a1, const int16_t * s1, int n);
148 void orc_accw (int * a1, const int16_t * s1, int n);
149 void orc_avg2_8xn_u8 (uint8_t * d1, int d1_stride, const uint8_t * s1, int s1_stride, const uint8_t * s2, int s2_stride, int m);
150 void orc_avg2_12xn_u8 (uint8_t * d1, int d1_stride, const uint8_t * s1, int s1_stride, const uint8_t * s2, int s2_stride, int m);
151 void orc_avg2_16xn_u8 (uint8_t * d1, int d1_stride, const uint8_t * s1, int s1_stride, const uint8_t * s2, int s2_stride, int m);
152 void orc_avg2_32xn_u8 (uint8_t * d1, int d1_stride, const uint8_t * s1, int s1_stride, const uint8_t * s2, int s2_stride, int m);
153 void orc_avg2_nxm_u8 (uint8_t * d1, int d1_stride, const uint8_t * s1, int s1_stride, const uint8_t * s2, int s2_stride, int n, int m);
154 void orc_combine4_8xn_u8 (uint8_t * d1, int d1_stride, const uint8_t * s1, int s1_stride, const uint8_t * s2, int s2_stride, const uint8_t * s3, int s3_stride, const uint8_t * s4, int s4_stride, int p1, int p2, int p3, int p4, int m);
155 void orc_combine4_12xn_u8 (uint8_t * d1, int d1_stride, const uint8_t * s1, int s1_stride, const uint8_t * s2, int s2_stride, const uint8_t * s3, int s3_stride, const uint8_t * s4, int s4_stride, int p1, int p2, int p3, int p4, int m);
156 void orc_combine4_16xn_u8 (uint8_t * d1, int d1_stride, const uint8_t * s1, int s1_stride, const uint8_t * s2, int s2_stride, const uint8_t * s3, int s3_stride, const uint8_t * s4, int s4_stride, int p1, int p2, int p3, int p4, int m);
157 void orc_combine4_24xn_u8 (uint8_t * d1, int d1_stride, const uint8_t * s1, int s1_stride, const uint8_t * s2, int s2_stride, const uint8_t * s3, int s3_stride, const uint8_t * s4, int s4_stride, int p1, int p2, int p3, int p4, int m);
158 void orc_combine4_32xn_u8 (uint8_t * d1, int d1_stride, const uint8_t * s1, int s1_stride, const uint8_t * s2, int s2_stride, const uint8_t * s3, int s3_stride, const uint8_t * s4, int s4_stride, int p1, int p2, int p3, int p4, int m);
159 void orc_combine4_nxm_u8 (uint8_t * d1, int d1_stride, const uint8_t * s1, int s1_stride, const uint8_t * s2, int s2_stride, const uint8_t * s3, int s3_stride, const uint8_t * s4, int s4_stride, int p1, int p2, int p3, int p4, int n, int m);
160 void orc_combine2_8xn_u8 (uint8_t * d1, int d1_stride, const uint8_t * s1, int s1_stride, const uint8_t * s2, int s2_stride, int p1, int p2, int p3, int p4, int m);
161 void orc_combine2_12xn_u8 (uint8_t * d1, int d1_stride, const uint8_t * s1, int s1_stride, const uint8_t * s2, int s2_stride, int p1, int p2, int p3, int p4, int m);
162 void orc_combine2_16xn_u8 (uint8_t * d1, int d1_stride, const uint8_t * s1, int s1_stride, const uint8_t * s2, int s2_stride, int p1, int p2, int p3, int p4, int m);
163 void orc_combine2_nxm_u8 (uint8_t * d1, int d1_stride, const uint8_t * s1, int s1_stride, const uint8_t * s2, int s2_stride, int p1, int p2, int p3, int p4, int n, int m);
164 void orc_sad_nxm_u8 (uint32_t * a1, const uint8_t * s1, int s1_stride, const uint8_t * s2, int s2_stride, int n, int m);
165 void orc_sad_8x8_u8 (uint32_t * a1, const uint8_t * s1, int s1_stride, const uint8_t * s2, int s2_stride);
166 void orc_sad_12x12_u8 (uint32_t * a1, const uint8_t * s1, int s1_stride, const uint8_t * s2, int s2_stride);
167 void orc_sad_16xn_u8 (uint32_t * a1, const uint8_t * s1, int s1_stride, const uint8_t * s2, int s2_stride, int m);
168 void orc_sad_32xn_u8 (uint32_t * a1, const uint8_t * s1, int s1_stride, const uint8_t * s2, int s2_stride, int m);
169 void convert_rgb_to_gray (orc_uint8 * d1, const orc_uint32 * s1, int n);
170 void canny_calc_delta_x (int32_t * d1, const uint8_t * s1, const uint8_t * s2, int n);
171 void i420_to_ayuv (orc_uint32 * d1, const orc_uint8 * s1, const orc_uint8 * s2, const orc_uint8 * s3, int p1, int n);
172 void test_4x (orc_uint32 * d1, const orc_uint32 * s1, const orc_uint32 * s2, int n);
173 void test_4x_2 (orc_uint32 * d1, const orc_uint32 * s1, int p1, int n);
174 void orc_splat_u16 (uint16_t * d1, int p1, int n);
175 void orc_splat_u32 (uint32_t * d1, int p1, int n);
176 void orc_splat_u16_2d (uint16_t * d1, int d1_stride, int p1, int n, int m);
177 void orc_splat_u32_2d (uint32_t * d1, int d1_stride, int p1, int n, int m);
178 void orc_copy_u16_2d (orc_uint16 * d1, int d1_stride, const orc_uint16 * s1, int s1_stride, int n, int m);
179 void orc_copy_u32_2d (orc_uint32 * d1, int d1_stride, const orc_uint32 * s1, int s1_stride, int n, int m);
180 void orc_composite_add_8888_8888_2d (orc_uint32 * d1, int d1_stride, const orc_uint32 * s1, int s1_stride, int n, int m);
181 void orc_composite_add_8_8_line (orc_uint8 * d1, const orc_uint8 * s1, int n);
182 void orc_composite_add_n_8_8_line (orc_uint8 * d1, const orc_uint8 * s1, int p1, int n);
183 void orc_code_combine_add_u (orc_uint32 * d1, const orc_uint32 * s1, const orc_uint32 * s2, int n);
184 void orc_code_combine_add_u_n (orc_uint32 * d1, const orc_uint32 * s1, int n);
185 void orc_code_combine_over_u (orc_uint32 * d1, const orc_uint32 * s1, const orc_uint32 * s2, int n);
186 void orc_code_combine_over_u_n (orc_uint32 * d1, const orc_uint32 * s1, int n);
187 void orc_code_combine_in_u (orc_uint32 * d1, const orc_uint32 * s1, const orc_uint32 * s2, int n);
188 void orc_code_combine_in_u_n (orc_uint32 * d1, const orc_uint32 * s1, int n);
189 void orc_code_combine_out_u (orc_uint32 * d1, const orc_uint32 * s1, const orc_uint32 * s2, int n);
190 void orc_code_combine_out_u_n (orc_uint32 * d1, const orc_uint32 * s1, int n);
191 void orc_code_combine_atop_u (orc_uint32 * d1, const orc_uint32 * s1, const orc_uint32 * s2, int n);
192 void orc_code_combine_atop_u_n (orc_uint32 * d1, const orc_uint32 * s1, int n);
193 void orc_code_combine_xor_u (orc_uint32 * d1, const orc_uint32 * s1, const orc_uint32 * s2, int n);
194 void orc_code_combine_xor_u_n (orc_uint32 * d1, const orc_uint32 * s1, int n);
195 void orc_code_combine_add_ca (orc_uint32 * d1, const orc_uint32 * s1, const orc_uint32 * s2, int n);
196 void orc_code_combine_add_ca_n (orc_uint32 * d1, const orc_uint32 * s1, int n);
197 void orc_code_combine_over_ca (orc_uint32 * d1, const orc_uint32 * s1, const orc_uint32 * s2, int n);
198 void orc_code_combine_over_ca_n (orc_uint32 * d1, const orc_uint32 * s1, int n);
199 void orc_composite_over_8888_8_8888_line (orc_uint32 * d1, const orc_uint32 * s1, const orc_uint8 * s2, int n);
200 void orc_composite_over_n_8888_8888_ca_2d (orc_uint32 * d1, const orc_uint32 * s1, int p1, int n);
201 void cogorc_resample_horiz_1tap (orc_uint8 * d1, const orc_uint8 * s1, int p1, int p2, int n);
202 void cogorc_resample_horiz_2tap (orc_uint8 * d1, const orc_uint8 * s1, int p1, int p2, int n);
203 void test_float_constant_1 (orc_uint32 * d1, int n);
204 void test_float_constant_2 (orc_uint32 * d1, int n);
205 void convert_fc32_to_int32 (orc_uint32 * d1, const orc_uint64 * s1, int n);
206 void param64 (orc_uint64 * d1, int p1, int n);
207 void const64 (orc_uint64 * d1, int n);
208 void param64_2 (orc_uint64 * d1, orc_int64 p1, int n);
209 void pa_volume_s16ne_orc_2ch (int16_t * d1, orc_int64 p1, int n);
210
211
212 /* begin Orc C target preamble */
213 #define ORC_CLAMP(x,a,b) ((x)<(a) ? (a) : ((x)>(b) ? (b) : (x)))
214 #define ORC_ABS(a) ((a)<0 ? -(a) : (a))
215 #define ORC_MIN(a,b) ((a)<(b) ? (a) : (b))
216 #define ORC_MAX(a,b) ((a)>(b) ? (a) : (b))
217 #define ORC_SB_MAX 127
218 #define ORC_SB_MIN (-1-ORC_SB_MAX)
219 #define ORC_UB_MAX 255
220 #define ORC_UB_MIN 0
221 #define ORC_SW_MAX 32767
222 #define ORC_SW_MIN (-1-ORC_SW_MAX)
223 #define ORC_UW_MAX 65535
224 #define ORC_UW_MIN 0
225 #define ORC_SL_MAX 2147483647
226 #define ORC_SL_MIN (-1-ORC_SL_MAX)
227 #define ORC_UL_MAX 4294967295U
228 #define ORC_UL_MIN 0
229 #define ORC_CLAMP_SB(x) ORC_CLAMP(x,ORC_SB_MIN,ORC_SB_MAX)
230 #define ORC_CLAMP_UB(x) ORC_CLAMP(x,ORC_UB_MIN,ORC_UB_MAX)
231 #define ORC_CLAMP_SW(x) ORC_CLAMP(x,ORC_SW_MIN,ORC_SW_MAX)
232 #define ORC_CLAMP_UW(x) ORC_CLAMP(x,ORC_UW_MIN,ORC_UW_MAX)
233 #define ORC_CLAMP_SL(x) ORC_CLAMP(x,ORC_SL_MIN,ORC_SL_MAX)
234 #define ORC_CLAMP_UL(x) ORC_CLAMP(x,ORC_UL_MIN,ORC_UL_MAX)
235 #define ORC_SWAP_W(x) ((((x)&0xff)<<8) | (((x)&0xff00)>>8))
236 #define ORC_SWAP_L(x) ((((x)&0xff)<<24) | (((x)&0xff00)<<8) | (((x)&0xff0000)>>8) | (((x)&0xff000000)>>24))
237 #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))
238 #define ORC_PTR_OFFSET(ptr,offset) ((void *)(((unsigned char *)(ptr)) + (offset)))
239 #define ORC_DENORMAL(x) ((x) & ((((x)&0x7f800000) == 0) ? 0xff800000 : 0xffffffff))
240 #define ORC_ISNAN(x) ((((x)&0x7f800000) == 0x7f800000) && (((x)&0x007fffff) != 0))
241 #define ORC_DENORMAL_DOUBLE(x) ((x) & ((((x)&ORC_UINT64_C(0x7ff0000000000000)) == 0) ? ORC_UINT64_C(0xfff0000000000000) : ORC_UINT64_C(0xffffffffffffffff)))
242 #define ORC_ISNAN_DOUBLE(x) ((((x)&ORC_UINT64_C(0x7ff0000000000000)) == ORC_UINT64_C(0x7ff0000000000000)) && (((x)&ORC_UINT64_C(0x000fffffffffffff)) != 0))
243 #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
244 #define ORC_RESTRICT restrict
245 #elif defined(__GNUC__) && __GNUC__ >= 4
246 #define ORC_RESTRICT __restrict__
247 #else
248 #define ORC_RESTRICT
249 #endif
250 /* end Orc C target preamble */
251
252
253
254 /* orc_add2_rshift_add_s16_22_op */
255 #ifdef DISABLE_ORC
256 void
257 orc_add2_rshift_add_s16_22_op (int16_t * d1, const int16_t * s1, const int16_t * s2, const int16_t * s3, int n){
258   int i;
259   orc_union16 * ORC_RESTRICT ptr0;
260   const orc_union16 * ORC_RESTRICT ptr4;
261   const orc_union16 * ORC_RESTRICT ptr5;
262   const orc_union16 * ORC_RESTRICT ptr6;
263   orc_union16 var33;
264   orc_union16 var34;
265   orc_union16 var35;
266   orc_union16 var36;
267   orc_union16 var37;
268   orc_union16 var38;
269   orc_union16 var39;
270   orc_union16 var40;
271
272   ptr0 = (orc_union16 *)d1;
273   ptr4 = (orc_union16 *)s1;
274   ptr5 = (orc_union16 *)s2;
275   ptr6 = (orc_union16 *)s3;
276
277     /* 3: loadpw */
278     var35.i = 0x00000002; /* 2 or 9.88131e-324f */
279
280   for (i = 0; i < n; i++) {
281     /* 0: loadw */
282     var33 = ptr5[i];
283     /* 1: loadw */
284     var34 = ptr6[i];
285     /* 2: addw */
286     var38.i = var33.i + var34.i;
287     /* 4: addw */
288     var39.i = var38.i + var35.i;
289     /* 5: shrsw */
290     var40.i = var39.i >> 2;
291     /* 6: loadw */
292     var36 = ptr4[i];
293     /* 7: addw */
294     var37.i = var36.i + var40.i;
295     /* 8: storew */
296     ptr0[i] = var37;
297   }
298
299 }
300
301 #else
302 static void
303 _backup_orc_add2_rshift_add_s16_22_op (OrcExecutor * ORC_RESTRICT ex)
304 {
305   int i;
306   int n = ex->n;
307   orc_union16 * ORC_RESTRICT ptr0;
308   const orc_union16 * ORC_RESTRICT ptr4;
309   const orc_union16 * ORC_RESTRICT ptr5;
310   const orc_union16 * ORC_RESTRICT ptr6;
311   orc_union16 var33;
312   orc_union16 var34;
313   orc_union16 var35;
314   orc_union16 var36;
315   orc_union16 var37;
316   orc_union16 var38;
317   orc_union16 var39;
318   orc_union16 var40;
319
320   ptr0 = (orc_union16 *)ex->arrays[0];
321   ptr4 = (orc_union16 *)ex->arrays[4];
322   ptr5 = (orc_union16 *)ex->arrays[5];
323   ptr6 = (orc_union16 *)ex->arrays[6];
324
325     /* 3: loadpw */
326     var35.i = 0x00000002; /* 2 or 9.88131e-324f */
327
328   for (i = 0; i < n; i++) {
329     /* 0: loadw */
330     var33 = ptr5[i];
331     /* 1: loadw */
332     var34 = ptr6[i];
333     /* 2: addw */
334     var38.i = var33.i + var34.i;
335     /* 4: addw */
336     var39.i = var38.i + var35.i;
337     /* 5: shrsw */
338     var40.i = var39.i >> 2;
339     /* 6: loadw */
340     var36 = ptr4[i];
341     /* 7: addw */
342     var37.i = var36.i + var40.i;
343     /* 8: storew */
344     ptr0[i] = var37;
345   }
346
347 }
348
349 void
350 orc_add2_rshift_add_s16_22_op (int16_t * d1, const int16_t * s1, const int16_t * s2, const int16_t * s3, int n)
351 {
352   OrcExecutor _ex, *ex = &_ex;
353   static int p_inited = 0;
354   static OrcProgram *p = 0;
355   void (*func) (OrcExecutor *);
356
357   if (!p_inited) {
358     orc_once_mutex_lock ();
359     if (!p_inited) {
360       OrcCompileResult result;
361
362       p = orc_program_new ();
363       orc_program_set_name (p, "orc_add2_rshift_add_s16_22_op");
364       orc_program_set_backup_function (p, _backup_orc_add2_rshift_add_s16_22_op);
365       orc_program_add_destination (p, 2, "d1");
366       orc_program_add_source (p, 2, "s1");
367       orc_program_add_source (p, 2, "s2");
368       orc_program_add_source (p, 2, "s3");
369       orc_program_add_constant (p, 4, 0x00000002, "c1");
370       orc_program_add_temporary (p, 2, "t1");
371
372       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S3, ORC_VAR_D1);
373       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
374       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
375       orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_T1, ORC_VAR_D1);
376
377       result = orc_program_compile (p);
378     }
379     p_inited = TRUE;
380     orc_once_mutex_unlock ();
381   }
382   ex->program = p;
383
384   ex->n = n;
385   ex->arrays[ORC_VAR_D1] = d1;
386   ex->arrays[ORC_VAR_S1] = (void *)s1;
387   ex->arrays[ORC_VAR_S2] = (void *)s2;
388   ex->arrays[ORC_VAR_S3] = (void *)s3;
389
390   func = p->code_exec;
391   func (ex);
392 }
393 #endif
394
395
396 /* orc_add2_rshift_add_s16_22 */
397 #ifdef DISABLE_ORC
398 void
399 orc_add2_rshift_add_s16_22 (int16_t * d1, const int16_t * s1, const int16_t * s2, int n){
400   int i;
401   orc_union16 * ORC_RESTRICT ptr0;
402   const orc_union16 * ORC_RESTRICT ptr4;
403   const orc_union16 * ORC_RESTRICT ptr5;
404   orc_union16 var33;
405   orc_union16 var34;
406   orc_union16 var35;
407   orc_union16 var36;
408   orc_union16 var37;
409   orc_union16 var38;
410   orc_union16 var39;
411   orc_union16 var40;
412
413   ptr0 = (orc_union16 *)d1;
414   ptr4 = (orc_union16 *)s1;
415   ptr5 = (orc_union16 *)s2;
416
417     /* 3: loadpw */
418     var35.i = 0x00000002; /* 2 or 9.88131e-324f */
419
420   for (i = 0; i < n; i++) {
421     /* 0: loadw */
422     var33 = ptr4[i];
423     /* 1: loadw */
424     var34 = ptr5[i];
425     /* 2: addw */
426     var38.i = var33.i + var34.i;
427     /* 4: addw */
428     var39.i = var38.i + var35.i;
429     /* 5: shrsw */
430     var40.i = var39.i >> 2;
431     /* 6: loadw */
432     var36 = ptr0[i];
433     /* 7: addw */
434     var37.i = var36.i + var40.i;
435     /* 8: storew */
436     ptr0[i] = var37;
437   }
438
439 }
440
441 #else
442 static void
443 _backup_orc_add2_rshift_add_s16_22 (OrcExecutor * ORC_RESTRICT ex)
444 {
445   int i;
446   int n = ex->n;
447   orc_union16 * ORC_RESTRICT ptr0;
448   const orc_union16 * ORC_RESTRICT ptr4;
449   const orc_union16 * ORC_RESTRICT ptr5;
450   orc_union16 var33;
451   orc_union16 var34;
452   orc_union16 var35;
453   orc_union16 var36;
454   orc_union16 var37;
455   orc_union16 var38;
456   orc_union16 var39;
457   orc_union16 var40;
458
459   ptr0 = (orc_union16 *)ex->arrays[0];
460   ptr4 = (orc_union16 *)ex->arrays[4];
461   ptr5 = (orc_union16 *)ex->arrays[5];
462
463     /* 3: loadpw */
464     var35.i = 0x00000002; /* 2 or 9.88131e-324f */
465
466   for (i = 0; i < n; i++) {
467     /* 0: loadw */
468     var33 = ptr4[i];
469     /* 1: loadw */
470     var34 = ptr5[i];
471     /* 2: addw */
472     var38.i = var33.i + var34.i;
473     /* 4: addw */
474     var39.i = var38.i + var35.i;
475     /* 5: shrsw */
476     var40.i = var39.i >> 2;
477     /* 6: loadw */
478     var36 = ptr0[i];
479     /* 7: addw */
480     var37.i = var36.i + var40.i;
481     /* 8: storew */
482     ptr0[i] = var37;
483   }
484
485 }
486
487 void
488 orc_add2_rshift_add_s16_22 (int16_t * d1, const int16_t * s1, const int16_t * s2, int n)
489 {
490   OrcExecutor _ex, *ex = &_ex;
491   static int p_inited = 0;
492   static OrcProgram *p = 0;
493   void (*func) (OrcExecutor *);
494
495   if (!p_inited) {
496     orc_once_mutex_lock ();
497     if (!p_inited) {
498       OrcCompileResult result;
499
500       p = orc_program_new ();
501       orc_program_set_name (p, "orc_add2_rshift_add_s16_22");
502       orc_program_set_backup_function (p, _backup_orc_add2_rshift_add_s16_22);
503       orc_program_add_destination (p, 2, "d1");
504       orc_program_add_source (p, 2, "s1");
505       orc_program_add_source (p, 2, "s2");
506       orc_program_add_constant (p, 4, 0x00000002, "c1");
507       orc_program_add_temporary (p, 2, "t1");
508
509       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_S2, ORC_VAR_D1);
510       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
511       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
512       orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1);
513
514       result = orc_program_compile (p);
515     }
516     p_inited = TRUE;
517     orc_once_mutex_unlock ();
518   }
519   ex->program = p;
520
521   ex->n = n;
522   ex->arrays[ORC_VAR_D1] = d1;
523   ex->arrays[ORC_VAR_S1] = (void *)s1;
524   ex->arrays[ORC_VAR_S2] = (void *)s2;
525
526   func = p->code_exec;
527   func (ex);
528 }
529 #endif
530
531
532 /* orc_add2_rshift_sub_s16_22_op */
533 #ifdef DISABLE_ORC
534 void
535 orc_add2_rshift_sub_s16_22_op (int16_t * d1, const int16_t * s1, const int16_t * s2, const int16_t * s3, int n){
536   int i;
537   orc_union16 * ORC_RESTRICT ptr0;
538   const orc_union16 * ORC_RESTRICT ptr4;
539   const orc_union16 * ORC_RESTRICT ptr5;
540   const orc_union16 * ORC_RESTRICT ptr6;
541   orc_union16 var33;
542   orc_union16 var34;
543   orc_union16 var35;
544   orc_union16 var36;
545   orc_union16 var37;
546   orc_union16 var38;
547   orc_union16 var39;
548   orc_union16 var40;
549
550   ptr0 = (orc_union16 *)d1;
551   ptr4 = (orc_union16 *)s1;
552   ptr5 = (orc_union16 *)s2;
553   ptr6 = (orc_union16 *)s3;
554
555     /* 3: loadpw */
556     var35.i = 0x00000002; /* 2 or 9.88131e-324f */
557
558   for (i = 0; i < n; i++) {
559     /* 0: loadw */
560     var33 = ptr5[i];
561     /* 1: loadw */
562     var34 = ptr6[i];
563     /* 2: addw */
564     var38.i = var33.i + var34.i;
565     /* 4: addw */
566     var39.i = var38.i + var35.i;
567     /* 5: shrsw */
568     var40.i = var39.i >> 2;
569     /* 6: loadw */
570     var36 = ptr4[i];
571     /* 7: subw */
572     var37.i = var36.i - var40.i;
573     /* 8: storew */
574     ptr0[i] = var37;
575   }
576
577 }
578
579 #else
580 static void
581 _backup_orc_add2_rshift_sub_s16_22_op (OrcExecutor * ORC_RESTRICT ex)
582 {
583   int i;
584   int n = ex->n;
585   orc_union16 * ORC_RESTRICT ptr0;
586   const orc_union16 * ORC_RESTRICT ptr4;
587   const orc_union16 * ORC_RESTRICT ptr5;
588   const orc_union16 * ORC_RESTRICT ptr6;
589   orc_union16 var33;
590   orc_union16 var34;
591   orc_union16 var35;
592   orc_union16 var36;
593   orc_union16 var37;
594   orc_union16 var38;
595   orc_union16 var39;
596   orc_union16 var40;
597
598   ptr0 = (orc_union16 *)ex->arrays[0];
599   ptr4 = (orc_union16 *)ex->arrays[4];
600   ptr5 = (orc_union16 *)ex->arrays[5];
601   ptr6 = (orc_union16 *)ex->arrays[6];
602
603     /* 3: loadpw */
604     var35.i = 0x00000002; /* 2 or 9.88131e-324f */
605
606   for (i = 0; i < n; i++) {
607     /* 0: loadw */
608     var33 = ptr5[i];
609     /* 1: loadw */
610     var34 = ptr6[i];
611     /* 2: addw */
612     var38.i = var33.i + var34.i;
613     /* 4: addw */
614     var39.i = var38.i + var35.i;
615     /* 5: shrsw */
616     var40.i = var39.i >> 2;
617     /* 6: loadw */
618     var36 = ptr4[i];
619     /* 7: subw */
620     var37.i = var36.i - var40.i;
621     /* 8: storew */
622     ptr0[i] = var37;
623   }
624
625 }
626
627 void
628 orc_add2_rshift_sub_s16_22_op (int16_t * d1, const int16_t * s1, const int16_t * s2, const int16_t * s3, int n)
629 {
630   OrcExecutor _ex, *ex = &_ex;
631   static int p_inited = 0;
632   static OrcProgram *p = 0;
633   void (*func) (OrcExecutor *);
634
635   if (!p_inited) {
636     orc_once_mutex_lock ();
637     if (!p_inited) {
638       OrcCompileResult result;
639
640       p = orc_program_new ();
641       orc_program_set_name (p, "orc_add2_rshift_sub_s16_22_op");
642       orc_program_set_backup_function (p, _backup_orc_add2_rshift_sub_s16_22_op);
643       orc_program_add_destination (p, 2, "d1");
644       orc_program_add_source (p, 2, "s1");
645       orc_program_add_source (p, 2, "s2");
646       orc_program_add_source (p, 2, "s3");
647       orc_program_add_constant (p, 4, 0x00000002, "c1");
648       orc_program_add_temporary (p, 2, "t1");
649
650       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S3, ORC_VAR_D1);
651       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
652       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
653       orc_program_append_2 (p, "subw", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_T1, ORC_VAR_D1);
654
655       result = orc_program_compile (p);
656     }
657     p_inited = TRUE;
658     orc_once_mutex_unlock ();
659   }
660   ex->program = p;
661
662   ex->n = n;
663   ex->arrays[ORC_VAR_D1] = d1;
664   ex->arrays[ORC_VAR_S1] = (void *)s1;
665   ex->arrays[ORC_VAR_S2] = (void *)s2;
666   ex->arrays[ORC_VAR_S3] = (void *)s3;
667
668   func = p->code_exec;
669   func (ex);
670 }
671 #endif
672
673
674 /* orc_add2_rshift_sub_s16_22 */
675 #ifdef DISABLE_ORC
676 void
677 orc_add2_rshift_sub_s16_22 (int16_t * d1, const int16_t * s1, const int16_t * s2, int n){
678   int i;
679   orc_union16 * ORC_RESTRICT ptr0;
680   const orc_union16 * ORC_RESTRICT ptr4;
681   const orc_union16 * ORC_RESTRICT ptr5;
682   orc_union16 var33;
683   orc_union16 var34;
684   orc_union16 var35;
685   orc_union16 var36;
686   orc_union16 var37;
687   orc_union16 var38;
688   orc_union16 var39;
689   orc_union16 var40;
690
691   ptr0 = (orc_union16 *)d1;
692   ptr4 = (orc_union16 *)s1;
693   ptr5 = (orc_union16 *)s2;
694
695     /* 3: loadpw */
696     var35.i = 0x00000002; /* 2 or 9.88131e-324f */
697
698   for (i = 0; i < n; i++) {
699     /* 0: loadw */
700     var33 = ptr4[i];
701     /* 1: loadw */
702     var34 = ptr5[i];
703     /* 2: addw */
704     var38.i = var33.i + var34.i;
705     /* 4: addw */
706     var39.i = var38.i + var35.i;
707     /* 5: shrsw */
708     var40.i = var39.i >> 2;
709     /* 6: loadw */
710     var36 = ptr0[i];
711     /* 7: subw */
712     var37.i = var36.i - var40.i;
713     /* 8: storew */
714     ptr0[i] = var37;
715   }
716
717 }
718
719 #else
720 static void
721 _backup_orc_add2_rshift_sub_s16_22 (OrcExecutor * ORC_RESTRICT ex)
722 {
723   int i;
724   int n = ex->n;
725   orc_union16 * ORC_RESTRICT ptr0;
726   const orc_union16 * ORC_RESTRICT ptr4;
727   const orc_union16 * ORC_RESTRICT ptr5;
728   orc_union16 var33;
729   orc_union16 var34;
730   orc_union16 var35;
731   orc_union16 var36;
732   orc_union16 var37;
733   orc_union16 var38;
734   orc_union16 var39;
735   orc_union16 var40;
736
737   ptr0 = (orc_union16 *)ex->arrays[0];
738   ptr4 = (orc_union16 *)ex->arrays[4];
739   ptr5 = (orc_union16 *)ex->arrays[5];
740
741     /* 3: loadpw */
742     var35.i = 0x00000002; /* 2 or 9.88131e-324f */
743
744   for (i = 0; i < n; i++) {
745     /* 0: loadw */
746     var33 = ptr4[i];
747     /* 1: loadw */
748     var34 = ptr5[i];
749     /* 2: addw */
750     var38.i = var33.i + var34.i;
751     /* 4: addw */
752     var39.i = var38.i + var35.i;
753     /* 5: shrsw */
754     var40.i = var39.i >> 2;
755     /* 6: loadw */
756     var36 = ptr0[i];
757     /* 7: subw */
758     var37.i = var36.i - var40.i;
759     /* 8: storew */
760     ptr0[i] = var37;
761   }
762
763 }
764
765 void
766 orc_add2_rshift_sub_s16_22 (int16_t * d1, const int16_t * s1, const int16_t * s2, int n)
767 {
768   OrcExecutor _ex, *ex = &_ex;
769   static int p_inited = 0;
770   static OrcProgram *p = 0;
771   void (*func) (OrcExecutor *);
772
773   if (!p_inited) {
774     orc_once_mutex_lock ();
775     if (!p_inited) {
776       OrcCompileResult result;
777
778       p = orc_program_new ();
779       orc_program_set_name (p, "orc_add2_rshift_sub_s16_22");
780       orc_program_set_backup_function (p, _backup_orc_add2_rshift_sub_s16_22);
781       orc_program_add_destination (p, 2, "d1");
782       orc_program_add_source (p, 2, "s1");
783       orc_program_add_source (p, 2, "s2");
784       orc_program_add_constant (p, 4, 0x00000002, "c1");
785       orc_program_add_temporary (p, 2, "t1");
786
787       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_S2, ORC_VAR_D1);
788       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
789       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
790       orc_program_append_2 (p, "subw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1);
791
792       result = orc_program_compile (p);
793     }
794     p_inited = TRUE;
795     orc_once_mutex_unlock ();
796   }
797   ex->program = p;
798
799   ex->n = n;
800   ex->arrays[ORC_VAR_D1] = d1;
801   ex->arrays[ORC_VAR_S1] = (void *)s1;
802   ex->arrays[ORC_VAR_S2] = (void *)s2;
803
804   func = p->code_exec;
805   func (ex);
806 }
807 #endif
808
809
810 /* orc_add2_rshift_add_s16_11_op */
811 #ifdef DISABLE_ORC
812 void
813 orc_add2_rshift_add_s16_11_op (int16_t * d1, const int16_t * s1, const int16_t * s2, const int16_t * s3, int n){
814   int i;
815   orc_union16 * ORC_RESTRICT ptr0;
816   const orc_union16 * ORC_RESTRICT ptr4;
817   const orc_union16 * ORC_RESTRICT ptr5;
818   const orc_union16 * ORC_RESTRICT ptr6;
819   orc_union16 var33;
820   orc_union16 var34;
821   orc_union16 var35;
822   orc_union16 var36;
823   orc_union16 var37;
824
825   ptr0 = (orc_union16 *)d1;
826   ptr4 = (orc_union16 *)s1;
827   ptr5 = (orc_union16 *)s2;
828   ptr6 = (orc_union16 *)s3;
829
830
831   for (i = 0; i < n; i++) {
832     /* 0: loadw */
833     var33 = ptr5[i];
834     /* 1: loadw */
835     var34 = ptr6[i];
836     /* 2: avgsw */
837     var37.i = (var33.i + var34.i + 1)>>1;
838     /* 3: loadw */
839     var35 = ptr4[i];
840     /* 4: addw */
841     var36.i = var35.i + var37.i;
842     /* 5: storew */
843     ptr0[i] = var36;
844   }
845
846 }
847
848 #else
849 static void
850 _backup_orc_add2_rshift_add_s16_11_op (OrcExecutor * ORC_RESTRICT ex)
851 {
852   int i;
853   int n = ex->n;
854   orc_union16 * ORC_RESTRICT ptr0;
855   const orc_union16 * ORC_RESTRICT ptr4;
856   const orc_union16 * ORC_RESTRICT ptr5;
857   const orc_union16 * ORC_RESTRICT ptr6;
858   orc_union16 var33;
859   orc_union16 var34;
860   orc_union16 var35;
861   orc_union16 var36;
862   orc_union16 var37;
863
864   ptr0 = (orc_union16 *)ex->arrays[0];
865   ptr4 = (orc_union16 *)ex->arrays[4];
866   ptr5 = (orc_union16 *)ex->arrays[5];
867   ptr6 = (orc_union16 *)ex->arrays[6];
868
869
870   for (i = 0; i < n; i++) {
871     /* 0: loadw */
872     var33 = ptr5[i];
873     /* 1: loadw */
874     var34 = ptr6[i];
875     /* 2: avgsw */
876     var37.i = (var33.i + var34.i + 1)>>1;
877     /* 3: loadw */
878     var35 = ptr4[i];
879     /* 4: addw */
880     var36.i = var35.i + var37.i;
881     /* 5: storew */
882     ptr0[i] = var36;
883   }
884
885 }
886
887 void
888 orc_add2_rshift_add_s16_11_op (int16_t * d1, const int16_t * s1, const int16_t * s2, const int16_t * s3, int n)
889 {
890   OrcExecutor _ex, *ex = &_ex;
891   static int p_inited = 0;
892   static OrcProgram *p = 0;
893   void (*func) (OrcExecutor *);
894
895   if (!p_inited) {
896     orc_once_mutex_lock ();
897     if (!p_inited) {
898       OrcCompileResult result;
899
900       p = orc_program_new ();
901       orc_program_set_name (p, "orc_add2_rshift_add_s16_11_op");
902       orc_program_set_backup_function (p, _backup_orc_add2_rshift_add_s16_11_op);
903       orc_program_add_destination (p, 2, "d1");
904       orc_program_add_source (p, 2, "s1");
905       orc_program_add_source (p, 2, "s2");
906       orc_program_add_source (p, 2, "s3");
907       orc_program_add_temporary (p, 2, "t1");
908
909       orc_program_append_2 (p, "avgsw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S3, ORC_VAR_D1);
910       orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_T1, ORC_VAR_D1);
911
912       result = orc_program_compile (p);
913     }
914     p_inited = TRUE;
915     orc_once_mutex_unlock ();
916   }
917   ex->program = p;
918
919   ex->n = n;
920   ex->arrays[ORC_VAR_D1] = d1;
921   ex->arrays[ORC_VAR_S1] = (void *)s1;
922   ex->arrays[ORC_VAR_S2] = (void *)s2;
923   ex->arrays[ORC_VAR_S3] = (void *)s3;
924
925   func = p->code_exec;
926   func (ex);
927 }
928 #endif
929
930
931 /* orc_add2_rshift_add_s16_11 */
932 #ifdef DISABLE_ORC
933 void
934 orc_add2_rshift_add_s16_11 (int16_t * d1, const int16_t * s1, const int16_t * s2, int n){
935   int i;
936   orc_union16 * ORC_RESTRICT ptr0;
937   const orc_union16 * ORC_RESTRICT ptr4;
938   const orc_union16 * ORC_RESTRICT ptr5;
939   orc_union16 var33;
940   orc_union16 var34;
941   orc_union16 var35;
942   orc_union16 var36;
943   orc_union16 var37;
944
945   ptr0 = (orc_union16 *)d1;
946   ptr4 = (orc_union16 *)s1;
947   ptr5 = (orc_union16 *)s2;
948
949
950   for (i = 0; i < n; i++) {
951     /* 0: loadw */
952     var33 = ptr4[i];
953     /* 1: loadw */
954     var34 = ptr5[i];
955     /* 2: avgsw */
956     var37.i = (var33.i + var34.i + 1)>>1;
957     /* 3: loadw */
958     var35 = ptr0[i];
959     /* 4: addw */
960     var36.i = var35.i + var37.i;
961     /* 5: storew */
962     ptr0[i] = var36;
963   }
964
965 }
966
967 #else
968 static void
969 _backup_orc_add2_rshift_add_s16_11 (OrcExecutor * ORC_RESTRICT ex)
970 {
971   int i;
972   int n = ex->n;
973   orc_union16 * ORC_RESTRICT ptr0;
974   const orc_union16 * ORC_RESTRICT ptr4;
975   const orc_union16 * ORC_RESTRICT ptr5;
976   orc_union16 var33;
977   orc_union16 var34;
978   orc_union16 var35;
979   orc_union16 var36;
980   orc_union16 var37;
981
982   ptr0 = (orc_union16 *)ex->arrays[0];
983   ptr4 = (orc_union16 *)ex->arrays[4];
984   ptr5 = (orc_union16 *)ex->arrays[5];
985
986
987   for (i = 0; i < n; i++) {
988     /* 0: loadw */
989     var33 = ptr4[i];
990     /* 1: loadw */
991     var34 = ptr5[i];
992     /* 2: avgsw */
993     var37.i = (var33.i + var34.i + 1)>>1;
994     /* 3: loadw */
995     var35 = ptr0[i];
996     /* 4: addw */
997     var36.i = var35.i + var37.i;
998     /* 5: storew */
999     ptr0[i] = var36;
1000   }
1001
1002 }
1003
1004 void
1005 orc_add2_rshift_add_s16_11 (int16_t * d1, const int16_t * s1, const int16_t * s2, int n)
1006 {
1007   OrcExecutor _ex, *ex = &_ex;
1008   static int p_inited = 0;
1009   static OrcProgram *p = 0;
1010   void (*func) (OrcExecutor *);
1011
1012   if (!p_inited) {
1013     orc_once_mutex_lock ();
1014     if (!p_inited) {
1015       OrcCompileResult result;
1016
1017       p = orc_program_new ();
1018       orc_program_set_name (p, "orc_add2_rshift_add_s16_11");
1019       orc_program_set_backup_function (p, _backup_orc_add2_rshift_add_s16_11);
1020       orc_program_add_destination (p, 2, "d1");
1021       orc_program_add_source (p, 2, "s1");
1022       orc_program_add_source (p, 2, "s2");
1023       orc_program_add_temporary (p, 2, "t1");
1024
1025       orc_program_append_2 (p, "avgsw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_S2, ORC_VAR_D1);
1026       orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1);
1027
1028       result = orc_program_compile (p);
1029     }
1030     p_inited = TRUE;
1031     orc_once_mutex_unlock ();
1032   }
1033   ex->program = p;
1034
1035   ex->n = n;
1036   ex->arrays[ORC_VAR_D1] = d1;
1037   ex->arrays[ORC_VAR_S1] = (void *)s1;
1038   ex->arrays[ORC_VAR_S2] = (void *)s2;
1039
1040   func = p->code_exec;
1041   func (ex);
1042 }
1043 #endif
1044
1045
1046 /* orc_add2_rshift_sub_s16_11_op */
1047 #ifdef DISABLE_ORC
1048 void
1049 orc_add2_rshift_sub_s16_11_op (int16_t * d1, const int16_t * s1, const int16_t * s2, const int16_t * s3, int n){
1050   int i;
1051   orc_union16 * ORC_RESTRICT ptr0;
1052   const orc_union16 * ORC_RESTRICT ptr4;
1053   const orc_union16 * ORC_RESTRICT ptr5;
1054   const orc_union16 * ORC_RESTRICT ptr6;
1055   orc_union16 var33;
1056   orc_union16 var34;
1057   orc_union16 var35;
1058   orc_union16 var36;
1059   orc_union16 var37;
1060
1061   ptr0 = (orc_union16 *)d1;
1062   ptr4 = (orc_union16 *)s1;
1063   ptr5 = (orc_union16 *)s2;
1064   ptr6 = (orc_union16 *)s3;
1065
1066
1067   for (i = 0; i < n; i++) {
1068     /* 0: loadw */
1069     var33 = ptr5[i];
1070     /* 1: loadw */
1071     var34 = ptr6[i];
1072     /* 2: avgsw */
1073     var37.i = (var33.i + var34.i + 1)>>1;
1074     /* 3: loadw */
1075     var35 = ptr4[i];
1076     /* 4: subw */
1077     var36.i = var35.i - var37.i;
1078     /* 5: storew */
1079     ptr0[i] = var36;
1080   }
1081
1082 }
1083
1084 #else
1085 static void
1086 _backup_orc_add2_rshift_sub_s16_11_op (OrcExecutor * ORC_RESTRICT ex)
1087 {
1088   int i;
1089   int n = ex->n;
1090   orc_union16 * ORC_RESTRICT ptr0;
1091   const orc_union16 * ORC_RESTRICT ptr4;
1092   const orc_union16 * ORC_RESTRICT ptr5;
1093   const orc_union16 * ORC_RESTRICT ptr6;
1094   orc_union16 var33;
1095   orc_union16 var34;
1096   orc_union16 var35;
1097   orc_union16 var36;
1098   orc_union16 var37;
1099
1100   ptr0 = (orc_union16 *)ex->arrays[0];
1101   ptr4 = (orc_union16 *)ex->arrays[4];
1102   ptr5 = (orc_union16 *)ex->arrays[5];
1103   ptr6 = (orc_union16 *)ex->arrays[6];
1104
1105
1106   for (i = 0; i < n; i++) {
1107     /* 0: loadw */
1108     var33 = ptr5[i];
1109     /* 1: loadw */
1110     var34 = ptr6[i];
1111     /* 2: avgsw */
1112     var37.i = (var33.i + var34.i + 1)>>1;
1113     /* 3: loadw */
1114     var35 = ptr4[i];
1115     /* 4: subw */
1116     var36.i = var35.i - var37.i;
1117     /* 5: storew */
1118     ptr0[i] = var36;
1119   }
1120
1121 }
1122
1123 void
1124 orc_add2_rshift_sub_s16_11_op (int16_t * d1, const int16_t * s1, const int16_t * s2, const int16_t * s3, int n)
1125 {
1126   OrcExecutor _ex, *ex = &_ex;
1127   static int p_inited = 0;
1128   static OrcProgram *p = 0;
1129   void (*func) (OrcExecutor *);
1130
1131   if (!p_inited) {
1132     orc_once_mutex_lock ();
1133     if (!p_inited) {
1134       OrcCompileResult result;
1135
1136       p = orc_program_new ();
1137       orc_program_set_name (p, "orc_add2_rshift_sub_s16_11_op");
1138       orc_program_set_backup_function (p, _backup_orc_add2_rshift_sub_s16_11_op);
1139       orc_program_add_destination (p, 2, "d1");
1140       orc_program_add_source (p, 2, "s1");
1141       orc_program_add_source (p, 2, "s2");
1142       orc_program_add_source (p, 2, "s3");
1143       orc_program_add_temporary (p, 2, "t1");
1144
1145       orc_program_append_2 (p, "avgsw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S3, ORC_VAR_D1);
1146       orc_program_append_2 (p, "subw", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_T1, ORC_VAR_D1);
1147
1148       result = orc_program_compile (p);
1149     }
1150     p_inited = TRUE;
1151     orc_once_mutex_unlock ();
1152   }
1153   ex->program = p;
1154
1155   ex->n = n;
1156   ex->arrays[ORC_VAR_D1] = d1;
1157   ex->arrays[ORC_VAR_S1] = (void *)s1;
1158   ex->arrays[ORC_VAR_S2] = (void *)s2;
1159   ex->arrays[ORC_VAR_S3] = (void *)s3;
1160
1161   func = p->code_exec;
1162   func (ex);
1163 }
1164 #endif
1165
1166
1167 /* orc_add2_rshift_sub_s16_11 */
1168 #ifdef DISABLE_ORC
1169 void
1170 orc_add2_rshift_sub_s16_11 (int16_t * d1, const int16_t * s1, const int16_t * s2, int n){
1171   int i;
1172   orc_union16 * ORC_RESTRICT ptr0;
1173   const orc_union16 * ORC_RESTRICT ptr4;
1174   const orc_union16 * ORC_RESTRICT ptr5;
1175   orc_union16 var33;
1176   orc_union16 var34;
1177   orc_union16 var35;
1178   orc_union16 var36;
1179   orc_union16 var37;
1180
1181   ptr0 = (orc_union16 *)d1;
1182   ptr4 = (orc_union16 *)s1;
1183   ptr5 = (orc_union16 *)s2;
1184
1185
1186   for (i = 0; i < n; i++) {
1187     /* 0: loadw */
1188     var33 = ptr4[i];
1189     /* 1: loadw */
1190     var34 = ptr5[i];
1191     /* 2: avgsw */
1192     var37.i = (var33.i + var34.i + 1)>>1;
1193     /* 3: loadw */
1194     var35 = ptr0[i];
1195     /* 4: subw */
1196     var36.i = var35.i - var37.i;
1197     /* 5: storew */
1198     ptr0[i] = var36;
1199   }
1200
1201 }
1202
1203 #else
1204 static void
1205 _backup_orc_add2_rshift_sub_s16_11 (OrcExecutor * ORC_RESTRICT ex)
1206 {
1207   int i;
1208   int n = ex->n;
1209   orc_union16 * ORC_RESTRICT ptr0;
1210   const orc_union16 * ORC_RESTRICT ptr4;
1211   const orc_union16 * ORC_RESTRICT ptr5;
1212   orc_union16 var33;
1213   orc_union16 var34;
1214   orc_union16 var35;
1215   orc_union16 var36;
1216   orc_union16 var37;
1217
1218   ptr0 = (orc_union16 *)ex->arrays[0];
1219   ptr4 = (orc_union16 *)ex->arrays[4];
1220   ptr5 = (orc_union16 *)ex->arrays[5];
1221
1222
1223   for (i = 0; i < n; i++) {
1224     /* 0: loadw */
1225     var33 = ptr4[i];
1226     /* 1: loadw */
1227     var34 = ptr5[i];
1228     /* 2: avgsw */
1229     var37.i = (var33.i + var34.i + 1)>>1;
1230     /* 3: loadw */
1231     var35 = ptr0[i];
1232     /* 4: subw */
1233     var36.i = var35.i - var37.i;
1234     /* 5: storew */
1235     ptr0[i] = var36;
1236   }
1237
1238 }
1239
1240 void
1241 orc_add2_rshift_sub_s16_11 (int16_t * d1, const int16_t * s1, const int16_t * s2, int n)
1242 {
1243   OrcExecutor _ex, *ex = &_ex;
1244   static int p_inited = 0;
1245   static OrcProgram *p = 0;
1246   void (*func) (OrcExecutor *);
1247
1248   if (!p_inited) {
1249     orc_once_mutex_lock ();
1250     if (!p_inited) {
1251       OrcCompileResult result;
1252
1253       p = orc_program_new ();
1254       orc_program_set_name (p, "orc_add2_rshift_sub_s16_11");
1255       orc_program_set_backup_function (p, _backup_orc_add2_rshift_sub_s16_11);
1256       orc_program_add_destination (p, 2, "d1");
1257       orc_program_add_source (p, 2, "s1");
1258       orc_program_add_source (p, 2, "s2");
1259       orc_program_add_temporary (p, 2, "t1");
1260
1261       orc_program_append_2 (p, "avgsw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_S2, ORC_VAR_D1);
1262       orc_program_append_2 (p, "subw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1);
1263
1264       result = orc_program_compile (p);
1265     }
1266     p_inited = TRUE;
1267     orc_once_mutex_unlock ();
1268   }
1269   ex->program = p;
1270
1271   ex->n = n;
1272   ex->arrays[ORC_VAR_D1] = d1;
1273   ex->arrays[ORC_VAR_S1] = (void *)s1;
1274   ex->arrays[ORC_VAR_S2] = (void *)s2;
1275
1276   func = p->code_exec;
1277   func (ex);
1278 }
1279 #endif
1280
1281
1282 /* orc_add_const_rshift_s16_11 */
1283 #ifdef DISABLE_ORC
1284 void
1285 orc_add_const_rshift_s16_11 (int16_t * d1, const int16_t * s1, int n){
1286   int i;
1287   orc_union16 * ORC_RESTRICT ptr0;
1288   const orc_union16 * ORC_RESTRICT ptr4;
1289   orc_union16 var33;
1290   orc_union16 var34;
1291   orc_union16 var35;
1292   orc_union16 var36;
1293
1294   ptr0 = (orc_union16 *)d1;
1295   ptr4 = (orc_union16 *)s1;
1296
1297     /* 1: loadpw */
1298     var34.i = 0x00000001; /* 1 or 4.94066e-324f */
1299
1300   for (i = 0; i < n; i++) {
1301     /* 0: loadw */
1302     var33 = ptr4[i];
1303     /* 2: addw */
1304     var36.i = var33.i + var34.i;
1305     /* 3: shrsw */
1306     var35.i = var36.i >> 1;
1307     /* 4: storew */
1308     ptr0[i] = var35;
1309   }
1310
1311 }
1312
1313 #else
1314 static void
1315 _backup_orc_add_const_rshift_s16_11 (OrcExecutor * ORC_RESTRICT ex)
1316 {
1317   int i;
1318   int n = ex->n;
1319   orc_union16 * ORC_RESTRICT ptr0;
1320   const orc_union16 * ORC_RESTRICT ptr4;
1321   orc_union16 var33;
1322   orc_union16 var34;
1323   orc_union16 var35;
1324   orc_union16 var36;
1325
1326   ptr0 = (orc_union16 *)ex->arrays[0];
1327   ptr4 = (orc_union16 *)ex->arrays[4];
1328
1329     /* 1: loadpw */
1330     var34.i = 0x00000001; /* 1 or 4.94066e-324f */
1331
1332   for (i = 0; i < n; i++) {
1333     /* 0: loadw */
1334     var33 = ptr4[i];
1335     /* 2: addw */
1336     var36.i = var33.i + var34.i;
1337     /* 3: shrsw */
1338     var35.i = var36.i >> 1;
1339     /* 4: storew */
1340     ptr0[i] = var35;
1341   }
1342
1343 }
1344
1345 void
1346 orc_add_const_rshift_s16_11 (int16_t * d1, const int16_t * s1, int n)
1347 {
1348   OrcExecutor _ex, *ex = &_ex;
1349   static int p_inited = 0;
1350   static OrcProgram *p = 0;
1351   void (*func) (OrcExecutor *);
1352
1353   if (!p_inited) {
1354     orc_once_mutex_lock ();
1355     if (!p_inited) {
1356       OrcCompileResult result;
1357
1358       p = orc_program_new ();
1359       orc_program_set_name (p, "orc_add_const_rshift_s16_11");
1360       orc_program_set_backup_function (p, _backup_orc_add_const_rshift_s16_11);
1361       orc_program_add_destination (p, 2, "d1");
1362       orc_program_add_source (p, 2, "s1");
1363       orc_program_add_constant (p, 4, 0x00000001, "c1");
1364       orc_program_add_temporary (p, 2, "t1");
1365
1366       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_C1, ORC_VAR_D1);
1367       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
1368
1369       result = orc_program_compile (p);
1370     }
1371     p_inited = TRUE;
1372     orc_once_mutex_unlock ();
1373   }
1374   ex->program = p;
1375
1376   ex->n = n;
1377   ex->arrays[ORC_VAR_D1] = d1;
1378   ex->arrays[ORC_VAR_S1] = (void *)s1;
1379
1380   func = p->code_exec;
1381   func (ex);
1382 }
1383 #endif
1384
1385
1386 /* orc_add_const_rshift_s16 */
1387 #ifdef DISABLE_ORC
1388 void
1389 orc_add_const_rshift_s16 (int16_t * d1, int p1, int p2, int n){
1390   int i;
1391   orc_union16 * ORC_RESTRICT ptr0;
1392   orc_union16 var33;
1393   orc_union16 var34;
1394   orc_union16 var35;
1395   orc_union16 var36;
1396
1397   ptr0 = (orc_union16 *)d1;
1398
1399     /* 1: loadpw */
1400     var34.i = p1;
1401
1402   for (i = 0; i < n; i++) {
1403     /* 0: loadw */
1404     var33 = ptr0[i];
1405     /* 2: addw */
1406     var36.i = var33.i + var34.i;
1407     /* 3: shrsw */
1408     var35.i = var36.i >> p2;
1409     /* 4: storew */
1410     ptr0[i] = var35;
1411   }
1412
1413 }
1414
1415 #else
1416 static void
1417 _backup_orc_add_const_rshift_s16 (OrcExecutor * ORC_RESTRICT ex)
1418 {
1419   int i;
1420   int n = ex->n;
1421   orc_union16 * ORC_RESTRICT ptr0;
1422   orc_union16 var33;
1423   orc_union16 var34;
1424   orc_union16 var35;
1425   orc_union16 var36;
1426
1427   ptr0 = (orc_union16 *)ex->arrays[0];
1428
1429     /* 1: loadpw */
1430     var34.i = ex->params[24];
1431
1432   for (i = 0; i < n; i++) {
1433     /* 0: loadw */
1434     var33 = ptr0[i];
1435     /* 2: addw */
1436     var36.i = var33.i + var34.i;
1437     /* 3: shrsw */
1438     var35.i = var36.i >> ex->params[25];
1439     /* 4: storew */
1440     ptr0[i] = var35;
1441   }
1442
1443 }
1444
1445 void
1446 orc_add_const_rshift_s16 (int16_t * d1, int p1, int p2, int n)
1447 {
1448   OrcExecutor _ex, *ex = &_ex;
1449   static int p_inited = 0;
1450   static OrcProgram *p = 0;
1451   void (*func) (OrcExecutor *);
1452
1453   if (!p_inited) {
1454     orc_once_mutex_lock ();
1455     if (!p_inited) {
1456       OrcCompileResult result;
1457
1458       p = orc_program_new ();
1459       orc_program_set_name (p, "orc_add_const_rshift_s16");
1460       orc_program_set_backup_function (p, _backup_orc_add_const_rshift_s16);
1461       orc_program_add_destination (p, 2, "d1");
1462       orc_program_add_parameter (p, 2, "p1");
1463       orc_program_add_parameter (p, 2, "p2");
1464       orc_program_add_temporary (p, 2, "t1");
1465
1466       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1);
1467       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_P2, ORC_VAR_D1);
1468
1469       result = orc_program_compile (p);
1470     }
1471     p_inited = TRUE;
1472     orc_once_mutex_unlock ();
1473   }
1474   ex->program = p;
1475
1476   ex->n = n;
1477   ex->arrays[ORC_VAR_D1] = d1;
1478   ex->params[ORC_VAR_P1] = p1;
1479   ex->params[ORC_VAR_P2] = p2;
1480
1481   func = p->code_exec;
1482   func (ex);
1483 }
1484 #endif
1485
1486
1487 /* orc_add_s16 */
1488 #ifdef DISABLE_ORC
1489 void
1490 orc_add_s16 (int16_t * d1, const int16_t * s1, const int16_t * s2, int n){
1491   int i;
1492   orc_union16 * ORC_RESTRICT ptr0;
1493   const orc_union16 * ORC_RESTRICT ptr4;
1494   const orc_union16 * ORC_RESTRICT ptr5;
1495   orc_union16 var32;
1496   orc_union16 var33;
1497   orc_union16 var34;
1498
1499   ptr0 = (orc_union16 *)d1;
1500   ptr4 = (orc_union16 *)s1;
1501   ptr5 = (orc_union16 *)s2;
1502
1503
1504   for (i = 0; i < n; i++) {
1505     /* 0: loadw */
1506     var32 = ptr4[i];
1507     /* 1: loadw */
1508     var33 = ptr5[i];
1509     /* 2: addw */
1510     var34.i = var32.i + var33.i;
1511     /* 3: storew */
1512     ptr0[i] = var34;
1513   }
1514
1515 }
1516
1517 #else
1518 static void
1519 _backup_orc_add_s16 (OrcExecutor * ORC_RESTRICT ex)
1520 {
1521   int i;
1522   int n = ex->n;
1523   orc_union16 * ORC_RESTRICT ptr0;
1524   const orc_union16 * ORC_RESTRICT ptr4;
1525   const orc_union16 * ORC_RESTRICT ptr5;
1526   orc_union16 var32;
1527   orc_union16 var33;
1528   orc_union16 var34;
1529
1530   ptr0 = (orc_union16 *)ex->arrays[0];
1531   ptr4 = (orc_union16 *)ex->arrays[4];
1532   ptr5 = (orc_union16 *)ex->arrays[5];
1533
1534
1535   for (i = 0; i < n; i++) {
1536     /* 0: loadw */
1537     var32 = ptr4[i];
1538     /* 1: loadw */
1539     var33 = ptr5[i];
1540     /* 2: addw */
1541     var34.i = var32.i + var33.i;
1542     /* 3: storew */
1543     ptr0[i] = var34;
1544   }
1545
1546 }
1547
1548 void
1549 orc_add_s16 (int16_t * d1, const int16_t * s1, const int16_t * s2, int n)
1550 {
1551   OrcExecutor _ex, *ex = &_ex;
1552   static int p_inited = 0;
1553   static OrcProgram *p = 0;
1554   void (*func) (OrcExecutor *);
1555
1556   if (!p_inited) {
1557     orc_once_mutex_lock ();
1558     if (!p_inited) {
1559       OrcCompileResult result;
1560
1561       p = orc_program_new ();
1562       orc_program_set_name (p, "orc_add_s16");
1563       orc_program_set_backup_function (p, _backup_orc_add_s16);
1564       orc_program_add_destination (p, 2, "d1");
1565       orc_program_add_source (p, 2, "s1");
1566       orc_program_add_source (p, 2, "s2");
1567
1568       orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_S2, ORC_VAR_D1);
1569
1570       result = orc_program_compile (p);
1571     }
1572     p_inited = TRUE;
1573     orc_once_mutex_unlock ();
1574   }
1575   ex->program = p;
1576
1577   ex->n = n;
1578   ex->arrays[ORC_VAR_D1] = d1;
1579   ex->arrays[ORC_VAR_S1] = (void *)s1;
1580   ex->arrays[ORC_VAR_S2] = (void *)s2;
1581
1582   func = p->code_exec;
1583   func (ex);
1584 }
1585 #endif
1586
1587
1588 /* orc_add_s16_2d */
1589 #ifdef DISABLE_ORC
1590 void
1591 orc_add_s16_2d (int16_t * d1, int d1_stride, const int16_t * s1, int s1_stride, int n, int m){
1592   int i;
1593   int j;
1594   orc_union16 * ORC_RESTRICT ptr0;
1595   const orc_union16 * ORC_RESTRICT ptr4;
1596   orc_union16 var32;
1597   orc_union16 var33;
1598   orc_union16 var34;
1599
1600   for (j = 0; j < m; j++) {
1601     ptr0 = ORC_PTR_OFFSET(d1, d1_stride * j);
1602     ptr4 = ORC_PTR_OFFSET(s1, s1_stride * j);
1603
1604
1605     for (i = 0; i < n; i++) {
1606       /* 0: loadw */
1607       var32 = ptr0[i];
1608       /* 1: loadw */
1609       var33 = ptr4[i];
1610       /* 2: addw */
1611       var34.i = var32.i + var33.i;
1612       /* 3: storew */
1613       ptr0[i] = var34;
1614     }
1615   }
1616
1617 }
1618
1619 #else
1620 static void
1621 _backup_orc_add_s16_2d (OrcExecutor * ORC_RESTRICT ex)
1622 {
1623   int i;
1624   int j;
1625   int n = ex->n;
1626   int m = ex->params[ORC_VAR_A1];
1627   orc_union16 * ORC_RESTRICT ptr0;
1628   const orc_union16 * ORC_RESTRICT ptr4;
1629   orc_union16 var32;
1630   orc_union16 var33;
1631   orc_union16 var34;
1632
1633   for (j = 0; j < m; j++) {
1634     ptr0 = ORC_PTR_OFFSET(ex->arrays[0], ex->params[0] * j);
1635     ptr4 = ORC_PTR_OFFSET(ex->arrays[4], ex->params[4] * j);
1636
1637
1638     for (i = 0; i < n; i++) {
1639       /* 0: loadw */
1640       var32 = ptr0[i];
1641       /* 1: loadw */
1642       var33 = ptr4[i];
1643       /* 2: addw */
1644       var34.i = var32.i + var33.i;
1645       /* 3: storew */
1646       ptr0[i] = var34;
1647     }
1648   }
1649
1650 }
1651
1652 void
1653 orc_add_s16_2d (int16_t * d1, int d1_stride, const int16_t * s1, int s1_stride, int n, int m)
1654 {
1655   OrcExecutor _ex, *ex = &_ex;
1656   static int p_inited = 0;
1657   static OrcProgram *p = 0;
1658   void (*func) (OrcExecutor *);
1659
1660   if (!p_inited) {
1661     orc_once_mutex_lock ();
1662     if (!p_inited) {
1663       OrcCompileResult result;
1664
1665       p = orc_program_new ();
1666       orc_program_set_2d (p);
1667       orc_program_set_name (p, "orc_add_s16_2d");
1668       orc_program_set_backup_function (p, _backup_orc_add_s16_2d);
1669       orc_program_add_destination (p, 2, "d1");
1670       orc_program_add_source (p, 2, "s1");
1671
1672       orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1);
1673
1674       result = orc_program_compile (p);
1675     }
1676     p_inited = TRUE;
1677     orc_once_mutex_unlock ();
1678   }
1679   ex->program = p;
1680
1681   ex->n = n;
1682   ORC_EXECUTOR_M(ex) = m;
1683   ex->arrays[ORC_VAR_D1] = d1;
1684   ex->params[ORC_VAR_D1] = d1_stride;
1685   ex->arrays[ORC_VAR_S1] = (void *)s1;
1686   ex->params[ORC_VAR_S1] = s1_stride;
1687
1688   func = p->code_exec;
1689   func (ex);
1690 }
1691 #endif
1692
1693
1694 /* orc_addc_rshift_s16 */
1695 #ifdef DISABLE_ORC
1696 void
1697 orc_addc_rshift_s16 (int16_t * d1, const int16_t * s1, const int16_t * s2, int p1, int n){
1698   int i;
1699   orc_union16 * ORC_RESTRICT ptr0;
1700   const orc_union16 * ORC_RESTRICT ptr4;
1701   const orc_union16 * ORC_RESTRICT ptr5;
1702   orc_union16 var33;
1703   orc_union16 var34;
1704   orc_union16 var35;
1705   orc_union16 var36;
1706
1707   ptr0 = (orc_union16 *)d1;
1708   ptr4 = (orc_union16 *)s1;
1709   ptr5 = (orc_union16 *)s2;
1710
1711
1712   for (i = 0; i < n; i++) {
1713     /* 0: loadw */
1714     var33 = ptr4[i];
1715     /* 1: loadw */
1716     var34 = ptr5[i];
1717     /* 2: addw */
1718     var36.i = var33.i + var34.i;
1719     /* 3: shrsw */
1720     var35.i = var36.i >> p1;
1721     /* 4: storew */
1722     ptr0[i] = var35;
1723   }
1724
1725 }
1726
1727 #else
1728 static void
1729 _backup_orc_addc_rshift_s16 (OrcExecutor * ORC_RESTRICT ex)
1730 {
1731   int i;
1732   int n = ex->n;
1733   orc_union16 * ORC_RESTRICT ptr0;
1734   const orc_union16 * ORC_RESTRICT ptr4;
1735   const orc_union16 * ORC_RESTRICT ptr5;
1736   orc_union16 var33;
1737   orc_union16 var34;
1738   orc_union16 var35;
1739   orc_union16 var36;
1740
1741   ptr0 = (orc_union16 *)ex->arrays[0];
1742   ptr4 = (orc_union16 *)ex->arrays[4];
1743   ptr5 = (orc_union16 *)ex->arrays[5];
1744
1745
1746   for (i = 0; i < n; i++) {
1747     /* 0: loadw */
1748     var33 = ptr4[i];
1749     /* 1: loadw */
1750     var34 = ptr5[i];
1751     /* 2: addw */
1752     var36.i = var33.i + var34.i;
1753     /* 3: shrsw */
1754     var35.i = var36.i >> ex->params[24];
1755     /* 4: storew */
1756     ptr0[i] = var35;
1757   }
1758
1759 }
1760
1761 void
1762 orc_addc_rshift_s16 (int16_t * d1, const int16_t * s1, const int16_t * s2, int p1, int n)
1763 {
1764   OrcExecutor _ex, *ex = &_ex;
1765   static int p_inited = 0;
1766   static OrcProgram *p = 0;
1767   void (*func) (OrcExecutor *);
1768
1769   if (!p_inited) {
1770     orc_once_mutex_lock ();
1771     if (!p_inited) {
1772       OrcCompileResult result;
1773
1774       p = orc_program_new ();
1775       orc_program_set_name (p, "orc_addc_rshift_s16");
1776       orc_program_set_backup_function (p, _backup_orc_addc_rshift_s16);
1777       orc_program_add_destination (p, 2, "d1");
1778       orc_program_add_source (p, 2, "s1");
1779       orc_program_add_source (p, 2, "s2");
1780       orc_program_add_parameter (p, 2, "p1");
1781       orc_program_add_temporary (p, 2, "t1");
1782
1783       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_S2, ORC_VAR_D1);
1784       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1);
1785
1786       result = orc_program_compile (p);
1787     }
1788     p_inited = TRUE;
1789     orc_once_mutex_unlock ();
1790   }
1791   ex->program = p;
1792
1793   ex->n = n;
1794   ex->arrays[ORC_VAR_D1] = d1;
1795   ex->arrays[ORC_VAR_S1] = (void *)s1;
1796   ex->arrays[ORC_VAR_S2] = (void *)s2;
1797   ex->params[ORC_VAR_P1] = p1;
1798
1799   func = p->code_exec;
1800   func (ex);
1801 }
1802 #endif
1803
1804
1805 /* orc_lshift1_s16 */
1806 #ifdef DISABLE_ORC
1807 void
1808 orc_lshift1_s16 (int16_t * d1, const int16_t * s1, int n){
1809   int i;
1810   orc_union16 * ORC_RESTRICT ptr0;
1811   const orc_union16 * ORC_RESTRICT ptr4;
1812   orc_union16 var32;
1813   orc_union16 var33;
1814
1815   ptr0 = (orc_union16 *)d1;
1816   ptr4 = (orc_union16 *)s1;
1817
1818
1819   for (i = 0; i < n; i++) {
1820     /* 0: loadw */
1821     var32 = ptr4[i];
1822     /* 1: shlw */
1823     var33.i = var32.i << 1;
1824     /* 2: storew */
1825     ptr0[i] = var33;
1826   }
1827
1828 }
1829
1830 #else
1831 static void
1832 _backup_orc_lshift1_s16 (OrcExecutor * ORC_RESTRICT ex)
1833 {
1834   int i;
1835   int n = ex->n;
1836   orc_union16 * ORC_RESTRICT ptr0;
1837   const orc_union16 * ORC_RESTRICT ptr4;
1838   orc_union16 var32;
1839   orc_union16 var33;
1840
1841   ptr0 = (orc_union16 *)ex->arrays[0];
1842   ptr4 = (orc_union16 *)ex->arrays[4];
1843
1844
1845   for (i = 0; i < n; i++) {
1846     /* 0: loadw */
1847     var32 = ptr4[i];
1848     /* 1: shlw */
1849     var33.i = var32.i << 1;
1850     /* 2: storew */
1851     ptr0[i] = var33;
1852   }
1853
1854 }
1855
1856 void
1857 orc_lshift1_s16 (int16_t * d1, const int16_t * s1, int n)
1858 {
1859   OrcExecutor _ex, *ex = &_ex;
1860   static int p_inited = 0;
1861   static OrcProgram *p = 0;
1862   void (*func) (OrcExecutor *);
1863
1864   if (!p_inited) {
1865     orc_once_mutex_lock ();
1866     if (!p_inited) {
1867       OrcCompileResult result;
1868
1869       p = orc_program_new ();
1870       orc_program_set_name (p, "orc_lshift1_s16");
1871       orc_program_set_backup_function (p, _backup_orc_lshift1_s16);
1872       orc_program_add_destination (p, 2, "d1");
1873       orc_program_add_source (p, 2, "s1");
1874       orc_program_add_constant (p, 4, 0x00000001, "c1");
1875
1876       orc_program_append_2 (p, "shlw", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_C1, ORC_VAR_D1);
1877
1878       result = orc_program_compile (p);
1879     }
1880     p_inited = TRUE;
1881     orc_once_mutex_unlock ();
1882   }
1883   ex->program = p;
1884
1885   ex->n = n;
1886   ex->arrays[ORC_VAR_D1] = d1;
1887   ex->arrays[ORC_VAR_S1] = (void *)s1;
1888
1889   func = p->code_exec;
1890   func (ex);
1891 }
1892 #endif
1893
1894
1895 /* orc_lshift2_s16 */
1896 #ifdef DISABLE_ORC
1897 void
1898 orc_lshift2_s16 (int16_t * d1, const int16_t * s1, int n){
1899   int i;
1900   orc_union16 * ORC_RESTRICT ptr0;
1901   const orc_union16 * ORC_RESTRICT ptr4;
1902   orc_union16 var32;
1903   orc_union16 var33;
1904
1905   ptr0 = (orc_union16 *)d1;
1906   ptr4 = (orc_union16 *)s1;
1907
1908
1909   for (i = 0; i < n; i++) {
1910     /* 0: loadw */
1911     var32 = ptr4[i];
1912     /* 1: shlw */
1913     var33.i = var32.i << 2;
1914     /* 2: storew */
1915     ptr0[i] = var33;
1916   }
1917
1918 }
1919
1920 #else
1921 static void
1922 _backup_orc_lshift2_s16 (OrcExecutor * ORC_RESTRICT ex)
1923 {
1924   int i;
1925   int n = ex->n;
1926   orc_union16 * ORC_RESTRICT ptr0;
1927   const orc_union16 * ORC_RESTRICT ptr4;
1928   orc_union16 var32;
1929   orc_union16 var33;
1930
1931   ptr0 = (orc_union16 *)ex->arrays[0];
1932   ptr4 = (orc_union16 *)ex->arrays[4];
1933
1934
1935   for (i = 0; i < n; i++) {
1936     /* 0: loadw */
1937     var32 = ptr4[i];
1938     /* 1: shlw */
1939     var33.i = var32.i << 2;
1940     /* 2: storew */
1941     ptr0[i] = var33;
1942   }
1943
1944 }
1945
1946 void
1947 orc_lshift2_s16 (int16_t * d1, const int16_t * s1, int n)
1948 {
1949   OrcExecutor _ex, *ex = &_ex;
1950   static int p_inited = 0;
1951   static OrcProgram *p = 0;
1952   void (*func) (OrcExecutor *);
1953
1954   if (!p_inited) {
1955     orc_once_mutex_lock ();
1956     if (!p_inited) {
1957       OrcCompileResult result;
1958
1959       p = orc_program_new ();
1960       orc_program_set_name (p, "orc_lshift2_s16");
1961       orc_program_set_backup_function (p, _backup_orc_lshift2_s16);
1962       orc_program_add_destination (p, 2, "d1");
1963       orc_program_add_source (p, 2, "s1");
1964       orc_program_add_constant (p, 4, 0x00000002, "c1");
1965
1966       orc_program_append_2 (p, "shlw", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_C1, ORC_VAR_D1);
1967
1968       result = orc_program_compile (p);
1969     }
1970     p_inited = TRUE;
1971     orc_once_mutex_unlock ();
1972   }
1973   ex->program = p;
1974
1975   ex->n = n;
1976   ex->arrays[ORC_VAR_D1] = d1;
1977   ex->arrays[ORC_VAR_S1] = (void *)s1;
1978
1979   func = p->code_exec;
1980   func (ex);
1981 }
1982 #endif
1983
1984
1985 /* orc_lshift_s16_ip */
1986 #ifdef DISABLE_ORC
1987 void
1988 orc_lshift_s16_ip (int16_t * d1, int p1, int n){
1989   int i;
1990   orc_union16 * ORC_RESTRICT ptr0;
1991   orc_union16 var32;
1992   orc_union16 var33;
1993
1994   ptr0 = (orc_union16 *)d1;
1995
1996
1997   for (i = 0; i < n; i++) {
1998     /* 0: loadw */
1999     var32 = ptr0[i];
2000     /* 1: shlw */
2001     var33.i = var32.i << p1;
2002     /* 2: storew */
2003     ptr0[i] = var33;
2004   }
2005
2006 }
2007
2008 #else
2009 static void
2010 _backup_orc_lshift_s16_ip (OrcExecutor * ORC_RESTRICT ex)
2011 {
2012   int i;
2013   int n = ex->n;
2014   orc_union16 * ORC_RESTRICT ptr0;
2015   orc_union16 var32;
2016   orc_union16 var33;
2017
2018   ptr0 = (orc_union16 *)ex->arrays[0];
2019
2020
2021   for (i = 0; i < n; i++) {
2022     /* 0: loadw */
2023     var32 = ptr0[i];
2024     /* 1: shlw */
2025     var33.i = var32.i << ex->params[24];
2026     /* 2: storew */
2027     ptr0[i] = var33;
2028   }
2029
2030 }
2031
2032 void
2033 orc_lshift_s16_ip (int16_t * d1, int p1, int n)
2034 {
2035   OrcExecutor _ex, *ex = &_ex;
2036   static int p_inited = 0;
2037   static OrcProgram *p = 0;
2038   void (*func) (OrcExecutor *);
2039
2040   if (!p_inited) {
2041     orc_once_mutex_lock ();
2042     if (!p_inited) {
2043       OrcCompileResult result;
2044
2045       p = orc_program_new ();
2046       orc_program_set_name (p, "orc_lshift_s16_ip");
2047       orc_program_set_backup_function (p, _backup_orc_lshift_s16_ip);
2048       orc_program_add_destination (p, 2, "d1");
2049       orc_program_add_parameter (p, 2, "p1");
2050
2051       orc_program_append_2 (p, "shlw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1);
2052
2053       result = orc_program_compile (p);
2054     }
2055     p_inited = TRUE;
2056     orc_once_mutex_unlock ();
2057   }
2058   ex->program = p;
2059
2060   ex->n = n;
2061   ex->arrays[ORC_VAR_D1] = d1;
2062   ex->params[ORC_VAR_P1] = p1;
2063
2064   func = p->code_exec;
2065   func (ex);
2066 }
2067 #endif
2068
2069
2070 /* orc_mas2_add_s16_op */
2071 #ifdef DISABLE_ORC
2072 void
2073 orc_mas2_add_s16_op (int16_t * d1, const int16_t * s1, const int16_t * s2, const int16_t * s3, int p1, int p2, int p3, int n){
2074   int i;
2075   orc_union16 * ORC_RESTRICT ptr0;
2076   const orc_union16 * ORC_RESTRICT ptr4;
2077   const orc_union16 * ORC_RESTRICT ptr5;
2078   const orc_union16 * ORC_RESTRICT ptr6;
2079   orc_union16 var34;
2080   orc_union16 var35;
2081   orc_union16 var36;
2082   orc_union32 var37;
2083   orc_union16 var38;
2084   orc_union16 var39;
2085   orc_union16 var40;
2086   orc_union32 var41;
2087   orc_union32 var42;
2088   orc_union32 var43;
2089   orc_union16 var44;
2090
2091   ptr0 = (orc_union16 *)d1;
2092   ptr4 = (orc_union16 *)s1;
2093   ptr5 = (orc_union16 *)s2;
2094   ptr6 = (orc_union16 *)s3;
2095
2096     /* 3: loadpw */
2097     var36.i = p1;
2098     /* 5: loadpl */
2099     var37.i = p2;
2100
2101   for (i = 0; i < n; i++) {
2102     /* 0: loadw */
2103     var34 = ptr5[i];
2104     /* 1: loadw */
2105     var35 = ptr6[i];
2106     /* 2: addw */
2107     var40.i = var34.i + var35.i;
2108     /* 4: mulswl */
2109     var41.i = var40.i * var36.i;
2110     /* 6: addl */
2111     var42.i = var41.i + var37.i;
2112     /* 7: shrsl */
2113     var43.i = var42.i >> p3;
2114     /* 8: convlw */
2115     var44.i = var43.i;
2116     /* 9: loadw */
2117     var38 = ptr4[i];
2118     /* 10: addw */
2119     var39.i = var38.i + var44.i;
2120     /* 11: storew */
2121     ptr0[i] = var39;
2122   }
2123
2124 }
2125
2126 #else
2127 static void
2128 _backup_orc_mas2_add_s16_op (OrcExecutor * ORC_RESTRICT ex)
2129 {
2130   int i;
2131   int n = ex->n;
2132   orc_union16 * ORC_RESTRICT ptr0;
2133   const orc_union16 * ORC_RESTRICT ptr4;
2134   const orc_union16 * ORC_RESTRICT ptr5;
2135   const orc_union16 * ORC_RESTRICT ptr6;
2136   orc_union16 var34;
2137   orc_union16 var35;
2138   orc_union16 var36;
2139   orc_union32 var37;
2140   orc_union16 var38;
2141   orc_union16 var39;
2142   orc_union16 var40;
2143   orc_union32 var41;
2144   orc_union32 var42;
2145   orc_union32 var43;
2146   orc_union16 var44;
2147
2148   ptr0 = (orc_union16 *)ex->arrays[0];
2149   ptr4 = (orc_union16 *)ex->arrays[4];
2150   ptr5 = (orc_union16 *)ex->arrays[5];
2151   ptr6 = (orc_union16 *)ex->arrays[6];
2152
2153     /* 3: loadpw */
2154     var36.i = ex->params[24];
2155     /* 5: loadpl */
2156     var37.i = ex->params[25];
2157
2158   for (i = 0; i < n; i++) {
2159     /* 0: loadw */
2160     var34 = ptr5[i];
2161     /* 1: loadw */
2162     var35 = ptr6[i];
2163     /* 2: addw */
2164     var40.i = var34.i + var35.i;
2165     /* 4: mulswl */
2166     var41.i = var40.i * var36.i;
2167     /* 6: addl */
2168     var42.i = var41.i + var37.i;
2169     /* 7: shrsl */
2170     var43.i = var42.i >> ex->params[26];
2171     /* 8: convlw */
2172     var44.i = var43.i;
2173     /* 9: loadw */
2174     var38 = ptr4[i];
2175     /* 10: addw */
2176     var39.i = var38.i + var44.i;
2177     /* 11: storew */
2178     ptr0[i] = var39;
2179   }
2180
2181 }
2182
2183 void
2184 orc_mas2_add_s16_op (int16_t * d1, const int16_t * s1, const int16_t * s2, const int16_t * s3, int p1, int p2, int p3, int n)
2185 {
2186   OrcExecutor _ex, *ex = &_ex;
2187   static int p_inited = 0;
2188   static OrcProgram *p = 0;
2189   void (*func) (OrcExecutor *);
2190
2191   if (!p_inited) {
2192     orc_once_mutex_lock ();
2193     if (!p_inited) {
2194       OrcCompileResult result;
2195
2196       p = orc_program_new ();
2197       orc_program_set_name (p, "orc_mas2_add_s16_op");
2198       orc_program_set_backup_function (p, _backup_orc_mas2_add_s16_op);
2199       orc_program_add_destination (p, 2, "d1");
2200       orc_program_add_source (p, 2, "s1");
2201       orc_program_add_source (p, 2, "s2");
2202       orc_program_add_source (p, 2, "s3");
2203       orc_program_add_parameter (p, 2, "p1");
2204       orc_program_add_parameter (p, 4, "p2");
2205       orc_program_add_parameter (p, 4, "p3");
2206       orc_program_add_temporary (p, 2, "t1");
2207       orc_program_add_temporary (p, 4, "t2");
2208
2209       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S3, ORC_VAR_D1);
2210       orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1);
2211       orc_program_append_2 (p, "addl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P2, ORC_VAR_D1);
2212       orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P3, ORC_VAR_D1);
2213       orc_program_append_2 (p, "convlw", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
2214       orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_T1, ORC_VAR_D1);
2215
2216       result = orc_program_compile (p);
2217     }
2218     p_inited = TRUE;
2219     orc_once_mutex_unlock ();
2220   }
2221   ex->program = p;
2222
2223   ex->n = n;
2224   ex->arrays[ORC_VAR_D1] = d1;
2225   ex->arrays[ORC_VAR_S1] = (void *)s1;
2226   ex->arrays[ORC_VAR_S2] = (void *)s2;
2227   ex->arrays[ORC_VAR_S3] = (void *)s3;
2228   ex->params[ORC_VAR_P1] = p1;
2229   ex->params[ORC_VAR_P2] = p2;
2230   ex->params[ORC_VAR_P3] = p3;
2231
2232   func = p->code_exec;
2233   func (ex);
2234 }
2235 #endif
2236
2237
2238 /* orc_mas2_add_s16_ip */
2239 #ifdef DISABLE_ORC
2240 void
2241 orc_mas2_add_s16_ip (int16_t * d1, const int16_t * s1, const int16_t * s2, int p1, int p2, int p3, int n){
2242   int i;
2243   orc_union16 * ORC_RESTRICT ptr0;
2244   const orc_union16 * ORC_RESTRICT ptr4;
2245   const orc_union16 * ORC_RESTRICT ptr5;
2246   orc_union16 var34;
2247   orc_union16 var35;
2248   orc_union16 var36;
2249   orc_union32 var37;
2250   orc_union16 var38;
2251   orc_union16 var39;
2252   orc_union16 var40;
2253   orc_union32 var41;
2254   orc_union32 var42;
2255   orc_union32 var43;
2256   orc_union16 var44;
2257
2258   ptr0 = (orc_union16 *)d1;
2259   ptr4 = (orc_union16 *)s1;
2260   ptr5 = (orc_union16 *)s2;
2261
2262     /* 3: loadpw */
2263     var36.i = p1;
2264     /* 5: loadpl */
2265     var37.i = p2;
2266
2267   for (i = 0; i < n; i++) {
2268     /* 0: loadw */
2269     var34 = ptr4[i];
2270     /* 1: loadw */
2271     var35 = ptr5[i];
2272     /* 2: addw */
2273     var40.i = var34.i + var35.i;
2274     /* 4: mulswl */
2275     var41.i = var40.i * var36.i;
2276     /* 6: addl */
2277     var42.i = var41.i + var37.i;
2278     /* 7: shrsl */
2279     var43.i = var42.i >> p3;
2280     /* 8: convlw */
2281     var44.i = var43.i;
2282     /* 9: loadw */
2283     var38 = ptr0[i];
2284     /* 10: addw */
2285     var39.i = var38.i + var44.i;
2286     /* 11: storew */
2287     ptr0[i] = var39;
2288   }
2289
2290 }
2291
2292 #else
2293 static void
2294 _backup_orc_mas2_add_s16_ip (OrcExecutor * ORC_RESTRICT ex)
2295 {
2296   int i;
2297   int n = ex->n;
2298   orc_union16 * ORC_RESTRICT ptr0;
2299   const orc_union16 * ORC_RESTRICT ptr4;
2300   const orc_union16 * ORC_RESTRICT ptr5;
2301   orc_union16 var34;
2302   orc_union16 var35;
2303   orc_union16 var36;
2304   orc_union32 var37;
2305   orc_union16 var38;
2306   orc_union16 var39;
2307   orc_union16 var40;
2308   orc_union32 var41;
2309   orc_union32 var42;
2310   orc_union32 var43;
2311   orc_union16 var44;
2312
2313   ptr0 = (orc_union16 *)ex->arrays[0];
2314   ptr4 = (orc_union16 *)ex->arrays[4];
2315   ptr5 = (orc_union16 *)ex->arrays[5];
2316
2317     /* 3: loadpw */
2318     var36.i = ex->params[24];
2319     /* 5: loadpl */
2320     var37.i = ex->params[25];
2321
2322   for (i = 0; i < n; i++) {
2323     /* 0: loadw */
2324     var34 = ptr4[i];
2325     /* 1: loadw */
2326     var35 = ptr5[i];
2327     /* 2: addw */
2328     var40.i = var34.i + var35.i;
2329     /* 4: mulswl */
2330     var41.i = var40.i * var36.i;
2331     /* 6: addl */
2332     var42.i = var41.i + var37.i;
2333     /* 7: shrsl */
2334     var43.i = var42.i >> ex->params[26];
2335     /* 8: convlw */
2336     var44.i = var43.i;
2337     /* 9: loadw */
2338     var38 = ptr0[i];
2339     /* 10: addw */
2340     var39.i = var38.i + var44.i;
2341     /* 11: storew */
2342     ptr0[i] = var39;
2343   }
2344
2345 }
2346
2347 void
2348 orc_mas2_add_s16_ip (int16_t * d1, const int16_t * s1, const int16_t * s2, int p1, int p2, int p3, int n)
2349 {
2350   OrcExecutor _ex, *ex = &_ex;
2351   static int p_inited = 0;
2352   static OrcProgram *p = 0;
2353   void (*func) (OrcExecutor *);
2354
2355   if (!p_inited) {
2356     orc_once_mutex_lock ();
2357     if (!p_inited) {
2358       OrcCompileResult result;
2359
2360       p = orc_program_new ();
2361       orc_program_set_name (p, "orc_mas2_add_s16_ip");
2362       orc_program_set_backup_function (p, _backup_orc_mas2_add_s16_ip);
2363       orc_program_add_destination (p, 2, "d1");
2364       orc_program_add_source (p, 2, "s1");
2365       orc_program_add_source (p, 2, "s2");
2366       orc_program_add_parameter (p, 2, "p1");
2367       orc_program_add_parameter (p, 4, "p2");
2368       orc_program_add_parameter (p, 4, "p3");
2369       orc_program_add_temporary (p, 2, "t1");
2370       orc_program_add_temporary (p, 4, "t2");
2371
2372       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_S2, ORC_VAR_D1);
2373       orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1);
2374       orc_program_append_2 (p, "addl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P2, ORC_VAR_D1);
2375       orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P3, ORC_VAR_D1);
2376       orc_program_append_2 (p, "convlw", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
2377       orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1);
2378
2379       result = orc_program_compile (p);
2380     }
2381     p_inited = TRUE;
2382     orc_once_mutex_unlock ();
2383   }
2384   ex->program = p;
2385
2386   ex->n = n;
2387   ex->arrays[ORC_VAR_D1] = d1;
2388   ex->arrays[ORC_VAR_S1] = (void *)s1;
2389   ex->arrays[ORC_VAR_S2] = (void *)s2;
2390   ex->params[ORC_VAR_P1] = p1;
2391   ex->params[ORC_VAR_P2] = p2;
2392   ex->params[ORC_VAR_P3] = p3;
2393
2394   func = p->code_exec;
2395   func (ex);
2396 }
2397 #endif
2398
2399
2400 /* orc_mas2_sub_s16_op */
2401 #ifdef DISABLE_ORC
2402 void
2403 orc_mas2_sub_s16_op (int16_t * d1, const int16_t * s1, const int16_t * s2, const int16_t * s3, int p1, int p2, int p3, int n){
2404   int i;
2405   orc_union16 * ORC_RESTRICT ptr0;
2406   const orc_union16 * ORC_RESTRICT ptr4;
2407   const orc_union16 * ORC_RESTRICT ptr5;
2408   const orc_union16 * ORC_RESTRICT ptr6;
2409   orc_union16 var34;
2410   orc_union16 var35;
2411   orc_union16 var36;
2412   orc_union32 var37;
2413   orc_union16 var38;
2414   orc_union16 var39;
2415   orc_union16 var40;
2416   orc_union32 var41;
2417   orc_union32 var42;
2418   orc_union32 var43;
2419   orc_union16 var44;
2420
2421   ptr0 = (orc_union16 *)d1;
2422   ptr4 = (orc_union16 *)s1;
2423   ptr5 = (orc_union16 *)s2;
2424   ptr6 = (orc_union16 *)s3;
2425
2426     /* 3: loadpw */
2427     var36.i = p1;
2428     /* 5: loadpl */
2429     var37.i = p2;
2430
2431   for (i = 0; i < n; i++) {
2432     /* 0: loadw */
2433     var34 = ptr5[i];
2434     /* 1: loadw */
2435     var35 = ptr6[i];
2436     /* 2: addw */
2437     var40.i = var34.i + var35.i;
2438     /* 4: mulswl */
2439     var41.i = var40.i * var36.i;
2440     /* 6: addl */
2441     var42.i = var41.i + var37.i;
2442     /* 7: shrsl */
2443     var43.i = var42.i >> p3;
2444     /* 8: convlw */
2445     var44.i = var43.i;
2446     /* 9: loadw */
2447     var38 = ptr4[i];
2448     /* 10: subw */
2449     var39.i = var38.i - var44.i;
2450     /* 11: storew */
2451     ptr0[i] = var39;
2452   }
2453
2454 }
2455
2456 #else
2457 static void
2458 _backup_orc_mas2_sub_s16_op (OrcExecutor * ORC_RESTRICT ex)
2459 {
2460   int i;
2461   int n = ex->n;
2462   orc_union16 * ORC_RESTRICT ptr0;
2463   const orc_union16 * ORC_RESTRICT ptr4;
2464   const orc_union16 * ORC_RESTRICT ptr5;
2465   const orc_union16 * ORC_RESTRICT ptr6;
2466   orc_union16 var34;
2467   orc_union16 var35;
2468   orc_union16 var36;
2469   orc_union32 var37;
2470   orc_union16 var38;
2471   orc_union16 var39;
2472   orc_union16 var40;
2473   orc_union32 var41;
2474   orc_union32 var42;
2475   orc_union32 var43;
2476   orc_union16 var44;
2477
2478   ptr0 = (orc_union16 *)ex->arrays[0];
2479   ptr4 = (orc_union16 *)ex->arrays[4];
2480   ptr5 = (orc_union16 *)ex->arrays[5];
2481   ptr6 = (orc_union16 *)ex->arrays[6];
2482
2483     /* 3: loadpw */
2484     var36.i = ex->params[24];
2485     /* 5: loadpl */
2486     var37.i = ex->params[25];
2487
2488   for (i = 0; i < n; i++) {
2489     /* 0: loadw */
2490     var34 = ptr5[i];
2491     /* 1: loadw */
2492     var35 = ptr6[i];
2493     /* 2: addw */
2494     var40.i = var34.i + var35.i;
2495     /* 4: mulswl */
2496     var41.i = var40.i * var36.i;
2497     /* 6: addl */
2498     var42.i = var41.i + var37.i;
2499     /* 7: shrsl */
2500     var43.i = var42.i >> ex->params[26];
2501     /* 8: convlw */
2502     var44.i = var43.i;
2503     /* 9: loadw */
2504     var38 = ptr4[i];
2505     /* 10: subw */
2506     var39.i = var38.i - var44.i;
2507     /* 11: storew */
2508     ptr0[i] = var39;
2509   }
2510
2511 }
2512
2513 void
2514 orc_mas2_sub_s16_op (int16_t * d1, const int16_t * s1, const int16_t * s2, const int16_t * s3, int p1, int p2, int p3, int n)
2515 {
2516   OrcExecutor _ex, *ex = &_ex;
2517   static int p_inited = 0;
2518   static OrcProgram *p = 0;
2519   void (*func) (OrcExecutor *);
2520
2521   if (!p_inited) {
2522     orc_once_mutex_lock ();
2523     if (!p_inited) {
2524       OrcCompileResult result;
2525
2526       p = orc_program_new ();
2527       orc_program_set_name (p, "orc_mas2_sub_s16_op");
2528       orc_program_set_backup_function (p, _backup_orc_mas2_sub_s16_op);
2529       orc_program_add_destination (p, 2, "d1");
2530       orc_program_add_source (p, 2, "s1");
2531       orc_program_add_source (p, 2, "s2");
2532       orc_program_add_source (p, 2, "s3");
2533       orc_program_add_parameter (p, 2, "p1");
2534       orc_program_add_parameter (p, 4, "p2");
2535       orc_program_add_parameter (p, 4, "p3");
2536       orc_program_add_temporary (p, 2, "t1");
2537       orc_program_add_temporary (p, 4, "t2");
2538
2539       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S3, ORC_VAR_D1);
2540       orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1);
2541       orc_program_append_2 (p, "addl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P2, ORC_VAR_D1);
2542       orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P3, ORC_VAR_D1);
2543       orc_program_append_2 (p, "convlw", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
2544       orc_program_append_2 (p, "subw", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_T1, ORC_VAR_D1);
2545
2546       result = orc_program_compile (p);
2547     }
2548     p_inited = TRUE;
2549     orc_once_mutex_unlock ();
2550   }
2551   ex->program = p;
2552
2553   ex->n = n;
2554   ex->arrays[ORC_VAR_D1] = d1;
2555   ex->arrays[ORC_VAR_S1] = (void *)s1;
2556   ex->arrays[ORC_VAR_S2] = (void *)s2;
2557   ex->arrays[ORC_VAR_S3] = (void *)s3;
2558   ex->params[ORC_VAR_P1] = p1;
2559   ex->params[ORC_VAR_P2] = p2;
2560   ex->params[ORC_VAR_P3] = p3;
2561
2562   func = p->code_exec;
2563   func (ex);
2564 }
2565 #endif
2566
2567
2568 /* orc_mas2_sub_s16_ip */
2569 #ifdef DISABLE_ORC
2570 void
2571 orc_mas2_sub_s16_ip (int16_t * d1, const int16_t * s1, const int16_t * s2, int p1, int p2, int p3, int n){
2572   int i;
2573   orc_union16 * ORC_RESTRICT ptr0;
2574   const orc_union16 * ORC_RESTRICT ptr4;
2575   const orc_union16 * ORC_RESTRICT ptr5;
2576   orc_union16 var34;
2577   orc_union16 var35;
2578   orc_union16 var36;
2579   orc_union32 var37;
2580   orc_union16 var38;
2581   orc_union16 var39;
2582   orc_union16 var40;
2583   orc_union32 var41;
2584   orc_union32 var42;
2585   orc_union32 var43;
2586   orc_union16 var44;
2587
2588   ptr0 = (orc_union16 *)d1;
2589   ptr4 = (orc_union16 *)s1;
2590   ptr5 = (orc_union16 *)s2;
2591
2592     /* 3: loadpw */
2593     var36.i = p1;
2594     /* 5: loadpl */
2595     var37.i = p2;
2596
2597   for (i = 0; i < n; i++) {
2598     /* 0: loadw */
2599     var34 = ptr4[i];
2600     /* 1: loadw */
2601     var35 = ptr5[i];
2602     /* 2: addw */
2603     var40.i = var34.i + var35.i;
2604     /* 4: mulswl */
2605     var41.i = var40.i * var36.i;
2606     /* 6: addl */
2607     var42.i = var41.i + var37.i;
2608     /* 7: shrsl */
2609     var43.i = var42.i >> p3;
2610     /* 8: convlw */
2611     var44.i = var43.i;
2612     /* 9: loadw */
2613     var38 = ptr0[i];
2614     /* 10: subw */
2615     var39.i = var38.i - var44.i;
2616     /* 11: storew */
2617     ptr0[i] = var39;
2618   }
2619
2620 }
2621
2622 #else
2623 static void
2624 _backup_orc_mas2_sub_s16_ip (OrcExecutor * ORC_RESTRICT ex)
2625 {
2626   int i;
2627   int n = ex->n;
2628   orc_union16 * ORC_RESTRICT ptr0;
2629   const orc_union16 * ORC_RESTRICT ptr4;
2630   const orc_union16 * ORC_RESTRICT ptr5;
2631   orc_union16 var34;
2632   orc_union16 var35;
2633   orc_union16 var36;
2634   orc_union32 var37;
2635   orc_union16 var38;
2636   orc_union16 var39;
2637   orc_union16 var40;
2638   orc_union32 var41;
2639   orc_union32 var42;
2640   orc_union32 var43;
2641   orc_union16 var44;
2642
2643   ptr0 = (orc_union16 *)ex->arrays[0];
2644   ptr4 = (orc_union16 *)ex->arrays[4];
2645   ptr5 = (orc_union16 *)ex->arrays[5];
2646
2647     /* 3: loadpw */
2648     var36.i = ex->params[24];
2649     /* 5: loadpl */
2650     var37.i = ex->params[25];
2651
2652   for (i = 0; i < n; i++) {
2653     /* 0: loadw */
2654     var34 = ptr4[i];
2655     /* 1: loadw */
2656     var35 = ptr5[i];
2657     /* 2: addw */
2658     var40.i = var34.i + var35.i;
2659     /* 4: mulswl */
2660     var41.i = var40.i * var36.i;
2661     /* 6: addl */
2662     var42.i = var41.i + var37.i;
2663     /* 7: shrsl */
2664     var43.i = var42.i >> ex->params[26];
2665     /* 8: convlw */
2666     var44.i = var43.i;
2667     /* 9: loadw */
2668     var38 = ptr0[i];
2669     /* 10: subw */
2670     var39.i = var38.i - var44.i;
2671     /* 11: storew */
2672     ptr0[i] = var39;
2673   }
2674
2675 }
2676
2677 void
2678 orc_mas2_sub_s16_ip (int16_t * d1, const int16_t * s1, const int16_t * s2, int p1, int p2, int p3, int n)
2679 {
2680   OrcExecutor _ex, *ex = &_ex;
2681   static int p_inited = 0;
2682   static OrcProgram *p = 0;
2683   void (*func) (OrcExecutor *);
2684
2685   if (!p_inited) {
2686     orc_once_mutex_lock ();
2687     if (!p_inited) {
2688       OrcCompileResult result;
2689
2690       p = orc_program_new ();
2691       orc_program_set_name (p, "orc_mas2_sub_s16_ip");
2692       orc_program_set_backup_function (p, _backup_orc_mas2_sub_s16_ip);
2693       orc_program_add_destination (p, 2, "d1");
2694       orc_program_add_source (p, 2, "s1");
2695       orc_program_add_source (p, 2, "s2");
2696       orc_program_add_parameter (p, 2, "p1");
2697       orc_program_add_parameter (p, 4, "p2");
2698       orc_program_add_parameter (p, 4, "p3");
2699       orc_program_add_temporary (p, 2, "t1");
2700       orc_program_add_temporary (p, 4, "t2");
2701
2702       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_S2, ORC_VAR_D1);
2703       orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1);
2704       orc_program_append_2 (p, "addl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P2, ORC_VAR_D1);
2705       orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P3, ORC_VAR_D1);
2706       orc_program_append_2 (p, "convlw", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
2707       orc_program_append_2 (p, "subw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1);
2708
2709       result = orc_program_compile (p);
2710     }
2711     p_inited = TRUE;
2712     orc_once_mutex_unlock ();
2713   }
2714   ex->program = p;
2715
2716   ex->n = n;
2717   ex->arrays[ORC_VAR_D1] = d1;
2718   ex->arrays[ORC_VAR_S1] = (void *)s1;
2719   ex->arrays[ORC_VAR_S2] = (void *)s2;
2720   ex->params[ORC_VAR_P1] = p1;
2721   ex->params[ORC_VAR_P2] = p2;
2722   ex->params[ORC_VAR_P3] = p3;
2723
2724   func = p->code_exec;
2725   func (ex);
2726 }
2727 #endif
2728
2729
2730 /* orc_mas4_across_add_s16_1991_op */
2731 #ifdef DISABLE_ORC
2732 void
2733 orc_mas4_across_add_s16_1991_op (int16_t * d1, const int16_t * s1, const int16_t * s2, const int16_t * s3, const int16_t * s4, const int16_t * s5, int p1, int p2, int n){
2734   int i;
2735   orc_union16 * ORC_RESTRICT ptr0;
2736   const orc_union16 * ORC_RESTRICT ptr4;
2737   const orc_union16 * ORC_RESTRICT ptr5;
2738   const orc_union16 * ORC_RESTRICT ptr6;
2739   const orc_union16 * ORC_RESTRICT ptr7;
2740   const orc_union16 * ORC_RESTRICT ptr8;
2741   orc_union16 var36;
2742   orc_union16 var37;
2743   orc_union16 var38;
2744   orc_union16 var39;
2745   orc_union16 var40;
2746   orc_union32 var41;
2747   orc_union16 var42;
2748   orc_union16 var43;
2749   orc_union16 var44;
2750   orc_union32 var45;
2751   orc_union16 var46;
2752   orc_union32 var47;
2753   orc_union32 var48;
2754   orc_union32 var49;
2755   orc_union32 var50;
2756   orc_union16 var51;
2757
2758   ptr0 = (orc_union16 *)d1;
2759   ptr4 = (orc_union16 *)s1;
2760   ptr5 = (orc_union16 *)s2;
2761   ptr6 = (orc_union16 *)s3;
2762   ptr7 = (orc_union16 *)s4;
2763   ptr8 = (orc_union16 *)s5;
2764
2765     /* 3: loadpw */
2766     var38.i = 0x00000009; /* 9 or 4.44659e-323f */
2767     /* 10: loadpl */
2768     var41.i = p1;
2769
2770   for (i = 0; i < n; i++) {
2771     /* 0: loadw */
2772     var36 = ptr6[i];
2773     /* 1: loadw */
2774     var37 = ptr7[i];
2775     /* 2: addw */
2776     var44.i = var36.i + var37.i;
2777     /* 4: mulswl */
2778     var45.i = var44.i * var38.i;
2779     /* 5: loadw */
2780     var39 = ptr5[i];
2781     /* 6: loadw */
2782     var40 = ptr8[i];
2783     /* 7: addw */
2784     var46.i = var39.i + var40.i;
2785     /* 8: convswl */
2786     var47.i = var46.i;
2787     /* 9: subl */
2788     var48.i = var45.i - var47.i;
2789     /* 11: addl */
2790     var49.i = var48.i + var41.i;
2791     /* 12: shrsl */
2792     var50.i = var49.i >> p2;
2793     /* 13: convlw */
2794     var51.i = var50.i;
2795     /* 14: loadw */
2796     var42 = ptr4[i];
2797     /* 15: addw */
2798     var43.i = var42.i + var51.i;
2799     /* 16: storew */
2800     ptr0[i] = var43;
2801   }
2802
2803 }
2804
2805 #else
2806 static void
2807 _backup_orc_mas4_across_add_s16_1991_op (OrcExecutor * ORC_RESTRICT ex)
2808 {
2809   int i;
2810   int n = ex->n;
2811   orc_union16 * ORC_RESTRICT ptr0;
2812   const orc_union16 * ORC_RESTRICT ptr4;
2813   const orc_union16 * ORC_RESTRICT ptr5;
2814   const orc_union16 * ORC_RESTRICT ptr6;
2815   const orc_union16 * ORC_RESTRICT ptr7;
2816   const orc_union16 * ORC_RESTRICT ptr8;
2817   orc_union16 var36;
2818   orc_union16 var37;
2819   orc_union16 var38;
2820   orc_union16 var39;
2821   orc_union16 var40;
2822   orc_union32 var41;
2823   orc_union16 var42;
2824   orc_union16 var43;
2825   orc_union16 var44;
2826   orc_union32 var45;
2827   orc_union16 var46;
2828   orc_union32 var47;
2829   orc_union32 var48;
2830   orc_union32 var49;
2831   orc_union32 var50;
2832   orc_union16 var51;
2833
2834   ptr0 = (orc_union16 *)ex->arrays[0];
2835   ptr4 = (orc_union16 *)ex->arrays[4];
2836   ptr5 = (orc_union16 *)ex->arrays[5];
2837   ptr6 = (orc_union16 *)ex->arrays[6];
2838   ptr7 = (orc_union16 *)ex->arrays[7];
2839   ptr8 = (orc_union16 *)ex->arrays[8];
2840
2841     /* 3: loadpw */
2842     var38.i = 0x00000009; /* 9 or 4.44659e-323f */
2843     /* 10: loadpl */
2844     var41.i = ex->params[24];
2845
2846   for (i = 0; i < n; i++) {
2847     /* 0: loadw */
2848     var36 = ptr6[i];
2849     /* 1: loadw */
2850     var37 = ptr7[i];
2851     /* 2: addw */
2852     var44.i = var36.i + var37.i;
2853     /* 4: mulswl */
2854     var45.i = var44.i * var38.i;
2855     /* 5: loadw */
2856     var39 = ptr5[i];
2857     /* 6: loadw */
2858     var40 = ptr8[i];
2859     /* 7: addw */
2860     var46.i = var39.i + var40.i;
2861     /* 8: convswl */
2862     var47.i = var46.i;
2863     /* 9: subl */
2864     var48.i = var45.i - var47.i;
2865     /* 11: addl */
2866     var49.i = var48.i + var41.i;
2867     /* 12: shrsl */
2868     var50.i = var49.i >> ex->params[25];
2869     /* 13: convlw */
2870     var51.i = var50.i;
2871     /* 14: loadw */
2872     var42 = ptr4[i];
2873     /* 15: addw */
2874     var43.i = var42.i + var51.i;
2875     /* 16: storew */
2876     ptr0[i] = var43;
2877   }
2878
2879 }
2880
2881 void
2882 orc_mas4_across_add_s16_1991_op (int16_t * d1, const int16_t * s1, const int16_t * s2, const int16_t * s3, const int16_t * s4, const int16_t * s5, int p1, int p2, int n)
2883 {
2884   OrcExecutor _ex, *ex = &_ex;
2885   static int p_inited = 0;
2886   static OrcProgram *p = 0;
2887   void (*func) (OrcExecutor *);
2888
2889   if (!p_inited) {
2890     orc_once_mutex_lock ();
2891     if (!p_inited) {
2892       OrcCompileResult result;
2893
2894       p = orc_program_new ();
2895       orc_program_set_name (p, "orc_mas4_across_add_s16_1991_op");
2896       orc_program_set_backup_function (p, _backup_orc_mas4_across_add_s16_1991_op);
2897       orc_program_add_destination (p, 2, "d1");
2898       orc_program_add_source (p, 2, "s1");
2899       orc_program_add_source (p, 2, "s2");
2900       orc_program_add_source (p, 2, "s3");
2901       orc_program_add_source (p, 2, "s4");
2902       orc_program_add_source (p, 2, "s5");
2903       orc_program_add_constant (p, 4, 0x00000009, "c1");
2904       orc_program_add_parameter (p, 4, "p1");
2905       orc_program_add_parameter (p, 4, "p2");
2906       orc_program_add_temporary (p, 2, "t1");
2907       orc_program_add_temporary (p, 2, "t2");
2908       orc_program_add_temporary (p, 4, "t3");
2909       orc_program_add_temporary (p, 4, "t4");
2910
2911       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_S3, ORC_VAR_S4, ORC_VAR_D1);
2912       orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
2913       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_S5, ORC_VAR_D1);
2914       orc_program_append_2 (p, "convswl", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
2915       orc_program_append_2 (p, "subl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4, ORC_VAR_D1);
2916       orc_program_append_2 (p, "addl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_P1, ORC_VAR_D1);
2917       orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_P2, ORC_VAR_D1);
2918       orc_program_append_2 (p, "convlw", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_D1, ORC_VAR_D1);
2919       orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_T1, ORC_VAR_D1);
2920
2921       result = orc_program_compile (p);
2922     }
2923     p_inited = TRUE;
2924     orc_once_mutex_unlock ();
2925   }
2926   ex->program = p;
2927
2928   ex->n = n;
2929   ex->arrays[ORC_VAR_D1] = d1;
2930   ex->arrays[ORC_VAR_S1] = (void *)s1;
2931   ex->arrays[ORC_VAR_S2] = (void *)s2;
2932   ex->arrays[ORC_VAR_S3] = (void *)s3;
2933   ex->arrays[ORC_VAR_S4] = (void *)s4;
2934   ex->arrays[ORC_VAR_S5] = (void *)s5;
2935   ex->params[ORC_VAR_P1] = p1;
2936   ex->params[ORC_VAR_P2] = p2;
2937
2938   func = p->code_exec;
2939   func (ex);
2940 }
2941 #endif
2942
2943
2944 /* orc_mas4_across_add_s16_1991_ip */
2945 #ifdef DISABLE_ORC
2946 void
2947 orc_mas4_across_add_s16_1991_ip (int16_t * d1, const int16_t * s1, const int16_t * s2, const int16_t * s3, const int16_t * s4, int p1, int p2, int n){
2948   int i;
2949   orc_union16 * ORC_RESTRICT ptr0;
2950   const orc_union16 * ORC_RESTRICT ptr4;
2951   const orc_union16 * ORC_RESTRICT ptr5;
2952   const orc_union16 * ORC_RESTRICT ptr6;
2953   const orc_union16 * ORC_RESTRICT ptr7;
2954   orc_union16 var36;
2955   orc_union16 var37;
2956   orc_union16 var38;
2957   orc_union16 var39;
2958   orc_union16 var40;
2959   orc_union32 var41;
2960   orc_union16 var42;
2961   orc_union16 var43;
2962   orc_union16 var44;
2963   orc_union32 var45;
2964   orc_union16 var46;
2965   orc_union32 var47;
2966   orc_union32 var48;
2967   orc_union32 var49;
2968   orc_union32 var50;
2969   orc_union16 var51;
2970
2971   ptr0 = (orc_union16 *)d1;
2972   ptr4 = (orc_union16 *)s1;
2973   ptr5 = (orc_union16 *)s2;
2974   ptr6 = (orc_union16 *)s3;
2975   ptr7 = (orc_union16 *)s4;
2976
2977     /* 3: loadpw */
2978     var38.i = 0x00000009; /* 9 or 4.44659e-323f */
2979     /* 10: loadpl */
2980     var41.i = p1;
2981
2982   for (i = 0; i < n; i++) {
2983     /* 0: loadw */
2984     var36 = ptr5[i];
2985     /* 1: loadw */
2986     var37 = ptr6[i];
2987     /* 2: addw */
2988     var44.i = var36.i + var37.i;
2989     /* 4: mulswl */
2990     var45.i = var44.i * var38.i;
2991     /* 5: loadw */
2992     var39 = ptr4[i];
2993     /* 6: loadw */
2994     var40 = ptr7[i];
2995     /* 7: addw */
2996     var46.i = var39.i + var40.i;
2997     /* 8: convswl */
2998     var47.i = var46.i;
2999     /* 9: subl */
3000     var48.i = var45.i - var47.i;
3001     /* 11: addl */
3002     var49.i = var48.i + var41.i;
3003     /* 12: shrsl */
3004     var50.i = var49.i >> p2;
3005     /* 13: convlw */
3006     var51.i = var50.i;
3007     /* 14: loadw */
3008     var42 = ptr0[i];
3009     /* 15: addw */
3010     var43.i = var42.i + var51.i;
3011     /* 16: storew */
3012     ptr0[i] = var43;
3013   }
3014
3015 }
3016
3017 #else
3018 static void
3019 _backup_orc_mas4_across_add_s16_1991_ip (OrcExecutor * ORC_RESTRICT ex)
3020 {
3021   int i;
3022   int n = ex->n;
3023   orc_union16 * ORC_RESTRICT ptr0;
3024   const orc_union16 * ORC_RESTRICT ptr4;
3025   const orc_union16 * ORC_RESTRICT ptr5;
3026   const orc_union16 * ORC_RESTRICT ptr6;
3027   const orc_union16 * ORC_RESTRICT ptr7;
3028   orc_union16 var36;
3029   orc_union16 var37;
3030   orc_union16 var38;
3031   orc_union16 var39;
3032   orc_union16 var40;
3033   orc_union32 var41;
3034   orc_union16 var42;
3035   orc_union16 var43;
3036   orc_union16 var44;
3037   orc_union32 var45;
3038   orc_union16 var46;
3039   orc_union32 var47;
3040   orc_union32 var48;
3041   orc_union32 var49;
3042   orc_union32 var50;
3043   orc_union16 var51;
3044
3045   ptr0 = (orc_union16 *)ex->arrays[0];
3046   ptr4 = (orc_union16 *)ex->arrays[4];
3047   ptr5 = (orc_union16 *)ex->arrays[5];
3048   ptr6 = (orc_union16 *)ex->arrays[6];
3049   ptr7 = (orc_union16 *)ex->arrays[7];
3050
3051     /* 3: loadpw */
3052     var38.i = 0x00000009; /* 9 or 4.44659e-323f */
3053     /* 10: loadpl */
3054     var41.i = ex->params[24];
3055
3056   for (i = 0; i < n; i++) {
3057     /* 0: loadw */
3058     var36 = ptr5[i];
3059     /* 1: loadw */
3060     var37 = ptr6[i];
3061     /* 2: addw */
3062     var44.i = var36.i + var37.i;
3063     /* 4: mulswl */
3064     var45.i = var44.i * var38.i;
3065     /* 5: loadw */
3066     var39 = ptr4[i];
3067     /* 6: loadw */
3068     var40 = ptr7[i];
3069     /* 7: addw */
3070     var46.i = var39.i + var40.i;
3071     /* 8: convswl */
3072     var47.i = var46.i;
3073     /* 9: subl */
3074     var48.i = var45.i - var47.i;
3075     /* 11: addl */
3076     var49.i = var48.i + var41.i;
3077     /* 12: shrsl */
3078     var50.i = var49.i >> ex->params[25];
3079     /* 13: convlw */
3080     var51.i = var50.i;
3081     /* 14: loadw */
3082     var42 = ptr0[i];
3083     /* 15: addw */
3084     var43.i = var42.i + var51.i;
3085     /* 16: storew */
3086     ptr0[i] = var43;
3087   }
3088
3089 }
3090
3091 void
3092 orc_mas4_across_add_s16_1991_ip (int16_t * d1, const int16_t * s1, const int16_t * s2, const int16_t * s3, const int16_t * s4, int p1, int p2, int n)
3093 {
3094   OrcExecutor _ex, *ex = &_ex;
3095   static int p_inited = 0;
3096   static OrcProgram *p = 0;
3097   void (*func) (OrcExecutor *);
3098
3099   if (!p_inited) {
3100     orc_once_mutex_lock ();
3101     if (!p_inited) {
3102       OrcCompileResult result;
3103
3104       p = orc_program_new ();
3105       orc_program_set_name (p, "orc_mas4_across_add_s16_1991_ip");
3106       orc_program_set_backup_function (p, _backup_orc_mas4_across_add_s16_1991_ip);
3107       orc_program_add_destination (p, 2, "d1");
3108       orc_program_add_source (p, 2, "s1");
3109       orc_program_add_source (p, 2, "s2");
3110       orc_program_add_source (p, 2, "s3");
3111       orc_program_add_source (p, 2, "s4");
3112       orc_program_add_constant (p, 4, 0x00000009, "c1");
3113       orc_program_add_parameter (p, 4, "p1");
3114       orc_program_add_parameter (p, 4, "p2");
3115       orc_program_add_temporary (p, 2, "t1");
3116       orc_program_add_temporary (p, 2, "t2");
3117       orc_program_add_temporary (p, 4, "t3");
3118       orc_program_add_temporary (p, 4, "t4");
3119
3120       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S3, ORC_VAR_D1);
3121       orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
3122       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_S4, ORC_VAR_D1);
3123       orc_program_append_2 (p, "convswl", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
3124       orc_program_append_2 (p, "subl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4, ORC_VAR_D1);
3125       orc_program_append_2 (p, "addl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_P1, ORC_VAR_D1);
3126       orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_P2, ORC_VAR_D1);
3127       orc_program_append_2 (p, "convlw", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_D1, ORC_VAR_D1);
3128       orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1);
3129
3130       result = orc_program_compile (p);
3131     }
3132     p_inited = TRUE;
3133     orc_once_mutex_unlock ();
3134   }
3135   ex->program = p;
3136
3137   ex->n = n;
3138   ex->arrays[ORC_VAR_D1] = d1;
3139   ex->arrays[ORC_VAR_S1] = (void *)s1;
3140   ex->arrays[ORC_VAR_S2] = (void *)s2;
3141   ex->arrays[ORC_VAR_S3] = (void *)s3;
3142   ex->arrays[ORC_VAR_S4] = (void *)s4;
3143   ex->params[ORC_VAR_P1] = p1;
3144   ex->params[ORC_VAR_P2] = p2;
3145
3146   func = p->code_exec;
3147   func (ex);
3148 }
3149 #endif
3150
3151
3152 /* orc_mas4_across_sub_s16_1991_op */
3153 #ifdef DISABLE_ORC
3154 void
3155 orc_mas4_across_sub_s16_1991_op (int16_t * d1, const int16_t * s1, const int16_t * s2, const int16_t * s3, const int16_t * s4, const int16_t * s5, int p1, int p2, int n){
3156   int i;
3157   orc_union16 * ORC_RESTRICT ptr0;
3158   const orc_union16 * ORC_RESTRICT ptr4;
3159   const orc_union16 * ORC_RESTRICT ptr5;
3160   const orc_union16 * ORC_RESTRICT ptr6;
3161   const orc_union16 * ORC_RESTRICT ptr7;
3162   const orc_union16 * ORC_RESTRICT ptr8;
3163   orc_union16 var36;
3164   orc_union16 var37;
3165   orc_union16 var38;
3166   orc_union16 var39;
3167   orc_union16 var40;
3168   orc_union32 var41;
3169   orc_union16 var42;
3170   orc_union16 var43;
3171   orc_union16 var44;
3172   orc_union32 var45;
3173   orc_union16 var46;
3174   orc_union32 var47;
3175   orc_union32 var48;
3176   orc_union32 var49;
3177   orc_union32 var50;
3178   orc_union16 var51;
3179
3180   ptr0 = (orc_union16 *)d1;
3181   ptr4 = (orc_union16 *)s1;
3182   ptr5 = (orc_union16 *)s2;
3183   ptr6 = (orc_union16 *)s3;
3184   ptr7 = (orc_union16 *)s4;
3185   ptr8 = (orc_union16 *)s5;
3186
3187     /* 3: loadpw */
3188     var38.i = 0x00000009; /* 9 or 4.44659e-323f */
3189     /* 10: loadpl */
3190     var41.i = p1;
3191
3192   for (i = 0; i < n; i++) {
3193     /* 0: loadw */
3194     var36 = ptr6[i];
3195     /* 1: loadw */
3196     var37 = ptr7[i];
3197     /* 2: addw */
3198     var44.i = var36.i + var37.i;
3199     /* 4: mulswl */
3200     var45.i = var44.i * var38.i;
3201     /* 5: loadw */
3202     var39 = ptr5[i];
3203     /* 6: loadw */
3204     var40 = ptr8[i];
3205     /* 7: addw */
3206     var46.i = var39.i + var40.i;
3207     /* 8: convswl */
3208     var47.i = var46.i;
3209     /* 9: subl */
3210     var48.i = var45.i - var47.i;
3211     /* 11: addl */
3212     var49.i = var48.i + var41.i;
3213     /* 12: shrsl */
3214     var50.i = var49.i >> p2;
3215     /* 13: convlw */
3216     var51.i = var50.i;
3217     /* 14: loadw */
3218     var42 = ptr4[i];
3219     /* 15: subw */
3220     var43.i = var42.i - var51.i;
3221     /* 16: storew */
3222     ptr0[i] = var43;
3223   }
3224
3225 }
3226
3227 #else
3228 static void
3229 _backup_orc_mas4_across_sub_s16_1991_op (OrcExecutor * ORC_RESTRICT ex)
3230 {
3231   int i;
3232   int n = ex->n;
3233   orc_union16 * ORC_RESTRICT ptr0;
3234   const orc_union16 * ORC_RESTRICT ptr4;
3235   const orc_union16 * ORC_RESTRICT ptr5;
3236   const orc_union16 * ORC_RESTRICT ptr6;
3237   const orc_union16 * ORC_RESTRICT ptr7;
3238   const orc_union16 * ORC_RESTRICT ptr8;
3239   orc_union16 var36;
3240   orc_union16 var37;
3241   orc_union16 var38;
3242   orc_union16 var39;
3243   orc_union16 var40;
3244   orc_union32 var41;
3245   orc_union16 var42;
3246   orc_union16 var43;
3247   orc_union16 var44;
3248   orc_union32 var45;
3249   orc_union16 var46;
3250   orc_union32 var47;
3251   orc_union32 var48;
3252   orc_union32 var49;
3253   orc_union32 var50;
3254   orc_union16 var51;
3255
3256   ptr0 = (orc_union16 *)ex->arrays[0];
3257   ptr4 = (orc_union16 *)ex->arrays[4];
3258   ptr5 = (orc_union16 *)ex->arrays[5];
3259   ptr6 = (orc_union16 *)ex->arrays[6];
3260   ptr7 = (orc_union16 *)ex->arrays[7];
3261   ptr8 = (orc_union16 *)ex->arrays[8];
3262
3263     /* 3: loadpw */
3264     var38.i = 0x00000009; /* 9 or 4.44659e-323f */
3265     /* 10: loadpl */
3266     var41.i = ex->params[24];
3267
3268   for (i = 0; i < n; i++) {
3269     /* 0: loadw */
3270     var36 = ptr6[i];
3271     /* 1: loadw */
3272     var37 = ptr7[i];
3273     /* 2: addw */
3274     var44.i = var36.i + var37.i;
3275     /* 4: mulswl */
3276     var45.i = var44.i * var38.i;
3277     /* 5: loadw */
3278     var39 = ptr5[i];
3279     /* 6: loadw */
3280     var40 = ptr8[i];
3281     /* 7: addw */
3282     var46.i = var39.i + var40.i;
3283     /* 8: convswl */
3284     var47.i = var46.i;
3285     /* 9: subl */
3286     var48.i = var45.i - var47.i;
3287     /* 11: addl */
3288     var49.i = var48.i + var41.i;
3289     /* 12: shrsl */
3290     var50.i = var49.i >> ex->params[25];
3291     /* 13: convlw */
3292     var51.i = var50.i;
3293     /* 14: loadw */
3294     var42 = ptr4[i];
3295     /* 15: subw */
3296     var43.i = var42.i - var51.i;
3297     /* 16: storew */
3298     ptr0[i] = var43;
3299   }
3300
3301 }
3302
3303 void
3304 orc_mas4_across_sub_s16_1991_op (int16_t * d1, const int16_t * s1, const int16_t * s2, const int16_t * s3, const int16_t * s4, const int16_t * s5, int p1, int p2, int n)
3305 {
3306   OrcExecutor _ex, *ex = &_ex;
3307   static int p_inited = 0;
3308   static OrcProgram *p = 0;
3309   void (*func) (OrcExecutor *);
3310
3311   if (!p_inited) {
3312     orc_once_mutex_lock ();
3313     if (!p_inited) {
3314       OrcCompileResult result;
3315
3316       p = orc_program_new ();
3317       orc_program_set_name (p, "orc_mas4_across_sub_s16_1991_op");
3318       orc_program_set_backup_function (p, _backup_orc_mas4_across_sub_s16_1991_op);
3319       orc_program_add_destination (p, 2, "d1");
3320       orc_program_add_source (p, 2, "s1");
3321       orc_program_add_source (p, 2, "s2");
3322       orc_program_add_source (p, 2, "s3");
3323       orc_program_add_source (p, 2, "s4");
3324       orc_program_add_source (p, 2, "s5");
3325       orc_program_add_constant (p, 4, 0x00000009, "c1");
3326       orc_program_add_parameter (p, 4, "p1");
3327       orc_program_add_parameter (p, 4, "p2");
3328       orc_program_add_temporary (p, 2, "t1");
3329       orc_program_add_temporary (p, 2, "t2");
3330       orc_program_add_temporary (p, 4, "t3");
3331       orc_program_add_temporary (p, 4, "t4");
3332
3333       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_S3, ORC_VAR_S4, ORC_VAR_D1);
3334       orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
3335       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_S5, ORC_VAR_D1);
3336       orc_program_append_2 (p, "convswl", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
3337       orc_program_append_2 (p, "subl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4, ORC_VAR_D1);
3338       orc_program_append_2 (p, "addl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_P1, ORC_VAR_D1);
3339       orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_P2, ORC_VAR_D1);
3340       orc_program_append_2 (p, "convlw", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_D1, ORC_VAR_D1);
3341       orc_program_append_2 (p, "subw", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_T1, ORC_VAR_D1);
3342
3343       result = orc_program_compile (p);
3344     }
3345     p_inited = TRUE;
3346     orc_once_mutex_unlock ();
3347   }
3348   ex->program = p;
3349
3350   ex->n = n;
3351   ex->arrays[ORC_VAR_D1] = d1;
3352   ex->arrays[ORC_VAR_S1] = (void *)s1;
3353   ex->arrays[ORC_VAR_S2] = (void *)s2;
3354   ex->arrays[ORC_VAR_S3] = (void *)s3;
3355   ex->arrays[ORC_VAR_S4] = (void *)s4;
3356   ex->arrays[ORC_VAR_S5] = (void *)s5;
3357   ex->params[ORC_VAR_P1] = p1;
3358   ex->params[ORC_VAR_P2] = p2;
3359
3360   func = p->code_exec;
3361   func (ex);
3362 }
3363 #endif
3364
3365
3366 /* orc_mas4_across_sub_s16_1991_ip */
3367 #ifdef DISABLE_ORC
3368 void
3369 orc_mas4_across_sub_s16_1991_ip (int16_t * d1, const int16_t * s1, const int16_t * s2, const int16_t * s3, const int16_t * s4, int p1, int p2, int n){
3370   int i;
3371   orc_union16 * ORC_RESTRICT ptr0;
3372   const orc_union16 * ORC_RESTRICT ptr4;
3373   const orc_union16 * ORC_RESTRICT ptr5;
3374   const orc_union16 * ORC_RESTRICT ptr6;
3375   const orc_union16 * ORC_RESTRICT ptr7;
3376   orc_union16 var36;
3377   orc_union16 var37;
3378   orc_union16 var38;
3379   orc_union16 var39;
3380   orc_union16 var40;
3381   orc_union32 var41;
3382   orc_union16 var42;
3383   orc_union16 var43;
3384   orc_union16 var44;
3385   orc_union32 var45;
3386   orc_union16 var46;
3387   orc_union32 var47;
3388   orc_union32 var48;
3389   orc_union32 var49;
3390   orc_union32 var50;
3391   orc_union16 var51;
3392
3393   ptr0 = (orc_union16 *)d1;
3394   ptr4 = (orc_union16 *)s1;
3395   ptr5 = (orc_union16 *)s2;
3396   ptr6 = (orc_union16 *)s3;
3397   ptr7 = (orc_union16 *)s4;
3398
3399     /* 3: loadpw */
3400     var38.i = 0x00000009; /* 9 or 4.44659e-323f */
3401     /* 10: loadpl */
3402     var41.i = p1;
3403
3404   for (i = 0; i < n; i++) {
3405     /* 0: loadw */
3406     var36 = ptr5[i];
3407     /* 1: loadw */
3408     var37 = ptr6[i];
3409     /* 2: addw */
3410     var44.i = var36.i + var37.i;
3411     /* 4: mulswl */
3412     var45.i = var44.i * var38.i;
3413     /* 5: loadw */
3414     var39 = ptr4[i];
3415     /* 6: loadw */
3416     var40 = ptr7[i];
3417     /* 7: addw */
3418     var46.i = var39.i + var40.i;
3419     /* 8: convswl */
3420     var47.i = var46.i;
3421     /* 9: subl */
3422     var48.i = var45.i - var47.i;
3423     /* 11: addl */
3424     var49.i = var48.i + var41.i;
3425     /* 12: shrsl */
3426     var50.i = var49.i >> p2;
3427     /* 13: convlw */
3428     var51.i = var50.i;
3429     /* 14: loadw */
3430     var42 = ptr0[i];
3431     /* 15: subw */
3432     var43.i = var42.i - var51.i;
3433     /* 16: storew */
3434     ptr0[i] = var43;
3435   }
3436
3437 }
3438
3439 #else
3440 static void
3441 _backup_orc_mas4_across_sub_s16_1991_ip (OrcExecutor * ORC_RESTRICT ex)
3442 {
3443   int i;
3444   int n = ex->n;
3445   orc_union16 * ORC_RESTRICT ptr0;
3446   const orc_union16 * ORC_RESTRICT ptr4;
3447   const orc_union16 * ORC_RESTRICT ptr5;
3448   const orc_union16 * ORC_RESTRICT ptr6;
3449   const orc_union16 * ORC_RESTRICT ptr7;
3450   orc_union16 var36;
3451   orc_union16 var37;
3452   orc_union16 var38;
3453   orc_union16 var39;
3454   orc_union16 var40;
3455   orc_union32 var41;
3456   orc_union16 var42;
3457   orc_union16 var43;
3458   orc_union16 var44;
3459   orc_union32 var45;
3460   orc_union16 var46;
3461   orc_union32 var47;
3462   orc_union32 var48;
3463   orc_union32 var49;
3464   orc_union32 var50;
3465   orc_union16 var51;
3466
3467   ptr0 = (orc_union16 *)ex->arrays[0];
3468   ptr4 = (orc_union16 *)ex->arrays[4];
3469   ptr5 = (orc_union16 *)ex->arrays[5];
3470   ptr6 = (orc_union16 *)ex->arrays[6];
3471   ptr7 = (orc_union16 *)ex->arrays[7];
3472
3473     /* 3: loadpw */
3474     var38.i = 0x00000009; /* 9 or 4.44659e-323f */
3475     /* 10: loadpl */
3476     var41.i = ex->params[24];
3477
3478   for (i = 0; i < n; i++) {
3479     /* 0: loadw */
3480     var36 = ptr5[i];
3481     /* 1: loadw */
3482     var37 = ptr6[i];
3483     /* 2: addw */
3484     var44.i = var36.i + var37.i;
3485     /* 4: mulswl */
3486     var45.i = var44.i * var38.i;
3487     /* 5: loadw */
3488     var39 = ptr4[i];
3489     /* 6: loadw */
3490     var40 = ptr7[i];
3491     /* 7: addw */
3492     var46.i = var39.i + var40.i;
3493     /* 8: convswl */
3494     var47.i = var46.i;
3495     /* 9: subl */
3496     var48.i = var45.i - var47.i;
3497     /* 11: addl */
3498     var49.i = var48.i + var41.i;
3499     /* 12: shrsl */
3500     var50.i = var49.i >> ex->params[25];
3501     /* 13: convlw */
3502     var51.i = var50.i;
3503     /* 14: loadw */
3504     var42 = ptr0[i];
3505     /* 15: subw */
3506     var43.i = var42.i - var51.i;
3507     /* 16: storew */
3508     ptr0[i] = var43;
3509   }
3510
3511 }
3512
3513 void
3514 orc_mas4_across_sub_s16_1991_ip (int16_t * d1, const int16_t * s1, const int16_t * s2, const int16_t * s3, const int16_t * s4, int p1, int p2, int n)
3515 {
3516   OrcExecutor _ex, *ex = &_ex;
3517   static int p_inited = 0;
3518   static OrcProgram *p = 0;
3519   void (*func) (OrcExecutor *);
3520
3521   if (!p_inited) {
3522     orc_once_mutex_lock ();
3523     if (!p_inited) {
3524       OrcCompileResult result;
3525
3526       p = orc_program_new ();
3527       orc_program_set_name (p, "orc_mas4_across_sub_s16_1991_ip");
3528       orc_program_set_backup_function (p, _backup_orc_mas4_across_sub_s16_1991_ip);
3529       orc_program_add_destination (p, 2, "d1");
3530       orc_program_add_source (p, 2, "s1");
3531       orc_program_add_source (p, 2, "s2");
3532       orc_program_add_source (p, 2, "s3");
3533       orc_program_add_source (p, 2, "s4");
3534       orc_program_add_constant (p, 4, 0x00000009, "c1");
3535       orc_program_add_parameter (p, 4, "p1");
3536       orc_program_add_parameter (p, 4, "p2");
3537       orc_program_add_temporary (p, 2, "t1");
3538       orc_program_add_temporary (p, 2, "t2");
3539       orc_program_add_temporary (p, 4, "t3");
3540       orc_program_add_temporary (p, 4, "t4");
3541
3542       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S3, ORC_VAR_D1);
3543       orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
3544       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_S4, ORC_VAR_D1);
3545       orc_program_append_2 (p, "convswl", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
3546       orc_program_append_2 (p, "subl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4, ORC_VAR_D1);
3547       orc_program_append_2 (p, "addl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_P1, ORC_VAR_D1);
3548       orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_P2, ORC_VAR_D1);
3549       orc_program_append_2 (p, "convlw", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_D1, ORC_VAR_D1);
3550       orc_program_append_2 (p, "subw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1);
3551
3552       result = orc_program_compile (p);
3553     }
3554     p_inited = TRUE;
3555     orc_once_mutex_unlock ();
3556   }
3557   ex->program = p;
3558
3559   ex->n = n;
3560   ex->arrays[ORC_VAR_D1] = d1;
3561   ex->arrays[ORC_VAR_S1] = (void *)s1;
3562   ex->arrays[ORC_VAR_S2] = (void *)s2;
3563   ex->arrays[ORC_VAR_S3] = (void *)s3;
3564   ex->arrays[ORC_VAR_S4] = (void *)s4;
3565   ex->params[ORC_VAR_P1] = p1;
3566   ex->params[ORC_VAR_P2] = p2;
3567
3568   func = p->code_exec;
3569   func (ex);
3570 }
3571 #endif
3572
3573
3574 /* orc_subtract_s16 */
3575 #ifdef DISABLE_ORC
3576 void
3577 orc_subtract_s16 (int16_t * d1, const int16_t * s1, const int16_t * s2, int n){
3578   int i;
3579   orc_union16 * ORC_RESTRICT ptr0;
3580   const orc_union16 * ORC_RESTRICT ptr4;
3581   const orc_union16 * ORC_RESTRICT ptr5;
3582   orc_union16 var32;
3583   orc_union16 var33;
3584   orc_union16 var34;
3585
3586   ptr0 = (orc_union16 *)d1;
3587   ptr4 = (orc_union16 *)s1;
3588   ptr5 = (orc_union16 *)s2;
3589
3590
3591   for (i = 0; i < n; i++) {
3592     /* 0: loadw */
3593     var32 = ptr4[i];
3594     /* 1: loadw */
3595     var33 = ptr5[i];
3596     /* 2: subw */
3597     var34.i = var32.i - var33.i;
3598     /* 3: storew */
3599     ptr0[i] = var34;
3600   }
3601
3602 }
3603
3604 #else
3605 static void
3606 _backup_orc_subtract_s16 (OrcExecutor * ORC_RESTRICT ex)
3607 {
3608   int i;
3609   int n = ex->n;
3610   orc_union16 * ORC_RESTRICT ptr0;
3611   const orc_union16 * ORC_RESTRICT ptr4;
3612   const orc_union16 * ORC_RESTRICT ptr5;
3613   orc_union16 var32;
3614   orc_union16 var33;
3615   orc_union16 var34;
3616
3617   ptr0 = (orc_union16 *)ex->arrays[0];
3618   ptr4 = (orc_union16 *)ex->arrays[4];
3619   ptr5 = (orc_union16 *)ex->arrays[5];
3620
3621
3622   for (i = 0; i < n; i++) {
3623     /* 0: loadw */
3624     var32 = ptr4[i];
3625     /* 1: loadw */
3626     var33 = ptr5[i];
3627     /* 2: subw */
3628     var34.i = var32.i - var33.i;
3629     /* 3: storew */
3630     ptr0[i] = var34;
3631   }
3632
3633 }
3634
3635 void
3636 orc_subtract_s16 (int16_t * d1, const int16_t * s1, const int16_t * s2, int n)
3637 {
3638   OrcExecutor _ex, *ex = &_ex;
3639   static int p_inited = 0;
3640   static OrcProgram *p = 0;
3641   void (*func) (OrcExecutor *);
3642
3643   if (!p_inited) {
3644     orc_once_mutex_lock ();
3645     if (!p_inited) {
3646       OrcCompileResult result;
3647
3648       p = orc_program_new ();
3649       orc_program_set_name (p, "orc_subtract_s16");
3650       orc_program_set_backup_function (p, _backup_orc_subtract_s16);
3651       orc_program_add_destination (p, 2, "d1");
3652       orc_program_add_source (p, 2, "s1");
3653       orc_program_add_source (p, 2, "s2");
3654
3655       orc_program_append_2 (p, "subw", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_S2, ORC_VAR_D1);
3656
3657       result = orc_program_compile (p);
3658     }
3659     p_inited = TRUE;
3660     orc_once_mutex_unlock ();
3661   }
3662   ex->program = p;
3663
3664   ex->n = n;
3665   ex->arrays[ORC_VAR_D1] = d1;
3666   ex->arrays[ORC_VAR_S1] = (void *)s1;
3667   ex->arrays[ORC_VAR_S2] = (void *)s2;
3668
3669   func = p->code_exec;
3670   func (ex);
3671 }
3672 #endif
3673
3674
3675 /* orc_add_s16_u8 */
3676 #ifdef DISABLE_ORC
3677 void
3678 orc_add_s16_u8 (int16_t * d1, const int16_t * s1, const orc_uint8 * s2, int n){
3679   int i;
3680   orc_union16 * ORC_RESTRICT ptr0;
3681   const orc_union16 * ORC_RESTRICT ptr4;
3682   const orc_int8 * ORC_RESTRICT ptr5;
3683   orc_int8 var33;
3684   orc_union16 var34;
3685   orc_union16 var35;
3686   orc_union16 var36;
3687
3688   ptr0 = (orc_union16 *)d1;
3689   ptr4 = (orc_union16 *)s1;
3690   ptr5 = (orc_int8 *)s2;
3691
3692
3693   for (i = 0; i < n; i++) {
3694     /* 0: loadb */
3695     var33 = ptr5[i];
3696     /* 1: convubw */
3697     var36.i = (orc_uint8)var33;
3698     /* 2: loadw */
3699     var34 = ptr4[i];
3700     /* 3: addw */
3701     var35.i = var36.i + var34.i;
3702     /* 4: storew */
3703     ptr0[i] = var35;
3704   }
3705
3706 }
3707
3708 #else
3709 static void
3710 _backup_orc_add_s16_u8 (OrcExecutor * ORC_RESTRICT ex)
3711 {
3712   int i;
3713   int n = ex->n;
3714   orc_union16 * ORC_RESTRICT ptr0;
3715   const orc_union16 * ORC_RESTRICT ptr4;
3716   const orc_int8 * ORC_RESTRICT ptr5;
3717   orc_int8 var33;
3718   orc_union16 var34;
3719   orc_union16 var35;
3720   orc_union16 var36;
3721
3722   ptr0 = (orc_union16 *)ex->arrays[0];
3723   ptr4 = (orc_union16 *)ex->arrays[4];
3724   ptr5 = (orc_int8 *)ex->arrays[5];
3725
3726
3727   for (i = 0; i < n; i++) {
3728     /* 0: loadb */
3729     var33 = ptr5[i];
3730     /* 1: convubw */
3731     var36.i = (orc_uint8)var33;
3732     /* 2: loadw */
3733     var34 = ptr4[i];
3734     /* 3: addw */
3735     var35.i = var36.i + var34.i;
3736     /* 4: storew */
3737     ptr0[i] = var35;
3738   }
3739
3740 }
3741
3742 void
3743 orc_add_s16_u8 (int16_t * d1, const int16_t * s1, const orc_uint8 * s2, int n)
3744 {
3745   OrcExecutor _ex, *ex = &_ex;
3746   static int p_inited = 0;
3747   static OrcProgram *p = 0;
3748   void (*func) (OrcExecutor *);
3749
3750   if (!p_inited) {
3751     orc_once_mutex_lock ();
3752     if (!p_inited) {
3753       OrcCompileResult result;
3754
3755       p = orc_program_new ();
3756       orc_program_set_name (p, "orc_add_s16_u8");
3757       orc_program_set_backup_function (p, _backup_orc_add_s16_u8);
3758       orc_program_add_destination (p, 2, "d1");
3759       orc_program_add_source (p, 2, "s1");
3760       orc_program_add_source (p, 1, "s2");
3761       orc_program_add_temporary (p, 2, "t1");
3762
3763       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_D1, ORC_VAR_D1);
3764       orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1);
3765
3766       result = orc_program_compile (p);
3767     }
3768     p_inited = TRUE;
3769     orc_once_mutex_unlock ();
3770   }
3771   ex->program = p;
3772
3773   ex->n = n;
3774   ex->arrays[ORC_VAR_D1] = d1;
3775   ex->arrays[ORC_VAR_S1] = (void *)s1;
3776   ex->arrays[ORC_VAR_S2] = (void *)s2;
3777
3778   func = p->code_exec;
3779   func (ex);
3780 }
3781 #endif
3782
3783
3784 /* orc_add_s16_u8_2d */
3785 #ifdef DISABLE_ORC
3786 void
3787 orc_add_s16_u8_2d (int16_t * d1, int d1_stride, const orc_uint8 * s1, int s1_stride, int n, int m){
3788   int i;
3789   int j;
3790   orc_union16 * ORC_RESTRICT ptr0;
3791   const orc_int8 * ORC_RESTRICT ptr4;
3792   orc_int8 var33;
3793   orc_union16 var34;
3794   orc_union16 var35;
3795   orc_union16 var36;
3796
3797   for (j = 0; j < m; j++) {
3798     ptr0 = ORC_PTR_OFFSET(d1, d1_stride * j);
3799     ptr4 = ORC_PTR_OFFSET(s1, s1_stride * j);
3800
3801
3802     for (i = 0; i < n; i++) {
3803       /* 0: loadb */
3804       var33 = ptr4[i];
3805       /* 1: convubw */
3806       var36.i = (orc_uint8)var33;
3807       /* 2: loadw */
3808       var34 = ptr0[i];
3809       /* 3: addw */
3810       var35.i = var34.i + var36.i;
3811       /* 4: storew */
3812       ptr0[i] = var35;
3813     }
3814   }
3815
3816 }
3817
3818 #else
3819 static void
3820 _backup_orc_add_s16_u8_2d (OrcExecutor * ORC_RESTRICT ex)
3821 {
3822   int i;
3823   int j;
3824   int n = ex->n;
3825   int m = ex->params[ORC_VAR_A1];
3826   orc_union16 * ORC_RESTRICT ptr0;
3827   const orc_int8 * ORC_RESTRICT ptr4;
3828   orc_int8 var33;
3829   orc_union16 var34;
3830   orc_union16 var35;
3831   orc_union16 var36;
3832
3833   for (j = 0; j < m; j++) {
3834     ptr0 = ORC_PTR_OFFSET(ex->arrays[0], ex->params[0] * j);
3835     ptr4 = ORC_PTR_OFFSET(ex->arrays[4], ex->params[4] * j);
3836
3837
3838     for (i = 0; i < n; i++) {
3839       /* 0: loadb */
3840       var33 = ptr4[i];
3841       /* 1: convubw */
3842       var36.i = (orc_uint8)var33;
3843       /* 2: loadw */
3844       var34 = ptr0[i];
3845       /* 3: addw */
3846       var35.i = var34.i + var36.i;
3847       /* 4: storew */
3848       ptr0[i] = var35;
3849     }
3850   }
3851
3852 }
3853
3854 void
3855 orc_add_s16_u8_2d (int16_t * d1, int d1_stride, const orc_uint8 * s1, int s1_stride, int n, int m)
3856 {
3857   OrcExecutor _ex, *ex = &_ex;
3858   static int p_inited = 0;
3859   static OrcProgram *p = 0;
3860   void (*func) (OrcExecutor *);
3861
3862   if (!p_inited) {
3863     orc_once_mutex_lock ();
3864     if (!p_inited) {
3865       OrcCompileResult result;
3866
3867       p = orc_program_new ();
3868       orc_program_set_2d (p);
3869       orc_program_set_name (p, "orc_add_s16_u8_2d");
3870       orc_program_set_backup_function (p, _backup_orc_add_s16_u8_2d);
3871       orc_program_add_destination (p, 2, "d1");
3872       orc_program_add_source (p, 1, "s1");
3873       orc_program_add_temporary (p, 2, "t1");
3874
3875       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
3876       orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1);
3877
3878       result = orc_program_compile (p);
3879     }
3880     p_inited = TRUE;
3881     orc_once_mutex_unlock ();
3882   }
3883   ex->program = p;
3884
3885   ex->n = n;
3886   ORC_EXECUTOR_M(ex) = m;
3887   ex->arrays[ORC_VAR_D1] = d1;
3888   ex->params[ORC_VAR_D1] = d1_stride;
3889   ex->arrays[ORC_VAR_S1] = (void *)s1;
3890   ex->params[ORC_VAR_S1] = s1_stride;
3891
3892   func = p->code_exec;
3893   func (ex);
3894 }
3895 #endif
3896
3897
3898 /* orc_convert_s16_u8 */
3899 #ifdef DISABLE_ORC
3900 void
3901 orc_convert_s16_u8 (orc_uint16 * d1, const orc_uint8 * s1, int n){
3902   int i;
3903   orc_union16 * ORC_RESTRICT ptr0;
3904   const orc_int8 * ORC_RESTRICT ptr4;
3905   orc_int8 var32;
3906   orc_union16 var33;
3907
3908   ptr0 = (orc_union16 *)d1;
3909   ptr4 = (orc_int8 *)s1;
3910
3911
3912   for (i = 0; i < n; i++) {
3913     /* 0: loadb */
3914     var32 = ptr4[i];
3915     /* 1: convubw */
3916     var33.i = (orc_uint8)var32;
3917     /* 2: storew */
3918     ptr0[i] = var33;
3919   }
3920
3921 }
3922
3923 #else
3924 static void
3925 _backup_orc_convert_s16_u8 (OrcExecutor * ORC_RESTRICT ex)
3926 {
3927   int i;
3928   int n = ex->n;
3929   orc_union16 * ORC_RESTRICT ptr0;
3930   const orc_int8 * ORC_RESTRICT ptr4;
3931   orc_int8 var32;
3932   orc_union16 var33;
3933
3934   ptr0 = (orc_union16 *)ex->arrays[0];
3935   ptr4 = (orc_int8 *)ex->arrays[4];
3936
3937
3938   for (i = 0; i < n; i++) {
3939     /* 0: loadb */
3940     var32 = ptr4[i];
3941     /* 1: convubw */
3942     var33.i = (orc_uint8)var32;
3943     /* 2: storew */
3944     ptr0[i] = var33;
3945   }
3946
3947 }
3948
3949 void
3950 orc_convert_s16_u8 (orc_uint16 * d1, const orc_uint8 * s1, int n)
3951 {
3952   OrcExecutor _ex, *ex = &_ex;
3953   static int p_inited = 0;
3954   static OrcProgram *p = 0;
3955   void (*func) (OrcExecutor *);
3956
3957   if (!p_inited) {
3958     orc_once_mutex_lock ();
3959     if (!p_inited) {
3960       OrcCompileResult result;
3961
3962       p = orc_program_new ();
3963       orc_program_set_name (p, "orc_convert_s16_u8");
3964       orc_program_set_backup_function (p, _backup_orc_convert_s16_u8);
3965       orc_program_add_destination (p, 2, "d1");
3966       orc_program_add_source (p, 1, "s1");
3967
3968       orc_program_append_2 (p, "convubw", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
3969
3970       result = orc_program_compile (p);
3971     }
3972     p_inited = TRUE;
3973     orc_once_mutex_unlock ();
3974   }
3975   ex->program = p;
3976
3977   ex->n = n;
3978   ex->arrays[ORC_VAR_D1] = d1;
3979   ex->arrays[ORC_VAR_S1] = (void *)s1;
3980
3981   func = p->code_exec;
3982   func (ex);
3983 }
3984 #endif
3985
3986
3987 /* orc_convert_u8_s16 */
3988 #ifdef DISABLE_ORC
3989 void
3990 orc_convert_u8_s16 (orc_uint8 * d1, const int16_t * s1, int n){
3991   int i;
3992   orc_int8 * ORC_RESTRICT ptr0;
3993   const orc_union16 * ORC_RESTRICT ptr4;
3994   orc_union16 var32;
3995   orc_int8 var33;
3996
3997   ptr0 = (orc_int8 *)d1;
3998   ptr4 = (orc_union16 *)s1;
3999
4000
4001   for (i = 0; i < n; i++) {
4002     /* 0: loadw */
4003     var32 = ptr4[i];
4004     /* 1: convsuswb */
4005     var33 = ORC_CLAMP_UB(var32.i);
4006     /* 2: storeb */
4007     ptr0[i] = var33;
4008   }
4009
4010 }
4011
4012 #else
4013 static void
4014 _backup_orc_convert_u8_s16 (OrcExecutor * ORC_RESTRICT ex)
4015 {
4016   int i;
4017   int n = ex->n;
4018   orc_int8 * ORC_RESTRICT ptr0;
4019   const orc_union16 * ORC_RESTRICT ptr4;
4020   orc_union16 var32;
4021   orc_int8 var33;
4022
4023   ptr0 = (orc_int8 *)ex->arrays[0];
4024   ptr4 = (orc_union16 *)ex->arrays[4];
4025
4026
4027   for (i = 0; i < n; i++) {
4028     /* 0: loadw */
4029     var32 = ptr4[i];
4030     /* 1: convsuswb */
4031     var33 = ORC_CLAMP_UB(var32.i);
4032     /* 2: storeb */
4033     ptr0[i] = var33;
4034   }
4035
4036 }
4037
4038 void
4039 orc_convert_u8_s16 (orc_uint8 * d1, const int16_t * s1, int n)
4040 {
4041   OrcExecutor _ex, *ex = &_ex;
4042   static int p_inited = 0;
4043   static OrcProgram *p = 0;
4044   void (*func) (OrcExecutor *);
4045
4046   if (!p_inited) {
4047     orc_once_mutex_lock ();
4048     if (!p_inited) {
4049       OrcCompileResult result;
4050
4051       p = orc_program_new ();
4052       orc_program_set_name (p, "orc_convert_u8_s16");
4053       orc_program_set_backup_function (p, _backup_orc_convert_u8_s16);
4054       orc_program_add_destination (p, 1, "d1");
4055       orc_program_add_source (p, 2, "s1");
4056
4057       orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
4058
4059       result = orc_program_compile (p);
4060     }
4061     p_inited = TRUE;
4062     orc_once_mutex_unlock ();
4063   }
4064   ex->program = p;
4065
4066   ex->n = n;
4067   ex->arrays[ORC_VAR_D1] = d1;
4068   ex->arrays[ORC_VAR_S1] = (void *)s1;
4069
4070   func = p->code_exec;
4071   func (ex);
4072 }
4073 #endif
4074
4075
4076 /* orc_offsetconvert_u8_s16 */
4077 #ifdef DISABLE_ORC
4078 void
4079 orc_offsetconvert_u8_s16 (orc_uint8 * d1, const int16_t * s1, int n){
4080   int i;
4081   orc_int8 * ORC_RESTRICT ptr0;
4082   const orc_union16 * ORC_RESTRICT ptr4;
4083   orc_union16 var33;
4084   orc_union16 var34;
4085   orc_int8 var35;
4086   orc_union16 var36;
4087
4088   ptr0 = (orc_int8 *)d1;
4089   ptr4 = (orc_union16 *)s1;
4090
4091     /* 1: loadpw */
4092     var34.i = 0x00000080; /* 128 or 6.32404e-322f */
4093
4094   for (i = 0; i < n; i++) {
4095     /* 0: loadw */
4096     var33 = ptr4[i];
4097     /* 2: addw */
4098     var36.i = var33.i + var34.i;
4099     /* 3: convsuswb */
4100     var35 = ORC_CLAMP_UB(var36.i);
4101     /* 4: storeb */
4102     ptr0[i] = var35;
4103   }
4104
4105 }
4106
4107 #else
4108 static void
4109 _backup_orc_offsetconvert_u8_s16 (OrcExecutor * ORC_RESTRICT ex)
4110 {
4111   int i;
4112   int n = ex->n;
4113   orc_int8 * ORC_RESTRICT ptr0;
4114   const orc_union16 * ORC_RESTRICT ptr4;
4115   orc_union16 var33;
4116   orc_union16 var34;
4117   orc_int8 var35;
4118   orc_union16 var36;
4119
4120   ptr0 = (orc_int8 *)ex->arrays[0];
4121   ptr4 = (orc_union16 *)ex->arrays[4];
4122
4123     /* 1: loadpw */
4124     var34.i = 0x00000080; /* 128 or 6.32404e-322f */
4125
4126   for (i = 0; i < n; i++) {
4127     /* 0: loadw */
4128     var33 = ptr4[i];
4129     /* 2: addw */
4130     var36.i = var33.i + var34.i;
4131     /* 3: convsuswb */
4132     var35 = ORC_CLAMP_UB(var36.i);
4133     /* 4: storeb */
4134     ptr0[i] = var35;
4135   }
4136
4137 }
4138
4139 void
4140 orc_offsetconvert_u8_s16 (orc_uint8 * d1, const int16_t * s1, int n)
4141 {
4142   OrcExecutor _ex, *ex = &_ex;
4143   static int p_inited = 0;
4144   static OrcProgram *p = 0;
4145   void (*func) (OrcExecutor *);
4146
4147   if (!p_inited) {
4148     orc_once_mutex_lock ();
4149     if (!p_inited) {
4150       OrcCompileResult result;
4151
4152       p = orc_program_new ();
4153       orc_program_set_name (p, "orc_offsetconvert_u8_s16");
4154       orc_program_set_backup_function (p, _backup_orc_offsetconvert_u8_s16);
4155       orc_program_add_destination (p, 1, "d1");
4156       orc_program_add_source (p, 2, "s1");
4157       orc_program_add_constant (p, 4, 0x00000080, "c1");
4158       orc_program_add_temporary (p, 2, "t1");
4159
4160       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_C1, ORC_VAR_D1);
4161       orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
4162
4163       result = orc_program_compile (p);
4164     }
4165     p_inited = TRUE;
4166     orc_once_mutex_unlock ();
4167   }
4168   ex->program = p;
4169
4170   ex->n = n;
4171   ex->arrays[ORC_VAR_D1] = d1;
4172   ex->arrays[ORC_VAR_S1] = (void *)s1;
4173
4174   func = p->code_exec;
4175   func (ex);
4176 }
4177 #endif
4178
4179
4180 /* orc_offsetconvert_s16_u8 */
4181 #ifdef DISABLE_ORC
4182 void
4183 orc_offsetconvert_s16_u8 (int16_t * d1, const orc_uint8 * s1, int n){
4184   int i;
4185   orc_union16 * ORC_RESTRICT ptr0;
4186   const orc_int8 * ORC_RESTRICT ptr4;
4187   orc_int8 var33;
4188   orc_union16 var34;
4189   orc_union16 var35;
4190   orc_union16 var36;
4191
4192   ptr0 = (orc_union16 *)d1;
4193   ptr4 = (orc_int8 *)s1;
4194
4195     /* 2: loadpw */
4196     var34.i = 0x00000080; /* 128 or 6.32404e-322f */
4197
4198   for (i = 0; i < n; i++) {
4199     /* 0: loadb */
4200     var33 = ptr4[i];
4201     /* 1: convubw */
4202     var36.i = (orc_uint8)var33;
4203     /* 3: subw */
4204     var35.i = var36.i - var34.i;
4205     /* 4: storew */
4206     ptr0[i] = var35;
4207   }
4208
4209 }
4210
4211 #else
4212 static void
4213 _backup_orc_offsetconvert_s16_u8 (OrcExecutor * ORC_RESTRICT ex)
4214 {
4215   int i;
4216   int n = ex->n;
4217   orc_union16 * ORC_RESTRICT ptr0;
4218   const orc_int8 * ORC_RESTRICT ptr4;
4219   orc_int8 var33;
4220   orc_union16 var34;
4221   orc_union16 var35;
4222   orc_union16 var36;
4223
4224   ptr0 = (orc_union16 *)ex->arrays[0];
4225   ptr4 = (orc_int8 *)ex->arrays[4];
4226
4227     /* 2: loadpw */
4228     var34.i = 0x00000080; /* 128 or 6.32404e-322f */
4229
4230   for (i = 0; i < n; i++) {
4231     /* 0: loadb */
4232     var33 = ptr4[i];
4233     /* 1: convubw */
4234     var36.i = (orc_uint8)var33;
4235     /* 3: subw */
4236     var35.i = var36.i - var34.i;
4237     /* 4: storew */
4238     ptr0[i] = var35;
4239   }
4240
4241 }
4242
4243 void
4244 orc_offsetconvert_s16_u8 (int16_t * d1, const orc_uint8 * s1, int n)
4245 {
4246   OrcExecutor _ex, *ex = &_ex;
4247   static int p_inited = 0;
4248   static OrcProgram *p = 0;
4249   void (*func) (OrcExecutor *);
4250
4251   if (!p_inited) {
4252     orc_once_mutex_lock ();
4253     if (!p_inited) {
4254       OrcCompileResult result;
4255
4256       p = orc_program_new ();
4257       orc_program_set_name (p, "orc_offsetconvert_s16_u8");
4258       orc_program_set_backup_function (p, _backup_orc_offsetconvert_s16_u8);
4259       orc_program_add_destination (p, 2, "d1");
4260       orc_program_add_source (p, 1, "s1");
4261       orc_program_add_constant (p, 4, 0x00000080, "c1");
4262       orc_program_add_temporary (p, 2, "t1");
4263
4264       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
4265       orc_program_append_2 (p, "subw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
4266
4267       result = orc_program_compile (p);
4268     }
4269     p_inited = TRUE;
4270     orc_once_mutex_unlock ();
4271   }
4272   ex->program = p;
4273
4274   ex->n = n;
4275   ex->arrays[ORC_VAR_D1] = d1;
4276   ex->arrays[ORC_VAR_S1] = (void *)s1;
4277
4278   func = p->code_exec;
4279   func (ex);
4280 }
4281 #endif
4282
4283
4284 /* orc_subtract_s16_u8 */
4285 #ifdef DISABLE_ORC
4286 void
4287 orc_subtract_s16_u8 (int16_t * d1, const int16_t * s1, const orc_uint8 * s2, int n){
4288   int i;
4289   orc_union16 * ORC_RESTRICT ptr0;
4290   const orc_union16 * ORC_RESTRICT ptr4;
4291   const orc_int8 * ORC_RESTRICT ptr5;
4292   orc_int8 var33;
4293   orc_union16 var34;
4294   orc_union16 var35;
4295   orc_union16 var36;
4296
4297   ptr0 = (orc_union16 *)d1;
4298   ptr4 = (orc_union16 *)s1;
4299   ptr5 = (orc_int8 *)s2;
4300
4301
4302   for (i = 0; i < n; i++) {
4303     /* 0: loadb */
4304     var33 = ptr5[i];
4305     /* 1: convubw */
4306     var36.i = (orc_uint8)var33;
4307     /* 2: loadw */
4308     var34 = ptr4[i];
4309     /* 3: subw */
4310     var35.i = var34.i - var36.i;
4311     /* 4: storew */
4312     ptr0[i] = var35;
4313   }
4314
4315 }
4316
4317 #else
4318 static void
4319 _backup_orc_subtract_s16_u8 (OrcExecutor * ORC_RESTRICT ex)
4320 {
4321   int i;
4322   int n = ex->n;
4323   orc_union16 * ORC_RESTRICT ptr0;
4324   const orc_union16 * ORC_RESTRICT ptr4;
4325   const orc_int8 * ORC_RESTRICT ptr5;
4326   orc_int8 var33;
4327   orc_union16 var34;
4328   orc_union16 var35;
4329   orc_union16 var36;
4330
4331   ptr0 = (orc_union16 *)ex->arrays[0];
4332   ptr4 = (orc_union16 *)ex->arrays[4];
4333   ptr5 = (orc_int8 *)ex->arrays[5];
4334
4335
4336   for (i = 0; i < n; i++) {
4337     /* 0: loadb */
4338     var33 = ptr5[i];
4339     /* 1: convubw */
4340     var36.i = (orc_uint8)var33;
4341     /* 2: loadw */
4342     var34 = ptr4[i];
4343     /* 3: subw */
4344     var35.i = var34.i - var36.i;
4345     /* 4: storew */
4346     ptr0[i] = var35;
4347   }
4348
4349 }
4350
4351 void
4352 orc_subtract_s16_u8 (int16_t * d1, const int16_t * s1, const orc_uint8 * s2, int n)
4353 {
4354   OrcExecutor _ex, *ex = &_ex;
4355   static int p_inited = 0;
4356   static OrcProgram *p = 0;
4357   void (*func) (OrcExecutor *);
4358
4359   if (!p_inited) {
4360     orc_once_mutex_lock ();
4361     if (!p_inited) {
4362       OrcCompileResult result;
4363
4364       p = orc_program_new ();
4365       orc_program_set_name (p, "orc_subtract_s16_u8");
4366       orc_program_set_backup_function (p, _backup_orc_subtract_s16_u8);
4367       orc_program_add_destination (p, 2, "d1");
4368       orc_program_add_source (p, 2, "s1");
4369       orc_program_add_source (p, 1, "s2");
4370       orc_program_add_temporary (p, 2, "t1");
4371
4372       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_D1, ORC_VAR_D1);
4373       orc_program_append_2 (p, "subw", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_T1, ORC_VAR_D1);
4374
4375       result = orc_program_compile (p);
4376     }
4377     p_inited = TRUE;
4378     orc_once_mutex_unlock ();
4379   }
4380   ex->program = p;
4381
4382   ex->n = n;
4383   ex->arrays[ORC_VAR_D1] = d1;
4384   ex->arrays[ORC_VAR_S1] = (void *)s1;
4385   ex->arrays[ORC_VAR_S2] = (void *)s2;
4386
4387   func = p->code_exec;
4388   func (ex);
4389 }
4390 #endif
4391
4392
4393 /* orc_multiply_and_add_s16_u8 */
4394 #ifdef DISABLE_ORC
4395 void
4396 orc_multiply_and_add_s16_u8 (int16_t * d1, const int16_t * s1, const orc_uint8 * s2, int n){
4397   int i;
4398   orc_union16 * ORC_RESTRICT ptr0;
4399   const orc_union16 * ORC_RESTRICT ptr4;
4400   const orc_int8 * ORC_RESTRICT ptr5;
4401   orc_int8 var33;
4402   orc_union16 var34;
4403   orc_union16 var35;
4404   orc_union16 var36;
4405   orc_union16 var37;
4406   orc_union16 var38;
4407
4408   ptr0 = (orc_union16 *)d1;
4409   ptr4 = (orc_union16 *)s1;
4410   ptr5 = (orc_int8 *)s2;
4411
4412
4413   for (i = 0; i < n; i++) {
4414     /* 0: loadb */
4415     var33 = ptr5[i];
4416     /* 1: convubw */
4417     var37.i = (orc_uint8)var33;
4418     /* 2: loadw */
4419     var34 = ptr4[i];
4420     /* 3: mullw */
4421     var38.i = (var37.i * var34.i) & 0xffff;
4422     /* 4: loadw */
4423     var35 = ptr0[i];
4424     /* 5: addw */
4425     var36.i = var35.i + var38.i;
4426     /* 6: storew */
4427     ptr0[i] = var36;
4428   }
4429
4430 }
4431
4432 #else
4433 static void
4434 _backup_orc_multiply_and_add_s16_u8 (OrcExecutor * ORC_RESTRICT ex)
4435 {
4436   int i;
4437   int n = ex->n;
4438   orc_union16 * ORC_RESTRICT ptr0;
4439   const orc_union16 * ORC_RESTRICT ptr4;
4440   const orc_int8 * ORC_RESTRICT ptr5;
4441   orc_int8 var33;
4442   orc_union16 var34;
4443   orc_union16 var35;
4444   orc_union16 var36;
4445   orc_union16 var37;
4446   orc_union16 var38;
4447
4448   ptr0 = (orc_union16 *)ex->arrays[0];
4449   ptr4 = (orc_union16 *)ex->arrays[4];
4450   ptr5 = (orc_int8 *)ex->arrays[5];
4451
4452
4453   for (i = 0; i < n; i++) {
4454     /* 0: loadb */
4455     var33 = ptr5[i];
4456     /* 1: convubw */
4457     var37.i = (orc_uint8)var33;
4458     /* 2: loadw */
4459     var34 = ptr4[i];
4460     /* 3: mullw */
4461     var38.i = (var37.i * var34.i) & 0xffff;
4462     /* 4: loadw */
4463     var35 = ptr0[i];
4464     /* 5: addw */
4465     var36.i = var35.i + var38.i;
4466     /* 6: storew */
4467     ptr0[i] = var36;
4468   }
4469
4470 }
4471
4472 void
4473 orc_multiply_and_add_s16_u8 (int16_t * d1, const int16_t * s1, const orc_uint8 * s2, int n)
4474 {
4475   OrcExecutor _ex, *ex = &_ex;
4476   static int p_inited = 0;
4477   static OrcProgram *p = 0;
4478   void (*func) (OrcExecutor *);
4479
4480   if (!p_inited) {
4481     orc_once_mutex_lock ();
4482     if (!p_inited) {
4483       OrcCompileResult result;
4484
4485       p = orc_program_new ();
4486       orc_program_set_name (p, "orc_multiply_and_add_s16_u8");
4487       orc_program_set_backup_function (p, _backup_orc_multiply_and_add_s16_u8);
4488       orc_program_add_destination (p, 2, "d1");
4489       orc_program_add_source (p, 2, "s1");
4490       orc_program_add_source (p, 1, "s2");
4491       orc_program_add_temporary (p, 2, "t1");
4492
4493       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_D1, ORC_VAR_D1);
4494       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1);
4495       orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1);
4496
4497       result = orc_program_compile (p);
4498     }
4499     p_inited = TRUE;
4500     orc_once_mutex_unlock ();
4501   }
4502   ex->program = p;
4503
4504   ex->n = n;
4505   ex->arrays[ORC_VAR_D1] = d1;
4506   ex->arrays[ORC_VAR_S1] = (void *)s1;
4507   ex->arrays[ORC_VAR_S2] = (void *)s2;
4508
4509   func = p->code_exec;
4510   func (ex);
4511 }
4512 #endif
4513
4514
4515 /* orc_splat_s16_ns */
4516 #ifdef DISABLE_ORC
4517 void
4518 orc_splat_s16_ns (int16_t * d1, int p1, int n){
4519   int i;
4520   orc_union16 * ORC_RESTRICT ptr0;
4521   orc_union16 var32;
4522   orc_union16 var33;
4523
4524   ptr0 = (orc_union16 *)d1;
4525
4526     /* 0: loadpw */
4527     var32.i = p1;
4528
4529   for (i = 0; i < n; i++) {
4530     /* 1: copyw */
4531     var33.i = var32.i;
4532     /* 2: storew */
4533     ptr0[i] = var33;
4534   }
4535
4536 }
4537
4538 #else
4539 static void
4540 _backup_orc_splat_s16_ns (OrcExecutor * ORC_RESTRICT ex)
4541 {
4542   int i;
4543   int n = ex->n;
4544   orc_union16 * ORC_RESTRICT ptr0;
4545   orc_union16 var32;
4546   orc_union16 var33;
4547
4548   ptr0 = (orc_union16 *)ex->arrays[0];
4549
4550     /* 0: loadpw */
4551     var32.i = ex->params[24];
4552
4553   for (i = 0; i < n; i++) {
4554     /* 1: copyw */
4555     var33.i = var32.i;
4556     /* 2: storew */
4557     ptr0[i] = var33;
4558   }
4559
4560 }
4561
4562 void
4563 orc_splat_s16_ns (int16_t * d1, int p1, int n)
4564 {
4565   OrcExecutor _ex, *ex = &_ex;
4566   static int p_inited = 0;
4567   static OrcProgram *p = 0;
4568   void (*func) (OrcExecutor *);
4569
4570   if (!p_inited) {
4571     orc_once_mutex_lock ();
4572     if (!p_inited) {
4573       OrcCompileResult result;
4574
4575       p = orc_program_new ();
4576       orc_program_set_name (p, "orc_splat_s16_ns");
4577       orc_program_set_backup_function (p, _backup_orc_splat_s16_ns);
4578       orc_program_add_destination (p, 2, "d1");
4579       orc_program_add_parameter (p, 2, "p1");
4580
4581       orc_program_append_2 (p, "copyw", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1, ORC_VAR_D1);
4582
4583       result = orc_program_compile (p);
4584     }
4585     p_inited = TRUE;
4586     orc_once_mutex_unlock ();
4587   }
4588   ex->program = p;
4589
4590   ex->n = n;
4591   ex->arrays[ORC_VAR_D1] = d1;
4592   ex->params[ORC_VAR_P1] = p1;
4593
4594   func = p->code_exec;
4595   func (ex);
4596 }
4597 #endif
4598
4599
4600 /* orc_splat_s16_2d_4xn */
4601 #ifdef DISABLE_ORC
4602 void
4603 orc_splat_s16_2d_4xn (int16_t * d1, int d1_stride, int p1, int m){
4604   int i;
4605   int j;
4606   int n = 4;
4607   orc_union16 * ORC_RESTRICT ptr0;
4608   orc_union16 var32;
4609   orc_union16 var33;
4610
4611   for (j = 0; j < m; j++) {
4612     ptr0 = ORC_PTR_OFFSET(d1, d1_stride * j);
4613
4614       /* 0: loadpw */
4615         var32.i = p1;
4616
4617     for (i = 0; i < n; i++) {
4618       /* 1: copyw */
4619       var33.i = var32.i;
4620       /* 2: storew */
4621       ptr0[i] = var33;
4622     }
4623   }
4624
4625 }
4626
4627 #else
4628 static void
4629 _backup_orc_splat_s16_2d_4xn (OrcExecutor * ORC_RESTRICT ex)
4630 {
4631   int i;
4632   int j;
4633   int n = 4;
4634   int m = ex->params[ORC_VAR_A1];
4635   orc_union16 * ORC_RESTRICT ptr0;
4636   orc_union16 var32;
4637   orc_union16 var33;
4638
4639   for (j = 0; j < m; j++) {
4640     ptr0 = ORC_PTR_OFFSET(ex->arrays[0], ex->params[0] * j);
4641
4642       /* 0: loadpw */
4643         var32.i = ex->params[24];
4644
4645     for (i = 0; i < n; i++) {
4646       /* 1: copyw */
4647       var33.i = var32.i;
4648       /* 2: storew */
4649       ptr0[i] = var33;
4650     }
4651   }
4652
4653 }
4654
4655 void
4656 orc_splat_s16_2d_4xn (int16_t * d1, int d1_stride, int p1, int m)
4657 {
4658   OrcExecutor _ex, *ex = &_ex;
4659   static int p_inited = 0;
4660   static OrcProgram *p = 0;
4661   void (*func) (OrcExecutor *);
4662
4663   if (!p_inited) {
4664     orc_once_mutex_lock ();
4665     if (!p_inited) {
4666       OrcCompileResult result;
4667
4668       p = orc_program_new ();
4669       orc_program_set_constant_n (p, 4);
4670       orc_program_set_2d (p);
4671       orc_program_set_name (p, "orc_splat_s16_2d_4xn");
4672       orc_program_set_backup_function (p, _backup_orc_splat_s16_2d_4xn);
4673       orc_program_add_destination (p, 2, "d1");
4674       orc_program_add_parameter (p, 2, "p1");
4675
4676       orc_program_append_2 (p, "copyw", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1, ORC_VAR_D1);
4677
4678       result = orc_program_compile (p);
4679     }
4680     p_inited = TRUE;
4681     orc_once_mutex_unlock ();
4682   }
4683   ex->program = p;
4684
4685   ex->n = 4;
4686   ORC_EXECUTOR_M(ex) = m;
4687   ex->arrays[ORC_VAR_D1] = d1;
4688   ex->params[ORC_VAR_D1] = d1_stride;
4689   ex->params[ORC_VAR_P1] = p1;
4690
4691   func = p->code_exec;
4692   func (ex);
4693 }
4694 #endif
4695
4696
4697 /* orc_splat_s16_2d_8xn */
4698 #ifdef DISABLE_ORC
4699 void
4700 orc_splat_s16_2d_8xn (int16_t * d1, int d1_stride, int p1, int m){
4701   int i;
4702   int j;
4703   int n = 8;
4704   orc_union16 * ORC_RESTRICT ptr0;
4705   orc_union16 var32;
4706   orc_union16 var33;
4707
4708   for (j = 0; j < m; j++) {
4709     ptr0 = ORC_PTR_OFFSET(d1, d1_stride * j);
4710
4711       /* 0: loadpw */
4712         var32.i = p1;
4713
4714     for (i = 0; i < n; i++) {
4715       /* 1: copyw */
4716       var33.i = var32.i;
4717       /* 2: storew */
4718       ptr0[i] = var33;
4719     }
4720   }
4721
4722 }
4723
4724 #else
4725 static void
4726 _backup_orc_splat_s16_2d_8xn (OrcExecutor * ORC_RESTRICT ex)
4727 {
4728   int i;
4729   int j;
4730   int n = 8;
4731   int m = ex->params[ORC_VAR_A1];
4732   orc_union16 * ORC_RESTRICT ptr0;
4733   orc_union16 var32;
4734   orc_union16 var33;
4735
4736   for (j = 0; j < m; j++) {
4737     ptr0 = ORC_PTR_OFFSET(ex->arrays[0], ex->params[0] * j);
4738
4739       /* 0: loadpw */
4740         var32.i = ex->params[24];
4741
4742     for (i = 0; i < n; i++) {
4743       /* 1: copyw */
4744       var33.i = var32.i;
4745       /* 2: storew */
4746       ptr0[i] = var33;
4747     }
4748   }
4749
4750 }
4751
4752 void
4753 orc_splat_s16_2d_8xn (int16_t * d1, int d1_stride, int p1, int m)
4754 {
4755   OrcExecutor _ex, *ex = &_ex;
4756   static int p_inited = 0;
4757   static OrcProgram *p = 0;
4758   void (*func) (OrcExecutor *);
4759
4760   if (!p_inited) {
4761     orc_once_mutex_lock ();
4762     if (!p_inited) {
4763       OrcCompileResult result;
4764
4765       p = orc_program_new ();
4766       orc_program_set_constant_n (p, 8);
4767       orc_program_set_2d (p);
4768       orc_program_set_name (p, "orc_splat_s16_2d_8xn");
4769       orc_program_set_backup_function (p, _backup_orc_splat_s16_2d_8xn);
4770       orc_program_add_destination (p, 2, "d1");
4771       orc_program_add_parameter (p, 2, "p1");
4772
4773       orc_program_append_2 (p, "copyw", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1, ORC_VAR_D1);
4774
4775       result = orc_program_compile (p);
4776     }
4777     p_inited = TRUE;
4778     orc_once_mutex_unlock ();
4779   }
4780   ex->program = p;
4781
4782   ex->n = 8;
4783   ORC_EXECUTOR_M(ex) = m;
4784   ex->arrays[ORC_VAR_D1] = d1;
4785   ex->params[ORC_VAR_D1] = d1_stride;
4786   ex->params[ORC_VAR_P1] = p1;
4787
4788   func = p->code_exec;
4789   func (ex);
4790 }
4791 #endif
4792
4793
4794 /* orc_splat_s16_2d */
4795 #ifdef DISABLE_ORC
4796 void
4797 orc_splat_s16_2d (int16_t * d1, int d1_stride, int p1, int n, int m){
4798   int i;
4799   int j;
4800   orc_union16 * ORC_RESTRICT ptr0;
4801   orc_union16 var32;
4802   orc_union16 var33;
4803
4804   for (j = 0; j < m; j++) {
4805     ptr0 = ORC_PTR_OFFSET(d1, d1_stride * j);
4806
4807       /* 0: loadpw */
4808         var32.i = p1;
4809
4810     for (i = 0; i < n; i++) {
4811       /* 1: copyw */
4812       var33.i = var32.i;
4813       /* 2: storew */
4814       ptr0[i] = var33;
4815     }
4816   }
4817
4818 }
4819
4820 #else
4821 static void
4822 _backup_orc_splat_s16_2d (OrcExecutor * ORC_RESTRICT ex)
4823 {
4824   int i;
4825   int j;
4826   int n = ex->n;
4827   int m = ex->params[ORC_VAR_A1];
4828   orc_union16 * ORC_RESTRICT ptr0;
4829   orc_union16 var32;
4830   orc_union16 var33;
4831
4832   for (j = 0; j < m; j++) {
4833     ptr0 = ORC_PTR_OFFSET(ex->arrays[0], ex->params[0] * j);
4834
4835       /* 0: loadpw */
4836         var32.i = ex->params[24];
4837
4838     for (i = 0; i < n; i++) {
4839       /* 1: copyw */
4840       var33.i = var32.i;
4841       /* 2: storew */
4842       ptr0[i] = var33;
4843     }
4844   }
4845
4846 }
4847
4848 void
4849 orc_splat_s16_2d (int16_t * d1, int d1_stride, int p1, int n, int m)
4850 {
4851   OrcExecutor _ex, *ex = &_ex;
4852   static int p_inited = 0;
4853   static OrcProgram *p = 0;
4854   void (*func) (OrcExecutor *);
4855
4856   if (!p_inited) {
4857     orc_once_mutex_lock ();
4858     if (!p_inited) {
4859       OrcCompileResult result;
4860
4861       p = orc_program_new ();
4862       orc_program_set_2d (p);
4863       orc_program_set_name (p, "orc_splat_s16_2d");
4864       orc_program_set_backup_function (p, _backup_orc_splat_s16_2d);
4865       orc_program_add_destination (p, 2, "d1");
4866       orc_program_add_parameter (p, 2, "p1");
4867
4868       orc_program_append_2 (p, "copyw", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1, ORC_VAR_D1);
4869
4870       result = orc_program_compile (p);
4871     }
4872     p_inited = TRUE;
4873     orc_once_mutex_unlock ();
4874   }
4875   ex->program = p;
4876
4877   ex->n = n;
4878   ORC_EXECUTOR_M(ex) = m;
4879   ex->arrays[ORC_VAR_D1] = d1;
4880   ex->params[ORC_VAR_D1] = d1_stride;
4881   ex->params[ORC_VAR_P1] = p1;
4882
4883   func = p->code_exec;
4884   func (ex);
4885 }
4886 #endif
4887
4888
4889 /* orc_splat_u8_ns */
4890 #ifdef DISABLE_ORC
4891 void
4892 orc_splat_u8_ns (orc_uint8 * d1, int p1, int n){
4893   int i;
4894   orc_int8 * ORC_RESTRICT ptr0;
4895   orc_int8 var32;
4896   orc_int8 var33;
4897
4898   ptr0 = (orc_int8 *)d1;
4899
4900     /* 0: loadpb */
4901     var32 = p1;
4902
4903   for (i = 0; i < n; i++) {
4904     /* 1: copyb */
4905     var33 = var32;
4906     /* 2: storeb */
4907     ptr0[i] = var33;
4908   }
4909
4910 }
4911
4912 #else
4913 static void
4914 _backup_orc_splat_u8_ns (OrcExecutor * ORC_RESTRICT ex)
4915 {
4916   int i;
4917   int n = ex->n;
4918   orc_int8 * ORC_RESTRICT ptr0;
4919   orc_int8 var32;
4920   orc_int8 var33;
4921
4922   ptr0 = (orc_int8 *)ex->arrays[0];
4923
4924     /* 0: loadpb */
4925     var32 = ex->params[24];
4926
4927   for (i = 0; i < n; i++) {
4928     /* 1: copyb */
4929     var33 = var32;
4930     /* 2: storeb */
4931     ptr0[i] = var33;
4932   }
4933
4934 }
4935
4936 void
4937 orc_splat_u8_ns (orc_uint8 * d1, int p1, int n)
4938 {
4939   OrcExecutor _ex, *ex = &_ex;
4940   static int p_inited = 0;
4941   static OrcProgram *p = 0;
4942   void (*func) (OrcExecutor *);
4943
4944   if (!p_inited) {
4945     orc_once_mutex_lock ();
4946     if (!p_inited) {
4947       OrcCompileResult result;
4948
4949       p = orc_program_new ();
4950       orc_program_set_name (p, "orc_splat_u8_ns");
4951       orc_program_set_backup_function (p, _backup_orc_splat_u8_ns);
4952       orc_program_add_destination (p, 1, "d1");
4953       orc_program_add_parameter (p, 1, "p1");
4954
4955       orc_program_append_2 (p, "copyb", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1, ORC_VAR_D1);
4956
4957       result = orc_program_compile (p);
4958     }
4959     p_inited = TRUE;
4960     orc_once_mutex_unlock ();
4961   }
4962   ex->program = p;
4963
4964   ex->n = n;
4965   ex->arrays[ORC_VAR_D1] = d1;
4966   ex->params[ORC_VAR_P1] = p1;
4967
4968   func = p->code_exec;
4969   func (ex);
4970 }
4971 #endif
4972
4973
4974 /* orc_splat_u8_2d */
4975 #ifdef DISABLE_ORC
4976 void
4977 orc_splat_u8_2d (orc_uint8 * d1, int d1_stride, int p1, int n, int m){
4978   int i;
4979   int j;
4980   orc_int8 * ORC_RESTRICT ptr0;
4981   orc_int8 var32;
4982   orc_int8 var33;
4983
4984   for (j = 0; j < m; j++) {
4985     ptr0 = ORC_PTR_OFFSET(d1, d1_stride * j);
4986
4987       /* 0: loadpb */
4988         var32 = p1;
4989
4990     for (i = 0; i < n; i++) {
4991       /* 1: copyb */
4992       var33 = var32;
4993       /* 2: storeb */
4994       ptr0[i] = var33;
4995     }
4996   }
4997
4998 }
4999
5000 #else
5001 static void
5002 _backup_orc_splat_u8_2d (OrcExecutor * ORC_RESTRICT ex)
5003 {
5004   int i;
5005   int j;
5006   int n = ex->n;
5007   int m = ex->params[ORC_VAR_A1];
5008   orc_int8 * ORC_RESTRICT ptr0;
5009   orc_int8 var32;
5010   orc_int8 var33;
5011
5012   for (j = 0; j < m; j++) {
5013     ptr0 = ORC_PTR_OFFSET(ex->arrays[0], ex->params[0] * j);
5014
5015       /* 0: loadpb */
5016         var32 = ex->params[24];
5017
5018     for (i = 0; i < n; i++) {
5019       /* 1: copyb */
5020       var33 = var32;
5021       /* 2: storeb */
5022       ptr0[i] = var33;
5023     }
5024   }
5025
5026 }
5027
5028 void
5029 orc_splat_u8_2d (orc_uint8 * d1, int d1_stride, int p1, int n, int m)
5030 {
5031   OrcExecutor _ex, *ex = &_ex;
5032   static int p_inited = 0;
5033   static OrcProgram *p = 0;
5034   void (*func) (OrcExecutor *);
5035
5036   if (!p_inited) {
5037     orc_once_mutex_lock ();
5038     if (!p_inited) {
5039       OrcCompileResult result;
5040
5041       p = orc_program_new ();
5042       orc_program_set_2d (p);
5043       orc_program_set_name (p, "orc_splat_u8_2d");
5044       orc_program_set_backup_function (p, _backup_orc_splat_u8_2d);
5045       orc_program_add_destination (p, 1, "d1");
5046       orc_program_add_parameter (p, 1, "p1");
5047
5048       orc_program_append_2 (p, "copyb", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1, ORC_VAR_D1);
5049
5050       result = orc_program_compile (p);
5051     }
5052     p_inited = TRUE;
5053     orc_once_mutex_unlock ();
5054   }
5055   ex->program = p;
5056
5057   ex->n = n;
5058   ORC_EXECUTOR_M(ex) = m;
5059   ex->arrays[ORC_VAR_D1] = d1;
5060   ex->params[ORC_VAR_D1] = d1_stride;
5061   ex->params[ORC_VAR_P1] = p1;
5062
5063   func = p->code_exec;
5064   func (ex);
5065 }
5066 #endif
5067
5068
5069 /* orc_average_u8 */
5070 #ifdef DISABLE_ORC
5071 void
5072 orc_average_u8 (orc_uint8 * d1, const orc_uint8 * s1, const orc_uint8 * s2, int n){
5073   int i;
5074   orc_int8 * ORC_RESTRICT ptr0;
5075   const orc_int8 * ORC_RESTRICT ptr4;
5076   const orc_int8 * ORC_RESTRICT ptr5;
5077   orc_int8 var32;
5078   orc_int8 var33;
5079   orc_int8 var34;
5080
5081   ptr0 = (orc_int8 *)d1;
5082   ptr4 = (orc_int8 *)s1;
5083   ptr5 = (orc_int8 *)s2;
5084
5085
5086   for (i = 0; i < n; i++) {
5087     /* 0: loadb */
5088     var32 = ptr4[i];
5089     /* 1: loadb */
5090     var33 = ptr5[i];
5091     /* 2: avgub */
5092     var34 = ((orc_uint8)var32 + (orc_uint8)var33 + 1)>>1;
5093     /* 3: storeb */
5094     ptr0[i] = var34;
5095   }
5096
5097 }
5098
5099 #else
5100 static void
5101 _backup_orc_average_u8 (OrcExecutor * ORC_RESTRICT ex)
5102 {
5103   int i;
5104   int n = ex->n;
5105   orc_int8 * ORC_RESTRICT ptr0;
5106   const orc_int8 * ORC_RESTRICT ptr4;
5107   const orc_int8 * ORC_RESTRICT ptr5;
5108   orc_int8 var32;
5109   orc_int8 var33;
5110   orc_int8 var34;
5111
5112   ptr0 = (orc_int8 *)ex->arrays[0];
5113   ptr4 = (orc_int8 *)ex->arrays[4];
5114   ptr5 = (orc_int8 *)ex->arrays[5];
5115
5116
5117   for (i = 0; i < n; i++) {
5118     /* 0: loadb */
5119     var32 = ptr4[i];
5120     /* 1: loadb */
5121     var33 = ptr5[i];
5122     /* 2: avgub */
5123     var34 = ((orc_uint8)var32 + (orc_uint8)var33 + 1)>>1;
5124     /* 3: storeb */
5125     ptr0[i] = var34;
5126   }
5127
5128 }
5129
5130 void
5131 orc_average_u8 (orc_uint8 * d1, const orc_uint8 * s1, const orc_uint8 * s2, int n)
5132 {
5133   OrcExecutor _ex, *ex = &_ex;
5134   static int p_inited = 0;
5135   static OrcProgram *p = 0;
5136   void (*func) (OrcExecutor *);
5137
5138   if (!p_inited) {
5139     orc_once_mutex_lock ();
5140     if (!p_inited) {
5141       OrcCompileResult result;
5142
5143       p = orc_program_new ();
5144       orc_program_set_name (p, "orc_average_u8");
5145       orc_program_set_backup_function (p, _backup_orc_average_u8);
5146       orc_program_add_destination (p, 1, "d1");
5147       orc_program_add_source (p, 1, "s1");
5148       orc_program_add_source (p, 1, "s2");
5149
5150       orc_program_append_2 (p, "avgub", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_S2, ORC_VAR_D1);
5151
5152       result = orc_program_compile (p);
5153     }
5154     p_inited = TRUE;
5155     orc_once_mutex_unlock ();
5156   }
5157   ex->program = p;
5158
5159   ex->n = n;
5160   ex->arrays[ORC_VAR_D1] = d1;
5161   ex->arrays[ORC_VAR_S1] = (void *)s1;
5162   ex->arrays[ORC_VAR_S2] = (void *)s2;
5163
5164   func = p->code_exec;
5165   func (ex);
5166 }
5167 #endif
5168
5169
5170 /* orc_rrshift6_add_s16_2d */
5171 #ifdef DISABLE_ORC
5172 void
5173 orc_rrshift6_add_s16_2d (uint8_t * d1, int d1_stride, const int16_t * s1, int s1_stride, const int16_t * s2, int s2_stride, int n, int m){
5174   int i;
5175   int j;
5176   orc_int8 * ORC_RESTRICT ptr0;
5177   const orc_union16 * ORC_RESTRICT ptr4;
5178   const orc_union16 * ORC_RESTRICT ptr5;
5179   orc_union16 var33;
5180   orc_union16 var34;
5181   orc_union16 var35;
5182   orc_int8 var36;
5183   orc_union16 var37;
5184   orc_union16 var38;
5185   orc_union16 var39;
5186
5187   for (j = 0; j < m; j++) {
5188     ptr0 = ORC_PTR_OFFSET(d1, d1_stride * j);
5189     ptr4 = ORC_PTR_OFFSET(s1, s1_stride * j);
5190     ptr5 = ORC_PTR_OFFSET(s2, s2_stride * j);
5191
5192       /* 1: loadpw */
5193         var34.i = 0x00000020; /* 32 or 1.58101e-322f */
5194
5195     for (i = 0; i < n; i++) {
5196       /* 0: loadw */
5197       var33 = ptr5[i];
5198       /* 2: addw */
5199       var37.i = var33.i + var34.i;
5200       /* 3: shrsw */
5201       var38.i = var37.i >> 6;
5202       /* 4: loadw */
5203       var35 = ptr4[i];
5204       /* 5: addw */
5205       var39.i = var35.i + var38.i;
5206       /* 6: convsuswb */
5207       var36 = ORC_CLAMP_UB(var39.i);
5208       /* 7: storeb */
5209       ptr0[i] = var36;
5210     }
5211   }
5212
5213 }
5214
5215 #else
5216 static void
5217 _backup_orc_rrshift6_add_s16_2d (OrcExecutor * ORC_RESTRICT ex)
5218 {
5219   int i;
5220   int j;
5221   int n = ex->n;
5222   int m = ex->params[ORC_VAR_A1];
5223   orc_int8 * ORC_RESTRICT ptr0;
5224   const orc_union16 * ORC_RESTRICT ptr4;
5225   const orc_union16 * ORC_RESTRICT ptr5;
5226   orc_union16 var33;
5227   orc_union16 var34;
5228   orc_union16 var35;
5229   orc_int8 var36;
5230   orc_union16 var37;
5231   orc_union16 var38;
5232   orc_union16 var39;
5233
5234   for (j = 0; j < m; j++) {
5235     ptr0 = ORC_PTR_OFFSET(ex->arrays[0], ex->params[0] * j);
5236     ptr4 = ORC_PTR_OFFSET(ex->arrays[4], ex->params[4] * j);
5237     ptr5 = ORC_PTR_OFFSET(ex->arrays[5], ex->params[5] * j);
5238
5239       /* 1: loadpw */
5240         var34.i = 0x00000020; /* 32 or 1.58101e-322f */
5241
5242     for (i = 0; i < n; i++) {
5243       /* 0: loadw */
5244       var33 = ptr5[i];
5245       /* 2: addw */
5246       var37.i = var33.i + var34.i;
5247       /* 3: shrsw */
5248       var38.i = var37.i >> 6;
5249       /* 4: loadw */
5250       var35 = ptr4[i];
5251       /* 5: addw */
5252       var39.i = var35.i + var38.i;
5253       /* 6: convsuswb */
5254       var36 = ORC_CLAMP_UB(var39.i);
5255       /* 7: storeb */
5256       ptr0[i] = var36;
5257     }
5258   }
5259
5260 }
5261
5262 void
5263 orc_rrshift6_add_s16_2d (uint8_t * d1, int d1_stride, const int16_t * s1, int s1_stride, const int16_t * s2, int s2_stride, int n, int m)
5264 {
5265   OrcExecutor _ex, *ex = &_ex;
5266   static int p_inited = 0;
5267   static OrcProgram *p = 0;
5268   void (*func) (OrcExecutor *);
5269
5270   if (!p_inited) {
5271     orc_once_mutex_lock ();
5272     if (!p_inited) {
5273       OrcCompileResult result;
5274
5275       p = orc_program_new ();
5276       orc_program_set_2d (p);
5277       orc_program_set_name (p, "orc_rrshift6_add_s16_2d");
5278       orc_program_set_backup_function (p, _backup_orc_rrshift6_add_s16_2d);
5279       orc_program_add_destination (p, 1, "d1");
5280       orc_program_add_source (p, 2, "s1");
5281       orc_program_add_source (p, 2, "s2");
5282       orc_program_add_constant (p, 4, 0x00000020, "c1");
5283       orc_program_add_constant (p, 4, 0x00000006, "c2");
5284       orc_program_add_temporary (p, 2, "t1");
5285
5286       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_C1, ORC_VAR_D1);
5287       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2, ORC_VAR_D1);
5288       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_T1, ORC_VAR_D1);
5289       orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
5290
5291       result = orc_program_compile (p);
5292     }
5293     p_inited = TRUE;
5294     orc_once_mutex_unlock ();
5295   }
5296   ex->program = p;
5297
5298   ex->n = n;
5299   ORC_EXECUTOR_M(ex) = m;
5300   ex->arrays[ORC_VAR_D1] = d1;
5301   ex->params[ORC_VAR_D1] = d1_stride;
5302   ex->arrays[ORC_VAR_S1] = (void *)s1;
5303   ex->params[ORC_VAR_S1] = s1_stride;
5304   ex->arrays[ORC_VAR_S2] = (void *)s2;
5305   ex->params[ORC_VAR_S2] = s2_stride;
5306
5307   func = p->code_exec;
5308   func (ex);
5309 }
5310 #endif
5311
5312
5313 /* orc_rrshift6_sub_s16_2d */
5314 #ifdef DISABLE_ORC
5315 void
5316 orc_rrshift6_sub_s16_2d (int16_t * d1, int d1_stride, int16_t * d2, int d2_stride, int n, int m){
5317   int i;
5318   int j;
5319   orc_union16 * ORC_RESTRICT ptr0;
5320   orc_union16 * ORC_RESTRICT ptr1;
5321   orc_union16 var33;
5322   orc_union16 var34;
5323   orc_union16 var35;
5324   orc_union16 var36;
5325   orc_union16 var37;
5326   orc_union16 var38;
5327   orc_union16 var39;
5328
5329   for (j = 0; j < m; j++) {
5330     ptr0 = ORC_PTR_OFFSET(d1, d1_stride * j);
5331     ptr1 = ORC_PTR_OFFSET(d2, d2_stride * j);
5332
5333       /* 1: loadpw */
5334         var34.i = 0x00001fe0; /* 8160 or 4.03158e-320f */
5335
5336     for (i = 0; i < n; i++) {
5337       /* 0: loadw */
5338       var33 = ptr1[i];
5339       /* 2: subw */
5340       var38.i = var33.i - var34.i;
5341       /* 3: shrsw */
5342       var39.i = var38.i >> 6;
5343       /* 4: copyw */
5344       var35.i = var39.i;
5345       /* 5: storew */
5346       ptr1[i] = var35;
5347       /* 6: loadw */
5348       var36 = ptr0[i];
5349       /* 7: subw */
5350       var37.i = var36.i - var39.i;
5351       /* 8: storew */
5352       ptr0[i] = var37;
5353     }
5354   }
5355
5356 }
5357
5358 #else
5359 static void
5360 _backup_orc_rrshift6_sub_s16_2d (OrcExecutor * ORC_RESTRICT ex)
5361 {
5362   int i;
5363   int j;
5364   int n = ex->n;
5365   int m = ex->params[ORC_VAR_A1];
5366   orc_union16 * ORC_RESTRICT ptr0;
5367   orc_union16 * ORC_RESTRICT ptr1;
5368   orc_union16 var33;
5369   orc_union16 var34;
5370   orc_union16 var35;
5371   orc_union16 var36;
5372   orc_union16 var37;
5373   orc_union16 var38;
5374   orc_union16 var39;
5375
5376   for (j = 0; j < m; j++) {
5377     ptr0 = ORC_PTR_OFFSET(ex->arrays[0], ex->params[0] * j);
5378     ptr1 = ORC_PTR_OFFSET(ex->arrays[1], ex->params[1] * j);
5379
5380       /* 1: loadpw */
5381         var34.i = 0x00001fe0; /* 8160 or 4.03158e-320f */
5382
5383     for (i = 0; i < n; i++) {
5384       /* 0: loadw */
5385       var33 = ptr1[i];
5386       /* 2: subw */
5387       var38.i = var33.i - var34.i;
5388       /* 3: shrsw */
5389       var39.i = var38.i >> 6;
5390       /* 4: copyw */
5391       var35.i = var39.i;
5392       /* 5: storew */
5393       ptr1[i] = var35;
5394       /* 6: loadw */
5395       var36 = ptr0[i];
5396       /* 7: subw */
5397       var37.i = var36.i - var39.i;
5398       /* 8: storew */
5399       ptr0[i] = var37;
5400     }
5401   }
5402
5403 }
5404
5405 void
5406 orc_rrshift6_sub_s16_2d (int16_t * d1, int d1_stride, int16_t * d2, int d2_stride, int n, int m)
5407 {
5408   OrcExecutor _ex, *ex = &_ex;
5409   static int p_inited = 0;
5410   static OrcProgram *p = 0;
5411   void (*func) (OrcExecutor *);
5412
5413   if (!p_inited) {
5414     orc_once_mutex_lock ();
5415     if (!p_inited) {
5416       OrcCompileResult result;
5417
5418       p = orc_program_new ();
5419       orc_program_set_2d (p);
5420       orc_program_set_name (p, "orc_rrshift6_sub_s16_2d");
5421       orc_program_set_backup_function (p, _backup_orc_rrshift6_sub_s16_2d);
5422       orc_program_add_destination (p, 2, "d1");
5423       orc_program_add_destination (p, 2, "d2");
5424       orc_program_add_constant (p, 4, 0x00001fe0, "c1");
5425       orc_program_add_constant (p, 4, 0x00000006, "c2");
5426       orc_program_add_temporary (p, 2, "t1");
5427
5428       orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_D2, ORC_VAR_C1, ORC_VAR_D1);
5429       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2, ORC_VAR_D1);
5430       orc_program_append_2 (p, "copyw", 0, ORC_VAR_D2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
5431       orc_program_append_2 (p, "subw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1);
5432
5433       result = orc_program_compile (p);
5434     }
5435     p_inited = TRUE;
5436     orc_once_mutex_unlock ();
5437   }
5438   ex->program = p;
5439
5440   ex->n = n;
5441   ORC_EXECUTOR_M(ex) = m;
5442   ex->arrays[ORC_VAR_D1] = d1;
5443   ex->params[ORC_VAR_D1] = d1_stride;
5444   ex->arrays[ORC_VAR_D2] = d2;
5445   ex->params[ORC_VAR_D2] = d2_stride;
5446
5447   func = p->code_exec;
5448   func (ex);
5449 }
5450 #endif
5451
5452
5453 /* orc_rrshift6_s16_ip_2d */
5454 #ifdef DISABLE_ORC
5455 void
5456 orc_rrshift6_s16_ip_2d (int16_t * d1, int d1_stride, int n, int m){
5457   int i;
5458   int j;
5459   orc_union16 * ORC_RESTRICT ptr0;
5460   orc_union16 var33;
5461   orc_union16 var34;
5462   orc_union16 var35;
5463   orc_union16 var36;
5464
5465   for (j = 0; j < m; j++) {
5466     ptr0 = ORC_PTR_OFFSET(d1, d1_stride * j);
5467
5468       /* 1: loadpw */
5469         var34.i = 0x00001fe0; /* 8160 or 4.03158e-320f */
5470
5471     for (i = 0; i < n; i++) {
5472       /* 0: loadw */
5473       var33 = ptr0[i];
5474       /* 2: subw */
5475       var36.i = var33.i - var34.i;
5476       /* 3: shrsw */
5477       var35.i = var36.i >> 6;
5478       /* 4: storew */
5479       ptr0[i] = var35;
5480     }
5481   }
5482
5483 }
5484
5485 #else
5486 static void
5487 _backup_orc_rrshift6_s16_ip_2d (OrcExecutor * ORC_RESTRICT ex)
5488 {
5489   int i;
5490   int j;
5491   int n = ex->n;
5492   int m = ex->params[ORC_VAR_A1];
5493   orc_union16 * ORC_RESTRICT ptr0;
5494   orc_union16 var33;
5495   orc_union16 var34;
5496   orc_union16 var35;
5497   orc_union16 var36;
5498
5499   for (j = 0; j < m; j++) {
5500     ptr0 = ORC_PTR_OFFSET(ex->arrays[0], ex->params[0] * j);
5501
5502       /* 1: loadpw */
5503         var34.i = 0x00001fe0; /* 8160 or 4.03158e-320f */
5504
5505     for (i = 0; i < n; i++) {
5506       /* 0: loadw */
5507       var33 = ptr0[i];
5508       /* 2: subw */
5509       var36.i = var33.i - var34.i;
5510       /* 3: shrsw */
5511       var35.i = var36.i >> 6;
5512       /* 4: storew */
5513       ptr0[i] = var35;
5514     }
5515   }
5516
5517 }
5518
5519 void
5520 orc_rrshift6_s16_ip_2d (int16_t * d1, int d1_stride, int n, int m)
5521 {
5522   OrcExecutor _ex, *ex = &_ex;
5523   static int p_inited = 0;
5524   static OrcProgram *p = 0;
5525   void (*func) (OrcExecutor *);
5526
5527   if (!p_inited) {
5528     orc_once_mutex_lock ();
5529     if (!p_inited) {
5530       OrcCompileResult result;
5531
5532       p = orc_program_new ();
5533       orc_program_set_2d (p);
5534       orc_program_set_name (p, "orc_rrshift6_s16_ip_2d");
5535       orc_program_set_backup_function (p, _backup_orc_rrshift6_s16_ip_2d);
5536       orc_program_add_destination (p, 2, "d1");
5537       orc_program_add_constant (p, 4, 0x00001fe0, "c1");
5538       orc_program_add_constant (p, 4, 0x00000006, "c2");
5539       orc_program_add_temporary (p, 2, "t1");
5540
5541       orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_C1, ORC_VAR_D1);
5542       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C2, ORC_VAR_D1);
5543
5544       result = orc_program_compile (p);
5545     }
5546     p_inited = TRUE;
5547     orc_once_mutex_unlock ();
5548   }
5549   ex->program = p;
5550
5551   ex->n = n;
5552   ORC_EXECUTOR_M(ex) = m;
5553   ex->arrays[ORC_VAR_D1] = d1;
5554   ex->params[ORC_VAR_D1] = d1_stride;
5555
5556   func = p->code_exec;
5557   func (ex);
5558 }
5559 #endif
5560
5561
5562 /* orc_rrshift6_s16_ip */
5563 #ifdef DISABLE_ORC
5564 void
5565 orc_rrshift6_s16_ip (int16_t * d1, int n){
5566   int i;
5567   orc_union16 * ORC_RESTRICT ptr0;
5568   orc_union16 var33;
5569   orc_union16 var34;
5570   orc_union16 var35;
5571   orc_union16 var36;
5572
5573   ptr0 = (orc_union16 *)d1;
5574
5575     /* 1: loadpw */
5576     var34.i = 0x00001fe0; /* 8160 or 4.03158e-320f */
5577
5578   for (i = 0; i < n; i++) {
5579     /* 0: loadw */
5580     var33 = ptr0[i];
5581     /* 2: subw */
5582     var36.i = var33.i - var34.i;
5583     /* 3: shrsw */
5584     var35.i = var36.i >> 6;
5585     /* 4: storew */
5586     ptr0[i] = var35;
5587   }
5588
5589 }
5590
5591 #else
5592 static void
5593 _backup_orc_rrshift6_s16_ip (OrcExecutor * ORC_RESTRICT ex)
5594 {
5595   int i;
5596   int n = ex->n;
5597   orc_union16 * ORC_RESTRICT ptr0;
5598   orc_union16 var33;
5599   orc_union16 var34;
5600   orc_union16 var35;
5601   orc_union16 var36;
5602
5603   ptr0 = (orc_union16 *)ex->arrays[0];
5604
5605     /* 1: loadpw */
5606     var34.i = 0x00001fe0; /* 8160 or 4.03158e-320f */
5607
5608   for (i = 0; i < n; i++) {
5609     /* 0: loadw */
5610     var33 = ptr0[i];
5611     /* 2: subw */
5612     var36.i = var33.i - var34.i;
5613     /* 3: shrsw */
5614     var35.i = var36.i >> 6;
5615     /* 4: storew */
5616     ptr0[i] = var35;
5617   }
5618
5619 }
5620
5621 void
5622 orc_rrshift6_s16_ip (int16_t * d1, int n)
5623 {
5624   OrcExecutor _ex, *ex = &_ex;
5625   static int p_inited = 0;
5626   static OrcProgram *p = 0;
5627   void (*func) (OrcExecutor *);
5628
5629   if (!p_inited) {
5630     orc_once_mutex_lock ();
5631     if (!p_inited) {
5632       OrcCompileResult result;
5633
5634       p = orc_program_new ();
5635       orc_program_set_name (p, "orc_rrshift6_s16_ip");
5636       orc_program_set_backup_function (p, _backup_orc_rrshift6_s16_ip);
5637       orc_program_add_destination (p, 2, "d1");
5638       orc_program_add_constant (p, 4, 0x00001fe0, "c1");
5639       orc_program_add_constant (p, 4, 0x00000006, "c2");
5640       orc_program_add_temporary (p, 2, "t1");
5641
5642       orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_C1, ORC_VAR_D1);
5643       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C2, ORC_VAR_D1);
5644
5645       result = orc_program_compile (p);
5646     }
5647     p_inited = TRUE;
5648     orc_once_mutex_unlock ();
5649   }
5650   ex->program = p;
5651
5652   ex->n = n;
5653   ex->arrays[ORC_VAR_D1] = d1;
5654
5655   func = p->code_exec;
5656   func (ex);
5657 }
5658 #endif
5659
5660
5661 /* orc_unpack_yuyv_y */
5662 #ifdef DISABLE_ORC
5663 void
5664 orc_unpack_yuyv_y (orc_uint8 * d1, const orc_uint16 * s1, int n){
5665   int i;
5666   orc_int8 * ORC_RESTRICT ptr0;
5667   const orc_union16 * ORC_RESTRICT ptr4;
5668   orc_union16 var32;
5669   orc_int8 var33;
5670
5671   ptr0 = (orc_int8 *)d1;
5672   ptr4 = (orc_union16 *)s1;
5673
5674
5675   for (i = 0; i < n; i++) {
5676     /* 0: loadw */
5677     var32 = ptr4[i];
5678     /* 1: select0wb */
5679     var33 = (orc_uint16)var32.i & 0xff;
5680     /* 2: storeb */
5681     ptr0[i] = var33;
5682   }
5683
5684 }
5685
5686 #else
5687 static void
5688 _backup_orc_unpack_yuyv_y (OrcExecutor * ORC_RESTRICT ex)
5689 {
5690   int i;
5691   int n = ex->n;
5692   orc_int8 * ORC_RESTRICT ptr0;
5693   const orc_union16 * ORC_RESTRICT ptr4;
5694   orc_union16 var32;
5695   orc_int8 var33;
5696
5697   ptr0 = (orc_int8 *)ex->arrays[0];
5698   ptr4 = (orc_union16 *)ex->arrays[4];
5699
5700
5701   for (i = 0; i < n; i++) {
5702     /* 0: loadw */
5703     var32 = ptr4[i];
5704     /* 1: select0wb */
5705     var33 = (orc_uint16)var32.i & 0xff;
5706     /* 2: storeb */
5707     ptr0[i] = var33;
5708   }
5709
5710 }
5711
5712 void
5713 orc_unpack_yuyv_y (orc_uint8 * d1, const orc_uint16 * s1, int n)
5714 {
5715   OrcExecutor _ex, *ex = &_ex;
5716   static int p_inited = 0;
5717   static OrcProgram *p = 0;
5718   void (*func) (OrcExecutor *);
5719
5720   if (!p_inited) {
5721     orc_once_mutex_lock ();
5722     if (!p_inited) {
5723       OrcCompileResult result;
5724
5725       p = orc_program_new ();
5726       orc_program_set_name (p, "orc_unpack_yuyv_y");
5727       orc_program_set_backup_function (p, _backup_orc_unpack_yuyv_y);
5728       orc_program_add_destination (p, 1, "d1");
5729       orc_program_add_source (p, 2, "s1");
5730
5731       orc_program_append_2 (p, "select0wb", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
5732
5733       result = orc_program_compile (p);
5734     }
5735     p_inited = TRUE;
5736     orc_once_mutex_unlock ();
5737   }
5738   ex->program = p;
5739
5740   ex->n = n;
5741   ex->arrays[ORC_VAR_D1] = d1;
5742   ex->arrays[ORC_VAR_S1] = (void *)s1;
5743
5744   func = p->code_exec;
5745   func (ex);
5746 }
5747 #endif
5748
5749
5750 /* orc_unpack_yuyv_u */
5751 #ifdef DISABLE_ORC
5752 void
5753 orc_unpack_yuyv_u (orc_uint8 * d1, const orc_uint32 * s1, int n){
5754   int i;
5755   orc_int8 * ORC_RESTRICT ptr0;
5756   const orc_union32 * ORC_RESTRICT ptr4;
5757   orc_union32 var33;
5758   orc_int8 var34;
5759   orc_union16 var35;
5760
5761   ptr0 = (orc_int8 *)d1;
5762   ptr4 = (orc_union32 *)s1;
5763
5764
5765   for (i = 0; i < n; i++) {
5766     /* 0: loadl */
5767     var33 = ptr4[i];
5768     /* 1: select0lw */
5769     var35.i = (orc_uint32)var33.i & 0xffff;
5770     /* 2: select1wb */
5771     var34 = ((orc_uint16)var35.i >> 8)&0xff;
5772     /* 3: storeb */
5773     ptr0[i] = var34;
5774   }
5775
5776 }
5777
5778 #else
5779 static void
5780 _backup_orc_unpack_yuyv_u (OrcExecutor * ORC_RESTRICT ex)
5781 {
5782   int i;
5783   int n = ex->n;
5784   orc_int8 * ORC_RESTRICT ptr0;
5785   const orc_union32 * ORC_RESTRICT ptr4;
5786   orc_union32 var33;
5787   orc_int8 var34;
5788   orc_union16 var35;
5789
5790   ptr0 = (orc_int8 *)ex->arrays[0];
5791   ptr4 = (orc_union32 *)ex->arrays[4];
5792
5793
5794   for (i = 0; i < n; i++) {
5795     /* 0: loadl */
5796     var33 = ptr4[i];
5797     /* 1: select0lw */
5798     var35.i = (orc_uint32)var33.i & 0xffff;
5799     /* 2: select1wb */
5800     var34 = ((orc_uint16)var35.i >> 8)&0xff;
5801     /* 3: storeb */
5802     ptr0[i] = var34;
5803   }
5804
5805 }
5806
5807 void
5808 orc_unpack_yuyv_u (orc_uint8 * d1, const orc_uint32 * s1, int n)
5809 {
5810   OrcExecutor _ex, *ex = &_ex;
5811   static int p_inited = 0;
5812   static OrcProgram *p = 0;
5813   void (*func) (OrcExecutor *);
5814
5815   if (!p_inited) {
5816     orc_once_mutex_lock ();
5817     if (!p_inited) {
5818       OrcCompileResult result;
5819
5820       p = orc_program_new ();
5821       orc_program_set_name (p, "orc_unpack_yuyv_u");
5822       orc_program_set_backup_function (p, _backup_orc_unpack_yuyv_u);
5823       orc_program_add_destination (p, 1, "d1");
5824       orc_program_add_source (p, 4, "s1");
5825       orc_program_add_temporary (p, 2, "t1");
5826
5827       orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
5828       orc_program_append_2 (p, "select1wb", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
5829
5830       result = orc_program_compile (p);
5831     }
5832     p_inited = TRUE;
5833     orc_once_mutex_unlock ();
5834   }
5835   ex->program = p;
5836
5837   ex->n = n;
5838   ex->arrays[ORC_VAR_D1] = d1;
5839   ex->arrays[ORC_VAR_S1] = (void *)s1;
5840
5841   func = p->code_exec;
5842   func (ex);
5843 }
5844 #endif
5845
5846
5847 /* orc_unpack_yuyv_v */
5848 #ifdef DISABLE_ORC
5849 void
5850 orc_unpack_yuyv_v (orc_uint8 * d1, const orc_uint32 * s1, int n){
5851   int i;
5852   orc_int8 * ORC_RESTRICT ptr0;
5853   const orc_union32 * ORC_RESTRICT ptr4;
5854   orc_union32 var33;
5855   orc_int8 var34;
5856   orc_union16 var35;
5857
5858   ptr0 = (orc_int8 *)d1;
5859   ptr4 = (orc_union32 *)s1;
5860
5861
5862   for (i = 0; i < n; i++) {
5863     /* 0: loadl */
5864     var33 = ptr4[i];
5865     /* 1: select1lw */
5866     var35.i = ((orc_uint32)var33.i >> 16)&0xffff;
5867     /* 2: select1wb */
5868     var34 = ((orc_uint16)var35.i >> 8)&0xff;
5869     /* 3: storeb */
5870     ptr0[i] = var34;
5871   }
5872
5873 }
5874
5875 #else
5876 static void
5877 _backup_orc_unpack_yuyv_v (OrcExecutor * ORC_RESTRICT ex)
5878 {
5879   int i;
5880   int n = ex->n;
5881   orc_int8 * ORC_RESTRICT ptr0;
5882   const orc_union32 * ORC_RESTRICT ptr4;
5883   orc_union32 var33;
5884   orc_int8 var34;
5885   orc_union16 var35;
5886
5887   ptr0 = (orc_int8 *)ex->arrays[0];
5888   ptr4 = (orc_union32 *)ex->arrays[4];
5889
5890
5891   for (i = 0; i < n; i++) {
5892     /* 0: loadl */
5893     var33 = ptr4[i];
5894     /* 1: select1lw */
5895     var35.i = ((orc_uint32)var33.i >> 16)&0xffff;
5896     /* 2: select1wb */
5897     var34 = ((orc_uint16)var35.i >> 8)&0xff;
5898     /* 3: storeb */
5899     ptr0[i] = var34;
5900   }
5901
5902 }
5903
5904 void
5905 orc_unpack_yuyv_v (orc_uint8 * d1, const orc_uint32 * s1, int n)
5906 {
5907   OrcExecutor _ex, *ex = &_ex;
5908   static int p_inited = 0;
5909   static OrcProgram *p = 0;
5910   void (*func) (OrcExecutor *);
5911
5912   if (!p_inited) {
5913     orc_once_mutex_lock ();
5914     if (!p_inited) {
5915       OrcCompileResult result;
5916
5917       p = orc_program_new ();
5918       orc_program_set_name (p, "orc_unpack_yuyv_v");
5919       orc_program_set_backup_function (p, _backup_orc_unpack_yuyv_v);
5920       orc_program_add_destination (p, 1, "d1");
5921       orc_program_add_source (p, 4, "s1");
5922       orc_program_add_temporary (p, 2, "t1");
5923
5924       orc_program_append_2 (p, "select1lw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
5925       orc_program_append_2 (p, "select1wb", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
5926
5927       result = orc_program_compile (p);
5928     }
5929     p_inited = TRUE;
5930     orc_once_mutex_unlock ();
5931   }
5932   ex->program = p;
5933
5934   ex->n = n;
5935   ex->arrays[ORC_VAR_D1] = d1;
5936   ex->arrays[ORC_VAR_S1] = (void *)s1;
5937
5938   func = p->code_exec;
5939   func (ex);
5940 }
5941 #endif
5942
5943
5944 /* orc_packyuyv */
5945 #ifdef DISABLE_ORC
5946 void
5947 orc_packyuyv (orc_uint32 * d1, const uint8_t * s1, const orc_uint8 * s2, const orc_uint8 * s3, int n){
5948   int i;
5949   orc_union32 * ORC_RESTRICT ptr0;
5950   const orc_union16 * ORC_RESTRICT ptr4;
5951   const orc_int8 * ORC_RESTRICT ptr5;
5952   const orc_int8 * ORC_RESTRICT ptr6;
5953   orc_union16 var37;
5954   orc_int8 var38;
5955   orc_int8 var39;
5956   orc_union32 var40;
5957   orc_union16 var41;
5958   orc_int8 var42;
5959   orc_int8 var43;
5960   orc_union16 var44;
5961   orc_union16 var45;
5962
5963   ptr0 = (orc_union32 *)d1;
5964   ptr4 = (orc_union16 *)s1;
5965   ptr5 = (orc_int8 *)s2;
5966   ptr6 = (orc_int8 *)s3;
5967
5968
5969   for (i = 0; i < n; i++) {
5970     /* 0: loadw */
5971     var37 = ptr4[i];
5972     /* 1: copyw */
5973     var41.i = var37.i;
5974     /* 2: select0wb */
5975     var42 = (orc_uint16)var41.i & 0xff;
5976     /* 3: select1wb */
5977     var43 = ((orc_uint16)var41.i >> 8)&0xff;
5978     /* 4: loadb */
5979     var38 = ptr5[i];
5980     /* 5: mergebw */
5981     var44.i = ((orc_uint8)var42 & 0x00ff) | ((orc_uint8)var38 << 8);
5982     /* 6: loadb */
5983     var39 = ptr6[i];
5984     /* 7: mergebw */
5985     var45.i = ((orc_uint8)var43 & 0x00ff) | ((orc_uint8)var39 << 8);
5986     /* 8: mergewl */
5987     var40.i = ((orc_uint16)var44.i & 0x0000ffff) | ((orc_uint16)var45.i << 16);
5988     /* 9: storel */
5989     ptr0[i] = var40;
5990   }
5991
5992 }
5993
5994 #else
5995 static void
5996 _backup_orc_packyuyv (OrcExecutor * ORC_RESTRICT ex)
5997 {
5998   int i;
5999   int n = ex->n;
6000   orc_union32 * ORC_RESTRICT ptr0;
6001   const orc_union16 * ORC_RESTRICT ptr4;
6002   const orc_int8 * ORC_RESTRICT ptr5;
6003   const orc_int8 * ORC_RESTRICT ptr6;
6004   orc_union16 var37;
6005   orc_int8 var38;
6006   orc_int8 var39;
6007   orc_union32 var40;
6008   orc_union16 var41;
6009   orc_int8 var42;
6010   orc_int8 var43;
6011   orc_union16 var44;
6012   orc_union16 var45;
6013
6014   ptr0 = (orc_union32 *)ex->arrays[0];
6015   ptr4 = (orc_union16 *)ex->arrays[4];
6016   ptr5 = (orc_int8 *)ex->arrays[5];
6017   ptr6 = (orc_int8 *)ex->arrays[6];
6018
6019
6020   for (i = 0; i < n; i++) {
6021     /* 0: loadw */
6022     var37 = ptr4[i];
6023     /* 1: copyw */
6024     var41.i = var37.i;
6025     /* 2: select0wb */
6026     var42 = (orc_uint16)var41.i & 0xff;
6027     /* 3: select1wb */
6028     var43 = ((orc_uint16)var41.i >> 8)&0xff;
6029     /* 4: loadb */
6030     var38 = ptr5[i];
6031     /* 5: mergebw */
6032     var44.i = ((orc_uint8)var42 & 0x00ff) | ((orc_uint8)var38 << 8);
6033     /* 6: loadb */
6034     var39 = ptr6[i];
6035     /* 7: mergebw */
6036     var45.i = ((orc_uint8)var43 & 0x00ff) | ((orc_uint8)var39 << 8);
6037     /* 8: mergewl */
6038     var40.i = ((orc_uint16)var44.i & 0x0000ffff) | ((orc_uint16)var45.i << 16);
6039     /* 9: storel */
6040     ptr0[i] = var40;
6041   }
6042
6043 }
6044
6045 void
6046 orc_packyuyv (orc_uint32 * d1, const uint8_t * s1, const orc_uint8 * s2, const orc_uint8 * s3, int n)
6047 {
6048   OrcExecutor _ex, *ex = &_ex;
6049   static int p_inited = 0;
6050   static OrcProgram *p = 0;
6051   void (*func) (OrcExecutor *);
6052
6053   if (!p_inited) {
6054     orc_once_mutex_lock ();
6055     if (!p_inited) {
6056       OrcCompileResult result;
6057
6058       p = orc_program_new ();
6059       orc_program_set_name (p, "orc_packyuyv");
6060       orc_program_set_backup_function (p, _backup_orc_packyuyv);
6061       orc_program_add_destination (p, 4, "d1");
6062       orc_program_add_source (p, 2, "s1");
6063       orc_program_add_source (p, 1, "s2");
6064       orc_program_add_source (p, 1, "s3");
6065       orc_program_add_temporary (p, 1, "t1");
6066       orc_program_add_temporary (p, 1, "t2");
6067       orc_program_add_temporary (p, 2, "t3");
6068       orc_program_add_temporary (p, 2, "t4");
6069       orc_program_add_temporary (p, 2, "t5");
6070
6071       orc_program_append_2 (p, "copyw", 0, ORC_VAR_T5, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
6072       orc_program_append_2 (p, "select0wb", 0, ORC_VAR_T1, ORC_VAR_T5, ORC_VAR_D1, ORC_VAR_D1);
6073       orc_program_append_2 (p, "select1wb", 0, ORC_VAR_T2, ORC_VAR_T5, ORC_VAR_D1, ORC_VAR_D1);
6074       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_D1);
6075       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_S3, ORC_VAR_D1);
6076       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T4, ORC_VAR_D1);
6077
6078       result = orc_program_compile (p);
6079     }
6080     p_inited = TRUE;
6081     orc_once_mutex_unlock ();
6082   }
6083   ex->program = p;
6084
6085   ex->n = n;
6086   ex->arrays[ORC_VAR_D1] = d1;
6087   ex->arrays[ORC_VAR_S1] = (void *)s1;
6088   ex->arrays[ORC_VAR_S2] = (void *)s2;
6089   ex->arrays[ORC_VAR_S3] = (void *)s3;
6090
6091   func = p->code_exec;
6092   func (ex);
6093 }
6094 #endif
6095
6096
6097 /* orc_unpack_uyvy_y */
6098 #ifdef DISABLE_ORC
6099 void
6100 orc_unpack_uyvy_y (orc_uint8 * d1, const orc_uint16 * s1, int n){
6101   int i;
6102   orc_int8 * ORC_RESTRICT ptr0;
6103   const orc_union16 * ORC_RESTRICT ptr4;
6104   orc_union16 var32;
6105   orc_int8 var33;
6106
6107   ptr0 = (orc_int8 *)d1;
6108   ptr4 = (orc_union16 *)s1;
6109
6110
6111   for (i = 0; i < n; i++) {
6112     /* 0: loadw */
6113     var32 = ptr4[i];
6114     /* 1: select1wb */
6115     var33 = ((orc_uint16)var32.i >> 8)&0xff;
6116     /* 2: storeb */
6117     ptr0[i] = var33;
6118   }
6119
6120 }
6121
6122 #else
6123 static void
6124 _backup_orc_unpack_uyvy_y (OrcExecutor * ORC_RESTRICT ex)
6125 {
6126   int i;
6127   int n = ex->n;
6128   orc_int8 * ORC_RESTRICT ptr0;
6129   const orc_union16 * ORC_RESTRICT ptr4;
6130   orc_union16 var32;
6131   orc_int8 var33;
6132
6133   ptr0 = (orc_int8 *)ex->arrays[0];
6134   ptr4 = (orc_union16 *)ex->arrays[4];
6135
6136
6137   for (i = 0; i < n; i++) {
6138     /* 0: loadw */
6139     var32 = ptr4[i];
6140     /* 1: select1wb */
6141     var33 = ((orc_uint16)var32.i >> 8)&0xff;
6142     /* 2: storeb */
6143     ptr0[i] = var33;
6144   }
6145
6146 }
6147
6148 void
6149 orc_unpack_uyvy_y (orc_uint8 * d1, const orc_uint16 * s1, int n)
6150 {
6151   OrcExecutor _ex, *ex = &_ex;
6152   static int p_inited = 0;
6153   static OrcProgram *p = 0;
6154   void (*func) (OrcExecutor *);
6155
6156   if (!p_inited) {
6157     orc_once_mutex_lock ();
6158     if (!p_inited) {
6159       OrcCompileResult result;
6160
6161       p = orc_program_new ();
6162       orc_program_set_name (p, "orc_unpack_uyvy_y");
6163       orc_program_set_backup_function (p, _backup_orc_unpack_uyvy_y);
6164       orc_program_add_destination (p, 1, "d1");
6165       orc_program_add_source (p, 2, "s1");
6166
6167       orc_program_append_2 (p, "select1wb", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
6168
6169       result = orc_program_compile (p);
6170     }
6171     p_inited = TRUE;
6172     orc_once_mutex_unlock ();
6173   }
6174   ex->program = p;
6175
6176   ex->n = n;
6177   ex->arrays[ORC_VAR_D1] = d1;
6178   ex->arrays[ORC_VAR_S1] = (void *)s1;
6179
6180   func = p->code_exec;
6181   func (ex);
6182 }
6183 #endif
6184
6185
6186 /* orc_unpack_uyvy_u */
6187 #ifdef DISABLE_ORC
6188 void
6189 orc_unpack_uyvy_u (orc_uint8 * d1, const orc_uint32 * s1, int n){
6190   int i;
6191   orc_int8 * ORC_RESTRICT ptr0;
6192   const orc_union32 * ORC_RESTRICT ptr4;
6193   orc_union32 var33;
6194   orc_int8 var34;
6195   orc_union16 var35;
6196
6197   ptr0 = (orc_int8 *)d1;
6198   ptr4 = (orc_union32 *)s1;
6199
6200
6201   for (i = 0; i < n; i++) {
6202     /* 0: loadl */
6203     var33 = ptr4[i];
6204     /* 1: select0lw */
6205     var35.i = (orc_uint32)var33.i & 0xffff;
6206     /* 2: select0wb */
6207     var34 = (orc_uint16)var35.i & 0xff;
6208     /* 3: storeb */
6209     ptr0[i] = var34;
6210   }
6211
6212 }
6213
6214 #else
6215 static void
6216 _backup_orc_unpack_uyvy_u (OrcExecutor * ORC_RESTRICT ex)
6217 {
6218   int i;
6219   int n = ex->n;
6220   orc_int8 * ORC_RESTRICT ptr0;
6221   const orc_union32 * ORC_RESTRICT ptr4;
6222   orc_union32 var33;
6223   orc_int8 var34;
6224   orc_union16 var35;
6225
6226   ptr0 = (orc_int8 *)ex->arrays[0];
6227   ptr4 = (orc_union32 *)ex->arrays[4];
6228
6229
6230   for (i = 0; i < n; i++) {
6231     /* 0: loadl */
6232     var33 = ptr4[i];
6233     /* 1: select0lw */
6234     var35.i = (orc_uint32)var33.i & 0xffff;
6235     /* 2: select0wb */
6236     var34 = (orc_uint16)var35.i & 0xff;
6237     /* 3: storeb */
6238     ptr0[i] = var34;
6239   }
6240
6241 }
6242
6243 void
6244 orc_unpack_uyvy_u (orc_uint8 * d1, const orc_uint32 * s1, int n)
6245 {
6246   OrcExecutor _ex, *ex = &_ex;
6247   static int p_inited = 0;
6248   static OrcProgram *p = 0;
6249   void (*func) (OrcExecutor *);
6250
6251   if (!p_inited) {
6252     orc_once_mutex_lock ();
6253     if (!p_inited) {
6254       OrcCompileResult result;
6255
6256       p = orc_program_new ();
6257       orc_program_set_name (p, "orc_unpack_uyvy_u");
6258       orc_program_set_backup_function (p, _backup_orc_unpack_uyvy_u);
6259       orc_program_add_destination (p, 1, "d1");
6260       orc_program_add_source (p, 4, "s1");
6261       orc_program_add_temporary (p, 2, "t1");
6262
6263       orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
6264       orc_program_append_2 (p, "select0wb", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
6265
6266       result = orc_program_compile (p);
6267     }
6268     p_inited = TRUE;
6269     orc_once_mutex_unlock ();
6270   }
6271   ex->program = p;
6272
6273   ex->n = n;
6274   ex->arrays[ORC_VAR_D1] = d1;
6275   ex->arrays[ORC_VAR_S1] = (void *)s1;
6276
6277   func = p->code_exec;
6278   func (ex);
6279 }
6280 #endif
6281
6282
6283 /* orc_unpack_uyvy_v */
6284 #ifdef DISABLE_ORC
6285 void
6286 orc_unpack_uyvy_v (orc_uint8 * d1, const orc_uint32 * s1, int n){
6287   int i;
6288   orc_int8 * ORC_RESTRICT ptr0;
6289   const orc_union32 * ORC_RESTRICT ptr4;
6290   orc_union32 var33;
6291   orc_int8 var34;
6292   orc_union16 var35;
6293
6294   ptr0 = (orc_int8 *)d1;
6295   ptr4 = (orc_union32 *)s1;
6296
6297
6298   for (i = 0; i < n; i++) {
6299     /* 0: loadl */
6300     var33 = ptr4[i];
6301     /* 1: select1lw */
6302     var35.i = ((orc_uint32)var33.i >> 16)&0xffff;
6303     /* 2: select0wb */
6304     var34 = (orc_uint16)var35.i & 0xff;
6305     /* 3: storeb */
6306     ptr0[i] = var34;
6307   }
6308
6309 }
6310
6311 #else
6312 static void
6313 _backup_orc_unpack_uyvy_v (OrcExecutor * ORC_RESTRICT ex)
6314 {
6315   int i;
6316   int n = ex->n;
6317   orc_int8 * ORC_RESTRICT ptr0;
6318   const orc_union32 * ORC_RESTRICT ptr4;
6319   orc_union32 var33;
6320   orc_int8 var34;
6321   orc_union16 var35;
6322
6323   ptr0 = (orc_int8 *)ex->arrays[0];
6324   ptr4 = (orc_union32 *)ex->arrays[4];
6325
6326
6327   for (i = 0; i < n; i++) {
6328     /* 0: loadl */
6329     var33 = ptr4[i];
6330     /* 1: select1lw */
6331     var35.i = ((orc_uint32)var33.i >> 16)&0xffff;
6332     /* 2: select0wb */
6333     var34 = (orc_uint16)var35.i & 0xff;
6334     /* 3: storeb */
6335     ptr0[i] = var34;
6336   }
6337
6338 }
6339
6340 void
6341 orc_unpack_uyvy_v (orc_uint8 * d1, const orc_uint32 * s1, int n)
6342 {
6343   OrcExecutor _ex, *ex = &_ex;
6344   static int p_inited = 0;
6345   static OrcProgram *p = 0;
6346   void (*func) (OrcExecutor *);
6347
6348   if (!p_inited) {
6349     orc_once_mutex_lock ();
6350     if (!p_inited) {
6351       OrcCompileResult result;
6352
6353       p = orc_program_new ();
6354       orc_program_set_name (p, "orc_unpack_uyvy_v");
6355       orc_program_set_backup_function (p, _backup_orc_unpack_uyvy_v);
6356       orc_program_add_destination (p, 1, "d1");
6357       orc_program_add_source (p, 4, "s1");
6358       orc_program_add_temporary (p, 2, "t1");
6359
6360       orc_program_append_2 (p, "select1lw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
6361       orc_program_append_2 (p, "select0wb", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
6362
6363       result = orc_program_compile (p);
6364     }
6365     p_inited = TRUE;
6366     orc_once_mutex_unlock ();
6367   }
6368   ex->program = p;
6369
6370   ex->n = n;
6371   ex->arrays[ORC_VAR_D1] = d1;
6372   ex->arrays[ORC_VAR_S1] = (void *)s1;
6373
6374   func = p->code_exec;
6375   func (ex);
6376 }
6377 #endif
6378
6379
6380 /* orc_interleave2_s16 */
6381 #ifdef DISABLE_ORC
6382 void
6383 orc_interleave2_s16 (int16_t * d1, const int16_t * s1, const int16_t * s2, int n){
6384   int i;
6385   orc_union32 * ORC_RESTRICT ptr0;
6386   const orc_union16 * ORC_RESTRICT ptr4;
6387   const orc_union16 * ORC_RESTRICT ptr5;
6388   orc_union16 var32;
6389   orc_union16 var33;
6390   orc_union32 var34;
6391
6392   ptr0 = (orc_union32 *)d1;
6393   ptr4 = (orc_union16 *)s1;
6394   ptr5 = (orc_union16 *)s2;
6395
6396
6397   for (i = 0; i < n; i++) {
6398     /* 0: loadw */
6399     var32 = ptr4[i];
6400     /* 1: loadw */
6401     var33 = ptr5[i];
6402     /* 2: mergewl */
6403     var34.i = ((orc_uint16)var32.i & 0x0000ffff) | ((orc_uint16)var33.i << 16);
6404     /* 3: storel */
6405     ptr0[i] = var34;
6406   }
6407
6408 }
6409
6410 #else
6411 static void
6412 _backup_orc_interleave2_s16 (OrcExecutor * ORC_RESTRICT ex)
6413 {
6414   int i;
6415   int n = ex->n;
6416   orc_union32 * ORC_RESTRICT ptr0;
6417   const orc_union16 * ORC_RESTRICT ptr4;
6418   const orc_union16 * ORC_RESTRICT ptr5;
6419   orc_union16 var32;
6420   orc_union16 var33;
6421   orc_union32 var34;
6422
6423   ptr0 = (orc_union32 *)ex->arrays[0];
6424   ptr4 = (orc_union16 *)ex->arrays[4];
6425   ptr5 = (orc_union16 *)ex->arrays[5];
6426
6427
6428   for (i = 0; i < n; i++) {
6429     /* 0: loadw */
6430     var32 = ptr4[i];
6431     /* 1: loadw */
6432     var33 = ptr5[i];
6433     /* 2: mergewl */
6434     var34.i = ((orc_uint16)var32.i & 0x0000ffff) | ((orc_uint16)var33.i << 16);
6435     /* 3: storel */
6436     ptr0[i] = var34;
6437   }
6438
6439 }
6440
6441 void
6442 orc_interleave2_s16 (int16_t * d1, const int16_t * s1, const int16_t * s2, int n)
6443 {
6444   OrcExecutor _ex, *ex = &_ex;
6445   static int p_inited = 0;
6446   static OrcProgram *p = 0;
6447   void (*func) (OrcExecutor *);
6448
6449   if (!p_inited) {
6450     orc_once_mutex_lock ();
6451     if (!p_inited) {
6452       OrcCompileResult result;
6453
6454       p = orc_program_new ();
6455       orc_program_set_name (p, "orc_interleave2_s16");
6456       orc_program_set_backup_function (p, _backup_orc_interleave2_s16);
6457       orc_program_add_destination (p, 4, "d1");
6458       orc_program_add_source (p, 2, "s1");
6459       orc_program_add_source (p, 2, "s2");
6460
6461       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_S2, ORC_VAR_D1);
6462
6463       result = orc_program_compile (p);
6464     }
6465     p_inited = TRUE;
6466     orc_once_mutex_unlock ();
6467   }
6468   ex->program = p;
6469
6470   ex->n = n;
6471   ex->arrays[ORC_VAR_D1] = d1;
6472   ex->arrays[ORC_VAR_S1] = (void *)s1;
6473   ex->arrays[ORC_VAR_S2] = (void *)s2;
6474
6475   func = p->code_exec;
6476   func (ex);
6477 }
6478 #endif
6479
6480
6481 /* orc_interleave2_rrshift1_s16 */
6482 #ifdef DISABLE_ORC
6483 void
6484 orc_interleave2_rrshift1_s16 (int16_t * d1, const int16_t * s1, const int16_t * s2, int n){
6485   int i;
6486   orc_union32 * ORC_RESTRICT ptr0;
6487   const orc_union16 * ORC_RESTRICT ptr4;
6488   const orc_union16 * ORC_RESTRICT ptr5;
6489   orc_union16 var34;
6490   orc_union16 var35;
6491   orc_union16 var36;
6492   orc_union16 var37;
6493   orc_union32 var38;
6494   orc_union16 var39;
6495   orc_union16 var40;
6496   orc_union16 var41;
6497   orc_union16 var42;
6498
6499   ptr0 = (orc_union32 *)d1;
6500   ptr4 = (orc_union16 *)s1;
6501   ptr5 = (orc_union16 *)s2;
6502
6503     /* 1: loadpw */
6504     var35.i = 0x00000001; /* 1 or 4.94066e-324f */
6505     /* 5: loadpw */
6506     var37.i = 0x00000001; /* 1 or 4.94066e-324f */
6507
6508   for (i = 0; i < n; i++) {
6509     /* 0: loadw */
6510     var34 = ptr4[i];
6511     /* 2: addw */
6512     var39.i = var34.i + var35.i;
6513     /* 3: shrsw */
6514     var40.i = var39.i >> 1;
6515     /* 4: loadw */
6516     var36 = ptr5[i];
6517     /* 6: addw */
6518     var41.i = var36.i + var37.i;
6519     /* 7: shrsw */
6520     var42.i = var41.i >> 1;
6521     /* 8: mergewl */
6522     var38.i = ((orc_uint16)var40.i & 0x0000ffff) | ((orc_uint16)var42.i << 16);
6523     /* 9: storel */
6524     ptr0[i] = var38;
6525   }
6526
6527 }
6528
6529 #else
6530 static void
6531 _backup_orc_interleave2_rrshift1_s16 (OrcExecutor * ORC_RESTRICT ex)
6532 {
6533   int i;
6534   int n = ex->n;
6535   orc_union32 * ORC_RESTRICT ptr0;
6536   const orc_union16 * ORC_RESTRICT ptr4;
6537   const orc_union16 * ORC_RESTRICT ptr5;
6538   orc_union16 var34;
6539   orc_union16 var35;
6540   orc_union16 var36;
6541   orc_union16 var37;
6542   orc_union32 var38;
6543   orc_union16 var39;
6544   orc_union16 var40;
6545   orc_union16 var41;
6546   orc_union16 var42;
6547
6548   ptr0 = (orc_union32 *)ex->arrays[0];
6549   ptr4 = (orc_union16 *)ex->arrays[4];
6550   ptr5 = (orc_union16 *)ex->arrays[5];
6551
6552     /* 1: loadpw */
6553     var35.i = 0x00000001; /* 1 or 4.94066e-324f */
6554     /* 5: loadpw */
6555     var37.i = 0x00000001; /* 1 or 4.94066e-324f */
6556
6557   for (i = 0; i < n; i++) {
6558     /* 0: loadw */
6559     var34 = ptr4[i];
6560     /* 2: addw */
6561     var39.i = var34.i + var35.i;
6562     /* 3: shrsw */
6563     var40.i = var39.i >> 1;
6564     /* 4: loadw */
6565     var36 = ptr5[i];
6566     /* 6: addw */
6567     var41.i = var36.i + var37.i;
6568     /* 7: shrsw */
6569     var42.i = var41.i >> 1;
6570     /* 8: mergewl */
6571     var38.i = ((orc_uint16)var40.i & 0x0000ffff) | ((orc_uint16)var42.i << 16);
6572     /* 9: storel */
6573     ptr0[i] = var38;
6574   }
6575
6576 }
6577
6578 void
6579 orc_interleave2_rrshift1_s16 (int16_t * d1, const int16_t * s1, const int16_t * s2, int n)
6580 {
6581   OrcExecutor _ex, *ex = &_ex;
6582   static int p_inited = 0;
6583   static OrcProgram *p = 0;
6584   void (*func) (OrcExecutor *);
6585
6586   if (!p_inited) {
6587     orc_once_mutex_lock ();
6588     if (!p_inited) {
6589       OrcCompileResult result;
6590
6591       p = orc_program_new ();
6592       orc_program_set_name (p, "orc_interleave2_rrshift1_s16");
6593       orc_program_set_backup_function (p, _backup_orc_interleave2_rrshift1_s16);
6594       orc_program_add_destination (p, 4, "d1");
6595       orc_program_add_source (p, 2, "s1");
6596       orc_program_add_source (p, 2, "s2");
6597       orc_program_add_constant (p, 4, 0x00000001, "c1");
6598       orc_program_add_temporary (p, 2, "t1");
6599       orc_program_add_temporary (p, 2, "t2");
6600
6601       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_C1, ORC_VAR_D1);
6602       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
6603       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_C1, ORC_VAR_D1);
6604       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_D1);
6605       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1);
6606
6607       result = orc_program_compile (p);
6608     }
6609     p_inited = TRUE;
6610     orc_once_mutex_unlock ();
6611   }
6612   ex->program = p;
6613
6614   ex->n = n;
6615   ex->arrays[ORC_VAR_D1] = d1;
6616   ex->arrays[ORC_VAR_S1] = (void *)s1;
6617   ex->arrays[ORC_VAR_S2] = (void *)s2;
6618
6619   func = p->code_exec;
6620   func (ex);
6621 }
6622 #endif
6623
6624
6625 /* orc_deinterleave2_s16 */
6626 #ifdef DISABLE_ORC
6627 void
6628 orc_deinterleave2_s16 (int16_t * d1, int16_t * d2, const int16_t * s1, int n){
6629   int i;
6630   orc_union16 * ORC_RESTRICT ptr0;
6631   orc_union16 * ORC_RESTRICT ptr1;
6632   const orc_union32 * ORC_RESTRICT ptr4;
6633   orc_union32 var33;
6634   orc_union16 var34;
6635   orc_union16 var35;
6636   orc_union32 var36;
6637
6638   ptr0 = (orc_union16 *)d1;
6639   ptr1 = (orc_union16 *)d2;
6640   ptr4 = (orc_union32 *)s1;
6641
6642
6643   for (i = 0; i < n; i++) {
6644     /* 0: loadl */
6645     var33 = ptr4[i];
6646     /* 1: copyl */
6647     var36.i = var33.i;
6648     /* 2: select0lw */
6649     var34.i = (orc_uint32)var36.i & 0xffff;
6650     /* 3: storew */
6651     ptr0[i] = var34;
6652     /* 4: select1lw */
6653     var35.i = ((orc_uint32)var36.i >> 16)&0xffff;
6654     /* 5: storew */
6655     ptr1[i] = var35;
6656   }
6657
6658 }
6659
6660 #else
6661 static void
6662 _backup_orc_deinterleave2_s16 (OrcExecutor * ORC_RESTRICT ex)
6663 {
6664   int i;
6665   int n = ex->n;
6666   orc_union16 * ORC_RESTRICT ptr0;
6667   orc_union16 * ORC_RESTRICT ptr1;
6668   const orc_union32 * ORC_RESTRICT ptr4;
6669   orc_union32 var33;
6670   orc_union16 var34;
6671   orc_union16 var35;
6672   orc_union32 var36;
6673
6674   ptr0 = (orc_union16 *)ex->arrays[0];
6675   ptr1 = (orc_union16 *)ex->arrays[1];
6676   ptr4 = (orc_union32 *)ex->arrays[4];
6677
6678
6679   for (i = 0; i < n; i++) {
6680     /* 0: loadl */
6681     var33 = ptr4[i];
6682     /* 1: copyl */
6683     var36.i = var33.i;
6684     /* 2: select0lw */
6685     var34.i = (orc_uint32)var36.i & 0xffff;
6686     /* 3: storew */
6687     ptr0[i] = var34;
6688     /* 4: select1lw */
6689     var35.i = ((orc_uint32)var36.i >> 16)&0xffff;
6690     /* 5: storew */
6691     ptr1[i] = var35;
6692   }
6693
6694 }
6695
6696 void
6697 orc_deinterleave2_s16 (int16_t * d1, int16_t * d2, const int16_t * s1, int n)
6698 {
6699   OrcExecutor _ex, *ex = &_ex;
6700   static int p_inited = 0;
6701   static OrcProgram *p = 0;
6702   void (*func) (OrcExecutor *);
6703
6704   if (!p_inited) {
6705     orc_once_mutex_lock ();
6706     if (!p_inited) {
6707       OrcCompileResult result;
6708
6709       p = orc_program_new ();
6710       orc_program_set_name (p, "orc_deinterleave2_s16");
6711       orc_program_set_backup_function (p, _backup_orc_deinterleave2_s16);
6712       orc_program_add_destination (p, 2, "d1");
6713       orc_program_add_destination (p, 2, "d2");
6714       orc_program_add_source (p, 4, "s1");
6715       orc_program_add_temporary (p, 4, "t1");
6716
6717       orc_program_append_2 (p, "copyl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
6718       orc_program_append_2 (p, "select0lw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
6719       orc_program_append_2 (p, "select1lw", 0, ORC_VAR_D2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
6720
6721       result = orc_program_compile (p);
6722     }
6723     p_inited = TRUE;
6724     orc_once_mutex_unlock ();
6725   }
6726   ex->program = p;
6727
6728   ex->n = n;
6729   ex->arrays[ORC_VAR_D1] = d1;
6730   ex->arrays[ORC_VAR_D2] = d2;
6731   ex->arrays[ORC_VAR_S1] = (void *)s1;
6732
6733   func = p->code_exec;
6734   func (ex);
6735 }
6736 #endif
6737
6738
6739 /* orc_deinterleave2_lshift1_s16 */
6740 #ifdef DISABLE_ORC
6741 void
6742 orc_deinterleave2_lshift1_s16 (int16_t * d1, int16_t * d2, const int16_t * s1, int n){
6743   int i;
6744   orc_union16 * ORC_RESTRICT ptr0;
6745   orc_union16 * ORC_RESTRICT ptr1;
6746   const orc_union32 * ORC_RESTRICT ptr4;
6747   orc_union32 var35;
6748   orc_union16 var36;
6749   orc_union16 var37;
6750   orc_union32 var38;
6751   orc_union16 var39;
6752   orc_union16 var40;
6753
6754   ptr0 = (orc_union16 *)d1;
6755   ptr1 = (orc_union16 *)d2;
6756   ptr4 = (orc_union32 *)s1;
6757
6758
6759   for (i = 0; i < n; i++) {
6760     /* 0: loadl */
6761     var35 = ptr4[i];
6762     /* 1: copyl */
6763     var38.i = var35.i;
6764     /* 2: select0lw */
6765     var39.i = (orc_uint32)var38.i & 0xffff;
6766     /* 3: shlw */
6767     var36.i = var39.i << 1;
6768     /* 4: storew */
6769     ptr0[i] = var36;
6770     /* 5: select1lw */
6771     var40.i = ((orc_uint32)var38.i >> 16)&0xffff;
6772     /* 6: shlw */
6773     var37.i = var40.i << 1;
6774     /* 7: storew */
6775     ptr1[i] = var37;
6776   }
6777
6778 }
6779
6780 #else
6781 static void
6782 _backup_orc_deinterleave2_lshift1_s16 (OrcExecutor * ORC_RESTRICT ex)
6783 {
6784   int i;
6785   int n = ex->n;
6786   orc_union16 * ORC_RESTRICT ptr0;
6787   orc_union16 * ORC_RESTRICT ptr1;
6788   const orc_union32 * ORC_RESTRICT ptr4;
6789   orc_union32 var35;
6790   orc_union16 var36;
6791   orc_union16 var37;
6792   orc_union32 var38;
6793   orc_union16 var39;
6794   orc_union16 var40;
6795
6796   ptr0 = (orc_union16 *)ex->arrays[0];
6797   ptr1 = (orc_union16 *)ex->arrays[1];
6798   ptr4 = (orc_union32 *)ex->arrays[4];
6799
6800
6801   for (i = 0; i < n; i++) {
6802     /* 0: loadl */
6803     var35 = ptr4[i];
6804     /* 1: copyl */
6805     var38.i = var35.i;
6806     /* 2: select0lw */
6807     var39.i = (orc_uint32)var38.i & 0xffff;
6808     /* 3: shlw */
6809     var36.i = var39.i << 1;
6810     /* 4: storew */
6811     ptr0[i] = var36;
6812     /* 5: select1lw */
6813     var40.i = ((orc_uint32)var38.i >> 16)&0xffff;
6814     /* 6: shlw */
6815     var37.i = var40.i << 1;
6816     /* 7: storew */
6817     ptr1[i] = var37;
6818   }
6819
6820 }
6821
6822 void
6823 orc_deinterleave2_lshift1_s16 (int16_t * d1, int16_t * d2, const int16_t * s1, int n)
6824 {
6825   OrcExecutor _ex, *ex = &_ex;
6826   static int p_inited = 0;
6827   static OrcProgram *p = 0;
6828   void (*func) (OrcExecutor *);
6829
6830   if (!p_inited) {
6831     orc_once_mutex_lock ();
6832     if (!p_inited) {
6833       OrcCompileResult result;
6834
6835       p = orc_program_new ();
6836       orc_program_set_name (p, "orc_deinterleave2_lshift1_s16");
6837       orc_program_set_backup_function (p, _backup_orc_deinterleave2_lshift1_s16);
6838       orc_program_add_destination (p, 2, "d1");
6839       orc_program_add_destination (p, 2, "d2");
6840       orc_program_add_source (p, 4, "s1");
6841       orc_program_add_constant (p, 4, 0x00000001, "c1");
6842       orc_program_add_temporary (p, 4, "t1");
6843       orc_program_add_temporary (p, 2, "t2");
6844       orc_program_add_temporary (p, 2, "t3");
6845
6846       orc_program_append_2 (p, "copyl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
6847       orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
6848       orc_program_append_2 (p, "shlw", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_D1);
6849       orc_program_append_2 (p, "select1lw", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
6850       orc_program_append_2 (p, "shlw", 0, ORC_VAR_D2, ORC_VAR_T3, ORC_VAR_C1, ORC_VAR_D1);
6851
6852       result = orc_program_compile (p);
6853     }
6854     p_inited = TRUE;
6855     orc_once_mutex_unlock ();
6856   }
6857   ex->program = p;
6858
6859   ex->n = n;
6860   ex->arrays[ORC_VAR_D1] = d1;
6861   ex->arrays[ORC_VAR_D2] = d2;
6862   ex->arrays[ORC_VAR_S1] = (void *)s1;
6863
6864   func = p->code_exec;
6865   func (ex);
6866 }
6867 #endif
6868
6869
6870 /* orc_haar_deint_lshift1_split_s16 */
6871 #ifdef DISABLE_ORC
6872 void
6873 orc_haar_deint_lshift1_split_s16 (int16_t * d1, int16_t * d2, const int16_t * s1, int n){
6874   int i;
6875   orc_union16 * ORC_RESTRICT ptr0;
6876   orc_union16 * ORC_RESTRICT ptr1;
6877   const orc_union32 * ORC_RESTRICT ptr4;
6878   orc_union32 var35;
6879   orc_union16 var36;
6880   orc_union16 var37;
6881   orc_union16 var38;
6882   orc_union32 var39;
6883   orc_union16 var40;
6884   orc_union16 var41;
6885   orc_union16 var42;
6886   orc_union16 var43;
6887   orc_union16 var44;
6888   orc_union16 var45;
6889
6890   ptr0 = (orc_union16 *)d1;
6891   ptr1 = (orc_union16 *)d2;
6892   ptr4 = (orc_union32 *)s1;
6893
6894     /* 9: loadpw */
6895     var37.i = 0x00000000; /* 0 or 0f */
6896
6897   for (i = 0; i < n; i++) {
6898     /* 0: loadl */
6899     var35 = ptr4[i];
6900     /* 1: copyl */
6901     var39.i = var35.i;
6902     /* 2: select0lw */
6903     var40.i = (orc_uint32)var39.i & 0xffff;
6904     /* 3: select1lw */
6905     var41.i = ((orc_uint32)var39.i >> 16)&0xffff;
6906     /* 4: shlw */
6907     var42.i = var40.i << 1;
6908     /* 5: shlw */
6909     var43.i = var41.i << 1;
6910     /* 6: subw */
6911     var44.i = var43.i - var42.i;
6912     /* 7: copyw */
6913     var36.i = var44.i;
6914     /* 8: storew */
6915     ptr1[i] = var36;
6916     /* 10: avgsw */
6917     var45.i = (var44.i + var37.i + 1)>>1;
6918     /* 11: addw */
6919     var38.i = var42.i + var45.i;
6920     /* 12: storew */
6921     ptr0[i] = var38;
6922   }
6923
6924 }
6925
6926 #else
6927 static void
6928 _backup_orc_haar_deint_lshift1_split_s16 (OrcExecutor * ORC_RESTRICT ex)
6929 {
6930   int i;
6931   int n = ex->n;
6932   orc_union16 * ORC_RESTRICT ptr0;
6933   orc_union16 * ORC_RESTRICT ptr1;
6934   const orc_union32 * ORC_RESTRICT ptr4;
6935   orc_union32 var35;
6936   orc_union16 var36;
6937   orc_union16 var37;
6938   orc_union16 var38;
6939   orc_union32 var39;
6940   orc_union16 var40;
6941   orc_union16 var41;
6942   orc_union16 var42;
6943   orc_union16 var43;
6944   orc_union16 var44;
6945   orc_union16 var45;
6946
6947   ptr0 = (orc_union16 *)ex->arrays[0];
6948   ptr1 = (orc_union16 *)ex->arrays[1];
6949   ptr4 = (orc_union32 *)ex->arrays[4];
6950
6951     /* 9: loadpw */
6952     var37.i = 0x00000000; /* 0 or 0f */
6953
6954   for (i = 0; i < n; i++) {
6955     /* 0: loadl */
6956     var35 = ptr4[i];
6957     /* 1: copyl */
6958     var39.i = var35.i;
6959     /* 2: select0lw */
6960     var40.i = (orc_uint32)var39.i & 0xffff;
6961     /* 3: select1lw */
6962     var41.i = ((orc_uint32)var39.i >> 16)&0xffff;
6963     /* 4: shlw */
6964     var42.i = var40.i << 1;
6965     /* 5: shlw */
6966     var43.i = var41.i << 1;
6967     /* 6: subw */
6968     var44.i = var43.i - var42.i;
6969     /* 7: copyw */
6970     var36.i = var44.i;
6971     /* 8: storew */
6972     ptr1[i] = var36;
6973     /* 10: avgsw */
6974     var45.i = (var44.i + var37.i + 1)>>1;
6975     /* 11: addw */
6976     var38.i = var42.i + var45.i;
6977     /* 12: storew */
6978     ptr0[i] = var38;
6979   }
6980
6981 }
6982
6983 void
6984 orc_haar_deint_lshift1_split_s16 (int16_t * d1, int16_t * d2, const int16_t * s1, int n)
6985 {
6986   OrcExecutor _ex, *ex = &_ex;
6987   static int p_inited = 0;
6988   static OrcProgram *p = 0;
6989   void (*func) (OrcExecutor *);
6990
6991   if (!p_inited) {
6992     orc_once_mutex_lock ();
6993     if (!p_inited) {
6994       OrcCompileResult result;
6995
6996       p = orc_program_new ();
6997       orc_program_set_name (p, "orc_haar_deint_lshift1_split_s16");
6998       orc_program_set_backup_function (p, _backup_orc_haar_deint_lshift1_split_s16);
6999       orc_program_add_destination (p, 2, "d1");
7000       orc_program_add_destination (p, 2, "d2");
7001       orc_program_add_source (p, 4, "s1");
7002       orc_program_add_constant (p, 4, 0x00000001, "c1");
7003       orc_program_add_constant (p, 4, 0x00000000, "c2");
7004       orc_program_add_temporary (p, 2, "t1");
7005       orc_program_add_temporary (p, 2, "t2");
7006       orc_program_add_temporary (p, 4, "t3");
7007
7008       orc_program_append_2 (p, "copyl", 0, ORC_VAR_T3, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
7009       orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_D1, ORC_VAR_D1);
7010       orc_program_append_2 (p, "select1lw", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_D1, ORC_VAR_D1);
7011       orc_program_append_2 (p, "shlw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
7012       orc_program_append_2 (p, "shlw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_D1);
7013       orc_program_append_2 (p, "subw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1);
7014       orc_program_append_2 (p, "copyw", 0, ORC_VAR_D2, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
7015       orc_program_append_2 (p, "avgsw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C2, ORC_VAR_D1);
7016       orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1);
7017
7018       result = orc_program_compile (p);
7019     }
7020     p_inited = TRUE;
7021     orc_once_mutex_unlock ();
7022   }
7023   ex->program = p;
7024
7025   ex->n = n;
7026   ex->arrays[ORC_VAR_D1] = d1;
7027   ex->arrays[ORC_VAR_D2] = d2;
7028   ex->arrays[ORC_VAR_S1] = (void *)s1;
7029
7030   func = p->code_exec;
7031   func (ex);
7032 }
7033 #endif
7034
7035
7036 /* orc_haar_deint_split_s16 */
7037 #ifdef DISABLE_ORC
7038 void
7039 orc_haar_deint_split_s16 (int16_t * d1, int16_t * d2, const int16_t * s1, int n){
7040   int i;
7041   orc_union16 * ORC_RESTRICT ptr0;
7042   orc_union16 * ORC_RESTRICT ptr1;
7043   const orc_union32 * ORC_RESTRICT ptr4;
7044   orc_union32 var35;
7045   orc_union16 var36;
7046   orc_union16 var37;
7047   orc_union16 var38;
7048   orc_union32 var39;
7049   orc_union16 var40;
7050   orc_union16 var41;
7051   orc_union16 var42;
7052   orc_union16 var43;
7053
7054   ptr0 = (orc_union16 *)d1;
7055   ptr1 = (orc_union16 *)d2;
7056   ptr4 = (orc_union32 *)s1;
7057
7058     /* 7: loadpw */
7059     var37.i = 0x00000000; /* 0 or 0f */
7060
7061   for (i = 0; i < n; i++) {
7062     /* 0: loadl */
7063     var35 = ptr4[i];
7064     /* 1: copyl */
7065     var39.i = var35.i;
7066     /* 2: select0lw */
7067     var40.i = (orc_uint32)var39.i & 0xffff;
7068     /* 3: select1lw */
7069     var41.i = ((orc_uint32)var39.i >> 16)&0xffff;
7070     /* 4: subw */
7071     var42.i = var41.i - var40.i;
7072     /* 5: copyw */
7073     var36.i = var42.i;
7074     /* 6: storew */
7075     ptr1[i] = var36;
7076     /* 8: avgsw */
7077     var43.i = (var42.i + var37.i + 1)>>1;
7078     /* 9: addw */
7079     var38.i = var40.i + var43.i;
7080     /* 10: storew */
7081     ptr0[i] = var38;
7082   }
7083
7084 }
7085
7086 #else
7087 static void
7088 _backup_orc_haar_deint_split_s16 (OrcExecutor * ORC_RESTRICT ex)
7089 {
7090   int i;
7091   int n = ex->n;
7092   orc_union16 * ORC_RESTRICT ptr0;
7093   orc_union16 * ORC_RESTRICT ptr1;
7094   const orc_union32 * ORC_RESTRICT ptr4;
7095   orc_union32 var35;
7096   orc_union16 var36;
7097   orc_union16 var37;
7098   orc_union16 var38;
7099   orc_union32 var39;
7100   orc_union16 var40;
7101   orc_union16 var41;
7102   orc_union16 var42;
7103   orc_union16 var43;
7104
7105   ptr0 = (orc_union16 *)ex->arrays[0];
7106   ptr1 = (orc_union16 *)ex->arrays[1];
7107   ptr4 = (orc_union32 *)ex->arrays[4];
7108
7109     /* 7: loadpw */
7110     var37.i = 0x00000000; /* 0 or 0f */
7111
7112   for (i = 0; i < n; i++) {
7113     /* 0: loadl */
7114     var35 = ptr4[i];
7115     /* 1: copyl */
7116     var39.i = var35.i;
7117     /* 2: select0lw */
7118     var40.i = (orc_uint32)var39.i & 0xffff;
7119     /* 3: select1lw */
7120     var41.i = ((orc_uint32)var39.i >> 16)&0xffff;
7121     /* 4: subw */
7122     var42.i = var41.i - var40.i;
7123     /* 5: copyw */
7124     var36.i = var42.i;
7125     /* 6: storew */
7126     ptr1[i] = var36;
7127     /* 8: avgsw */
7128     var43.i = (var42.i + var37.i + 1)>>1;
7129     /* 9: addw */
7130     var38.i = var40.i + var43.i;
7131     /* 10: storew */
7132     ptr0[i] = var38;
7133   }
7134
7135 }
7136
7137 void
7138 orc_haar_deint_split_s16 (int16_t * d1, int16_t * d2, const int16_t * s1, int n)
7139 {
7140   OrcExecutor _ex, *ex = &_ex;
7141   static int p_inited = 0;
7142   static OrcProgram *p = 0;
7143   void (*func) (OrcExecutor *);
7144
7145   if (!p_inited) {
7146     orc_once_mutex_lock ();
7147     if (!p_inited) {
7148       OrcCompileResult result;
7149
7150       p = orc_program_new ();
7151       orc_program_set_name (p, "orc_haar_deint_split_s16");
7152       orc_program_set_backup_function (p, _backup_orc_haar_deint_split_s16);
7153       orc_program_add_destination (p, 2, "d1");
7154       orc_program_add_destination (p, 2, "d2");
7155       orc_program_add_source (p, 4, "s1");
7156       orc_program_add_constant (p, 4, 0x00000000, "c1");
7157       orc_program_add_temporary (p, 2, "t1");
7158       orc_program_add_temporary (p, 2, "t2");
7159       orc_program_add_temporary (p, 4, "t3");
7160
7161       orc_program_append_2 (p, "copyl", 0, ORC_VAR_T3, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
7162       orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_D1, ORC_VAR_D1);
7163       orc_program_append_2 (p, "select1lw", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_D1, ORC_VAR_D1);
7164       orc_program_append_2 (p, "subw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1);
7165       orc_program_append_2 (p, "copyw", 0, ORC_VAR_D2, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
7166       orc_program_append_2 (p, "avgsw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_D1);
7167       orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1);
7168
7169       result = orc_program_compile (p);
7170     }
7171     p_inited = TRUE;
7172     orc_once_mutex_unlock ();
7173   }
7174   ex->program = p;
7175
7176   ex->n = n;
7177   ex->arrays[ORC_VAR_D1] = d1;
7178   ex->arrays[ORC_VAR_D2] = d2;
7179   ex->arrays[ORC_VAR_S1] = (void *)s1;
7180
7181   func = p->code_exec;
7182   func (ex);
7183 }
7184 #endif
7185
7186
7187 /* orc_haar_split_s16_lo */
7188 #ifdef DISABLE_ORC
7189 void
7190 orc_haar_split_s16_lo (int16_t * d1, const int16_t * s1, const int16_t * s2, int n){
7191   int i;
7192   orc_union16 * ORC_RESTRICT ptr0;
7193   const orc_union16 * ORC_RESTRICT ptr4;
7194   const orc_union16 * ORC_RESTRICT ptr5;
7195   orc_union16 var34;
7196   orc_union16 var35;
7197   orc_union16 var36;
7198   orc_union16 var37;
7199   orc_union16 var38;
7200   orc_union16 var39;
7201   orc_union16 var40;
7202
7203   ptr0 = (orc_union16 *)d1;
7204   ptr4 = (orc_union16 *)s1;
7205   ptr5 = (orc_union16 *)s2;
7206
7207     /* 4: loadpw */
7208     var36.i = 0x00000000; /* 0 or 0f */
7209
7210   for (i = 0; i < n; i++) {
7211     /* 0: loadw */
7212     var34 = ptr4[i];
7213     /* 1: copyw */
7214     var38.i = var34.i;
7215     /* 2: loadw */
7216     var35 = ptr5[i];
7217     /* 3: subw */
7218     var39.i = var35.i - var38.i;
7219     /* 5: avgsw */
7220     var40.i = (var39.i + var36.i + 1)>>1;
7221     /* 6: addw */
7222     var37.i = var38.i + var40.i;
7223     /* 7: storew */
7224     ptr0[i] = var37;
7225   }
7226
7227 }
7228
7229 #else
7230 static void
7231 _backup_orc_haar_split_s16_lo (OrcExecutor * ORC_RESTRICT ex)
7232 {
7233   int i;
7234   int n = ex->n;
7235   orc_union16 * ORC_RESTRICT ptr0;
7236   const orc_union16 * ORC_RESTRICT ptr4;
7237   const orc_union16 * ORC_RESTRICT ptr5;
7238   orc_union16 var34;
7239   orc_union16 var35;
7240   orc_union16 var36;
7241   orc_union16 var37;
7242   orc_union16 var38;
7243   orc_union16 var39;
7244   orc_union16 var40;
7245
7246   ptr0 = (orc_union16 *)ex->arrays[0];
7247   ptr4 = (orc_union16 *)ex->arrays[4];
7248   ptr5 = (orc_union16 *)ex->arrays[5];
7249
7250     /* 4: loadpw */
7251     var36.i = 0x00000000; /* 0 or 0f */
7252
7253   for (i = 0; i < n; i++) {
7254     /* 0: loadw */
7255     var34 = ptr4[i];
7256     /* 1: copyw */
7257     var38.i = var34.i;
7258     /* 2: loadw */
7259     var35 = ptr5[i];
7260     /* 3: subw */
7261     var39.i = var35.i - var38.i;
7262     /* 5: avgsw */
7263     var40.i = (var39.i + var36.i + 1)>>1;
7264     /* 6: addw */
7265     var37.i = var38.i + var40.i;
7266     /* 7: storew */
7267     ptr0[i] = var37;
7268   }
7269
7270 }
7271
7272 void
7273 orc_haar_split_s16_lo (int16_t * d1, const int16_t * s1, const int16_t * s2, int n)
7274 {
7275   OrcExecutor _ex, *ex = &_ex;
7276   static int p_inited = 0;
7277   static OrcProgram *p = 0;
7278   void (*func) (OrcExecutor *);
7279
7280   if (!p_inited) {
7281     orc_once_mutex_lock ();
7282     if (!p_inited) {
7283       OrcCompileResult result;
7284
7285       p = orc_program_new ();
7286       orc_program_set_name (p, "orc_haar_split_s16_lo");
7287       orc_program_set_backup_function (p, _backup_orc_haar_split_s16_lo);
7288       orc_program_add_destination (p, 2, "d1");
7289       orc_program_add_source (p, 2, "s1");
7290       orc_program_add_source (p, 2, "s2");
7291       orc_program_add_constant (p, 4, 0x00000000, "c1");
7292       orc_program_add_temporary (p, 2, "t1");
7293       orc_program_add_temporary (p, 2, "t2");
7294
7295       orc_program_append_2 (p, "copyw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
7296       orc_program_append_2 (p, "subw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_T1, ORC_VAR_D1);
7297       orc_program_append_2 (p, "avgsw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_D1);
7298       orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1);
7299
7300       result = orc_program_compile (p);
7301     }
7302     p_inited = TRUE;
7303     orc_once_mutex_unlock ();
7304   }
7305   ex->program = p;
7306
7307   ex->n = n;
7308   ex->arrays[ORC_VAR_D1] = d1;
7309   ex->arrays[ORC_VAR_S1] = (void *)s1;
7310   ex->arrays[ORC_VAR_S2] = (void *)s2;
7311
7312   func = p->code_exec;
7313   func (ex);
7314 }
7315 #endif
7316
7317
7318 /* orc_haar_split_s16_hi */
7319 #ifdef DISABLE_ORC
7320 void
7321 orc_haar_split_s16_hi (int16_t * d1, const int16_t * s1, const int16_t * s2, int n){
7322   int i;
7323   orc_union16 * ORC_RESTRICT ptr0;
7324   const orc_union16 * ORC_RESTRICT ptr4;
7325   const orc_union16 * ORC_RESTRICT ptr5;
7326   orc_union16 var32;
7327   orc_union16 var33;
7328   orc_union16 var34;
7329
7330   ptr0 = (orc_union16 *)d1;
7331   ptr4 = (orc_union16 *)s1;
7332   ptr5 = (orc_union16 *)s2;
7333
7334
7335   for (i = 0; i < n; i++) {
7336     /* 0: loadw */
7337     var32 = ptr5[i];
7338     /* 1: loadw */
7339     var33 = ptr4[i];
7340     /* 2: subw */
7341     var34.i = var32.i - var33.i;
7342     /* 3: storew */
7343     ptr0[i] = var34;
7344   }
7345
7346 }
7347
7348 #else
7349 static void
7350 _backup_orc_haar_split_s16_hi (OrcExecutor * ORC_RESTRICT ex)
7351 {
7352   int i;
7353   int n = ex->n;
7354   orc_union16 * ORC_RESTRICT ptr0;
7355   const orc_union16 * ORC_RESTRICT ptr4;
7356   const orc_union16 * ORC_RESTRICT ptr5;
7357   orc_union16 var32;
7358   orc_union16 var33;
7359   orc_union16 var34;
7360
7361   ptr0 = (orc_union16 *)ex->arrays[0];
7362   ptr4 = (orc_union16 *)ex->arrays[4];
7363   ptr5 = (orc_union16 *)ex->arrays[5];
7364
7365
7366   for (i = 0; i < n; i++) {
7367     /* 0: loadw */
7368     var32 = ptr5[i];
7369     /* 1: loadw */
7370     var33 = ptr4[i];
7371     /* 2: subw */
7372     var34.i = var32.i - var33.i;
7373     /* 3: storew */
7374     ptr0[i] = var34;
7375   }
7376
7377 }
7378
7379 void
7380 orc_haar_split_s16_hi (int16_t * d1, const int16_t * s1, const int16_t * s2, int n)
7381 {
7382   OrcExecutor _ex, *ex = &_ex;
7383   static int p_inited = 0;
7384   static OrcProgram *p = 0;
7385   void (*func) (OrcExecutor *);
7386
7387   if (!p_inited) {
7388     orc_once_mutex_lock ();
7389     if (!p_inited) {
7390       OrcCompileResult result;
7391
7392       p = orc_program_new ();
7393       orc_program_set_name (p, "orc_haar_split_s16_hi");
7394       orc_program_set_backup_function (p, _backup_orc_haar_split_s16_hi);
7395       orc_program_add_destination (p, 2, "d1");
7396       orc_program_add_source (p, 2, "s1");
7397       orc_program_add_source (p, 2, "s2");
7398
7399       orc_program_append_2 (p, "subw", 0, ORC_VAR_D1, ORC_VAR_S2, ORC_VAR_S1, ORC_VAR_D1);
7400
7401       result = orc_program_compile (p);
7402     }
7403     p_inited = TRUE;
7404     orc_once_mutex_unlock ();
7405   }
7406   ex->program = p;
7407
7408   ex->n = n;
7409   ex->arrays[ORC_VAR_D1] = d1;
7410   ex->arrays[ORC_VAR_S1] = (void *)s1;
7411   ex->arrays[ORC_VAR_S2] = (void *)s2;
7412
7413   func = p->code_exec;
7414   func (ex);
7415 }
7416 #endif
7417
7418
7419 /* orc_haar_split_s16_op */
7420 #ifdef DISABLE_ORC
7421 void
7422 orc_haar_split_s16_op (int16_t * d1, int16_t * d2, const int16_t * s1, const int16_t * s2, int n){
7423   int i;
7424   orc_union16 * ORC_RESTRICT ptr0;
7425   orc_union16 * ORC_RESTRICT ptr1;
7426   const orc_union16 * ORC_RESTRICT ptr4;
7427   const orc_union16 * ORC_RESTRICT ptr5;
7428   orc_union16 var34;
7429   orc_union16 var35;
7430   orc_union16 var36;
7431   orc_union16 var37;
7432   orc_union16 var38;
7433   orc_union16 var39;
7434   orc_union16 var40;
7435   orc_union16 var41;
7436
7437   ptr0 = (orc_union16 *)d1;
7438   ptr1 = (orc_union16 *)d2;
7439   ptr4 = (orc_union16 *)s1;
7440   ptr5 = (orc_union16 *)s2;
7441
7442     /* 6: loadpw */
7443     var37.i = 0x00000000; /* 0 or 0f */
7444
7445   for (i = 0; i < n; i++) {
7446     /* 0: loadw */
7447     var34 = ptr4[i];
7448     /* 1: copyw */
7449     var39.i = var34.i;
7450     /* 2: loadw */
7451     var35 = ptr5[i];
7452     /* 3: subw */
7453     var40.i = var35.i - var39.i;
7454     /* 4: copyw */
7455     var36.i = var40.i;
7456     /* 5: storew */
7457     ptr1[i] = var36;
7458     /* 7: avgsw */
7459     var41.i = (var40.i + var37.i + 1)>>1;
7460     /* 8: addw */
7461     var38.i = var39.i + var41.i;
7462     /* 9: storew */
7463     ptr0[i] = var38;
7464   }
7465
7466 }
7467
7468 #else
7469 static void
7470 _backup_orc_haar_split_s16_op (OrcExecutor * ORC_RESTRICT ex)
7471 {
7472   int i;
7473   int n = ex->n;
7474   orc_union16 * ORC_RESTRICT ptr0;
7475   orc_union16 * ORC_RESTRICT ptr1;
7476   const orc_union16 * ORC_RESTRICT ptr4;
7477   const orc_union16 * ORC_RESTRICT ptr5;
7478   orc_union16 var34;
7479   orc_union16 var35;
7480   orc_union16 var36;
7481   orc_union16 var37;
7482   orc_union16 var38;
7483   orc_union16 var39;
7484   orc_union16 var40;
7485   orc_union16 var41;
7486
7487   ptr0 = (orc_union16 *)ex->arrays[0];
7488   ptr1 = (orc_union16 *)ex->arrays[1];
7489   ptr4 = (orc_union16 *)ex->arrays[4];
7490   ptr5 = (orc_union16 *)ex->arrays[5];
7491
7492     /* 6: loadpw */
7493     var37.i = 0x00000000; /* 0 or 0f */
7494
7495   for (i = 0; i < n; i++) {
7496     /* 0: loadw */
7497     var34 = ptr4[i];
7498     /* 1: copyw */
7499     var39.i = var34.i;
7500     /* 2: loadw */
7501     var35 = ptr5[i];
7502     /* 3: subw */
7503     var40.i = var35.i - var39.i;
7504     /* 4: copyw */
7505     var36.i = var40.i;
7506     /* 5: storew */
7507     ptr1[i] = var36;
7508     /* 7: avgsw */
7509     var41.i = (var40.i + var37.i + 1)>>1;
7510     /* 8: addw */
7511     var38.i = var39.i + var41.i;
7512     /* 9: storew */
7513     ptr0[i] = var38;
7514   }
7515
7516 }
7517
7518 void
7519 orc_haar_split_s16_op (int16_t * d1, int16_t * d2, const int16_t * s1, const int16_t * s2, int n)
7520 {
7521   OrcExecutor _ex, *ex = &_ex;
7522   static int p_inited = 0;
7523   static OrcProgram *p = 0;
7524   void (*func) (OrcExecutor *);
7525
7526   if (!p_inited) {
7527     orc_once_mutex_lock ();
7528     if (!p_inited) {
7529       OrcCompileResult result;
7530
7531       p = orc_program_new ();
7532       orc_program_set_name (p, "orc_haar_split_s16_op");
7533       orc_program_set_backup_function (p, _backup_orc_haar_split_s16_op);
7534       orc_program_add_destination (p, 2, "d1");
7535       orc_program_add_destination (p, 2, "d2");
7536       orc_program_add_source (p, 2, "s1");
7537       orc_program_add_source (p, 2, "s2");
7538       orc_program_add_constant (p, 4, 0x00000000, "c1");
7539       orc_program_add_temporary (p, 2, "t1");
7540       orc_program_add_temporary (p, 2, "t2");
7541
7542       orc_program_append_2 (p, "copyw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
7543       orc_program_append_2 (p, "subw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_T1, ORC_VAR_D1);
7544       orc_program_append_2 (p, "copyw", 0, ORC_VAR_D2, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
7545       orc_program_append_2 (p, "avgsw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_D1);
7546       orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1);
7547
7548       result = orc_program_compile (p);
7549     }
7550     p_inited = TRUE;
7551     orc_once_mutex_unlock ();
7552   }
7553   ex->program = p;
7554
7555   ex->n = n;
7556   ex->arrays[ORC_VAR_D1] = d1;
7557   ex->arrays[ORC_VAR_D2] = d2;
7558   ex->arrays[ORC_VAR_S1] = (void *)s1;
7559   ex->arrays[ORC_VAR_S2] = (void *)s2;
7560
7561   func = p->code_exec;
7562   func (ex);
7563 }
7564 #endif
7565
7566
7567 /* orc_haar_split_s16 */
7568 #ifdef DISABLE_ORC
7569 void
7570 orc_haar_split_s16 (int16_t * d1, int16_t * d2, int n){
7571   int i;
7572   orc_union16 * ORC_RESTRICT ptr0;
7573   orc_union16 * ORC_RESTRICT ptr1;
7574   orc_union16 var34;
7575   orc_union16 var35;
7576   orc_union16 var36;
7577   orc_union16 var37;
7578   orc_union16 var38;
7579   orc_union16 var39;
7580   orc_union16 var40;
7581   orc_union16 var41;
7582   orc_union16 var42;
7583
7584   ptr0 = (orc_union16 *)d1;
7585   ptr1 = (orc_union16 *)d2;
7586
7587     /* 7: loadpw */
7588     var37.i = 0x00000000; /* 0 or 0f */
7589
7590   for (i = 0; i < n; i++) {
7591     /* 0: loadw */
7592     var34 = ptr0[i];
7593     /* 1: copyw */
7594     var39.i = var34.i;
7595     /* 2: loadw */
7596     var35 = ptr1[i];
7597     /* 3: copyw */
7598     var40.i = var35.i;
7599     /* 4: subw */
7600     var41.i = var40.i - var39.i;
7601     /* 5: copyw */
7602     var36.i = var41.i;
7603     /* 6: storew */
7604     ptr1[i] = var36;
7605     /* 8: avgsw */
7606     var42.i = (var41.i + var37.i + 1)>>1;
7607     /* 9: addw */
7608     var38.i = var39.i + var42.i;
7609     /* 10: storew */
7610     ptr0[i] = var38;
7611   }
7612
7613 }
7614
7615 #else
7616 static void
7617 _backup_orc_haar_split_s16 (OrcExecutor * ORC_RESTRICT ex)
7618 {
7619   int i;
7620   int n = ex->n;
7621   orc_union16 * ORC_RESTRICT ptr0;
7622   orc_union16 * ORC_RESTRICT ptr1;
7623   orc_union16 var34;
7624   orc_union16 var35;
7625   orc_union16 var36;
7626   orc_union16 var37;
7627   orc_union16 var38;
7628   orc_union16 var39;
7629   orc_union16 var40;
7630   orc_union16 var41;
7631   orc_union16 var42;
7632
7633   ptr0 = (orc_union16 *)ex->arrays[0];
7634   ptr1 = (orc_union16 *)ex->arrays[1];
7635
7636     /* 7: loadpw */
7637     var37.i = 0x00000000; /* 0 or 0f */
7638
7639   for (i = 0; i < n; i++) {
7640     /* 0: loadw */
7641     var34 = ptr0[i];
7642     /* 1: copyw */
7643     var39.i = var34.i;
7644     /* 2: loadw */
7645     var35 = ptr1[i];
7646     /* 3: copyw */
7647     var40.i = var35.i;
7648     /* 4: subw */
7649     var41.i = var40.i - var39.i;
7650     /* 5: copyw */
7651     var36.i = var41.i;
7652     /* 6: storew */
7653     ptr1[i] = var36;
7654     /* 8: avgsw */
7655     var42.i = (var41.i + var37.i + 1)>>1;
7656     /* 9: addw */
7657     var38.i = var39.i + var42.i;
7658     /* 10: storew */
7659     ptr0[i] = var38;
7660   }
7661
7662 }
7663
7664 void
7665 orc_haar_split_s16 (int16_t * d1, int16_t * d2, int n)
7666 {
7667   OrcExecutor _ex, *ex = &_ex;
7668   static int p_inited = 0;
7669   static OrcProgram *p = 0;
7670   void (*func) (OrcExecutor *);
7671
7672   if (!p_inited) {
7673     orc_once_mutex_lock ();
7674     if (!p_inited) {
7675       OrcCompileResult result;
7676
7677       p = orc_program_new ();
7678       orc_program_set_name (p, "orc_haar_split_s16");
7679       orc_program_set_backup_function (p, _backup_orc_haar_split_s16);
7680       orc_program_add_destination (p, 2, "d1");
7681       orc_program_add_destination (p, 2, "d2");
7682       orc_program_add_constant (p, 4, 0x00000000, "c1");
7683       orc_program_add_temporary (p, 2, "t1");
7684       orc_program_add_temporary (p, 2, "t2");
7685
7686       orc_program_append_2 (p, "copyw", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_D1);
7687       orc_program_append_2 (p, "copyw", 0, ORC_VAR_T2, ORC_VAR_D2, ORC_VAR_D1, ORC_VAR_D1);
7688       orc_program_append_2 (p, "subw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1);
7689       orc_program_append_2 (p, "copyw", 0, ORC_VAR_D2, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
7690       orc_program_append_2 (p, "avgsw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_D1);
7691       orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1);
7692
7693       result = orc_program_compile (p);
7694     }
7695     p_inited = TRUE;
7696     orc_once_mutex_unlock ();
7697   }
7698   ex->program = p;
7699
7700   ex->n = n;
7701   ex->arrays[ORC_VAR_D1] = d1;
7702   ex->arrays[ORC_VAR_D2] = d2;
7703
7704   func = p->code_exec;
7705   func (ex);
7706 }
7707 #endif
7708
7709
7710 /* orc_haar_synth_s16_lo */
7711 #ifdef DISABLE_ORC
7712 void
7713 orc_haar_synth_s16_lo (int16_t * d1, const int16_t * s1, const int16_t * s2, int n){
7714   int i;
7715   orc_union16 * ORC_RESTRICT ptr0;
7716   const orc_union16 * ORC_RESTRICT ptr4;
7717   const orc_union16 * ORC_RESTRICT ptr5;
7718   orc_union16 var33;
7719   orc_union16 var34;
7720   orc_union16 var35;
7721   orc_union16 var36;
7722   orc_union16 var37;
7723
7724   ptr0 = (orc_union16 *)d1;
7725   ptr4 = (orc_union16 *)s1;
7726   ptr5 = (orc_union16 *)s2;
7727
7728     /* 1: loadpw */
7729     var34.i = 0x00000000; /* 0 or 0f */
7730
7731   for (i = 0; i < n; i++) {
7732     /* 0: loadw */
7733     var33 = ptr5[i];
7734     /* 2: avgsw */
7735     var37.i = (var33.i + var34.i + 1)>>1;
7736     /* 3: loadw */
7737     var35 = ptr4[i];
7738     /* 4: subw */
7739     var36.i = var35.i - var37.i;
7740     /* 5: storew */
7741     ptr0[i] = var36;
7742   }
7743
7744 }
7745
7746 #else
7747 static void
7748 _backup_orc_haar_synth_s16_lo (OrcExecutor * ORC_RESTRICT ex)
7749 {
7750   int i;
7751   int n = ex->n;
7752   orc_union16 * ORC_RESTRICT ptr0;
7753   const orc_union16 * ORC_RESTRICT ptr4;
7754   const orc_union16 * ORC_RESTRICT ptr5;
7755   orc_union16 var33;
7756   orc_union16 var34;
7757   orc_union16 var35;
7758   orc_union16 var36;
7759   orc_union16 var37;
7760
7761   ptr0 = (orc_union16 *)ex->arrays[0];
7762   ptr4 = (orc_union16 *)ex->arrays[4];
7763   ptr5 = (orc_union16 *)ex->arrays[5];
7764
7765     /* 1: loadpw */
7766     var34.i = 0x00000000; /* 0 or 0f */
7767
7768   for (i = 0; i < n; i++) {
7769     /* 0: loadw */
7770     var33 = ptr5[i];
7771     /* 2: avgsw */
7772     var37.i = (var33.i + var34.i + 1)>>1;
7773     /* 3: loadw */
7774     var35 = ptr4[i];
7775     /* 4: subw */
7776     var36.i = var35.i - var37.i;
7777     /* 5: storew */
7778     ptr0[i] = var36;
7779   }
7780
7781 }
7782
7783 void
7784 orc_haar_synth_s16_lo (int16_t * d1, const int16_t * s1, const int16_t * s2, int n)
7785 {
7786   OrcExecutor _ex, *ex = &_ex;
7787   static int p_inited = 0;
7788   static OrcProgram *p = 0;
7789   void (*func) (OrcExecutor *);
7790
7791   if (!p_inited) {
7792     orc_once_mutex_lock ();
7793     if (!p_inited) {
7794       OrcCompileResult result;
7795
7796       p = orc_program_new ();
7797       orc_program_set_name (p, "orc_haar_synth_s16_lo");
7798       orc_program_set_backup_function (p, _backup_orc_haar_synth_s16_lo);
7799       orc_program_add_destination (p, 2, "d1");
7800       orc_program_add_source (p, 2, "s1");
7801       orc_program_add_source (p, 2, "s2");
7802       orc_program_add_constant (p, 4, 0x00000000, "c1");
7803       orc_program_add_temporary (p, 2, "t1");
7804
7805       orc_program_append_2 (p, "avgsw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_C1, ORC_VAR_D1);
7806       orc_program_append_2 (p, "subw", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_T1, ORC_VAR_D1);
7807
7808       result = orc_program_compile (p);
7809     }
7810     p_inited = TRUE;
7811     orc_once_mutex_unlock ();
7812   }
7813   ex->program = p;
7814
7815   ex->n = n;
7816   ex->arrays[ORC_VAR_D1] = d1;
7817   ex->arrays[ORC_VAR_S1] = (void *)s1;
7818   ex->arrays[ORC_VAR_S2] = (void *)s2;
7819
7820   func = p->code_exec;
7821   func (ex);
7822 }
7823 #endif
7824
7825
7826 /* orc_haar_synth_s16_hi */
7827 #ifdef DISABLE_ORC
7828 void
7829 orc_haar_synth_s16_hi (int16_t * d1, const int16_t * s1, const int16_t * s2, int n){
7830   int i;
7831   orc_union16 * ORC_RESTRICT ptr0;
7832   const orc_union16 * ORC_RESTRICT ptr4;
7833   const orc_union16 * ORC_RESTRICT ptr5;
7834   orc_union16 var35;
7835   orc_union16 var36;
7836   orc_union16 var37;
7837   orc_union16 var38;
7838   orc_union16 var39;
7839   orc_union16 var40;
7840   orc_union16 var41;
7841
7842   ptr0 = (orc_union16 *)d1;
7843   ptr4 = (orc_union16 *)s1;
7844   ptr5 = (orc_union16 *)s2;
7845
7846     /* 2: loadpw */
7847     var36.i = 0x00000000; /* 0 or 0f */
7848
7849   for (i = 0; i < n; i++) {
7850     /* 0: loadw */
7851     var35 = ptr5[i];
7852     /* 1: copyw */
7853     var39.i = var35.i;
7854     /* 3: avgsw */
7855     var40.i = (var39.i + var36.i + 1)>>1;
7856     /* 4: loadw */
7857     var37 = ptr4[i];
7858     /* 5: subw */
7859     var41.i = var37.i - var40.i;
7860     /* 6: addw */
7861     var38.i = var39.i + var41.i;
7862     /* 7: storew */
7863     ptr0[i] = var38;
7864   }
7865
7866 }
7867
7868 #else
7869 static void
7870 _backup_orc_haar_synth_s16_hi (OrcExecutor * ORC_RESTRICT ex)
7871 {
7872   int i;
7873   int n = ex->n;
7874   orc_union16 * ORC_RESTRICT ptr0;
7875   const orc_union16 * ORC_RESTRICT ptr4;
7876   const orc_union16 * ORC_RESTRICT ptr5;
7877   orc_union16 var35;
7878   orc_union16 var36;
7879   orc_union16 var37;
7880   orc_union16 var38;
7881   orc_union16 var39;
7882   orc_union16 var40;
7883   orc_union16 var41;
7884
7885   ptr0 = (orc_union16 *)ex->arrays[0];
7886   ptr4 = (orc_union16 *)ex->arrays[4];
7887   ptr5 = (orc_union16 *)ex->arrays[5];
7888
7889     /* 2: loadpw */
7890     var36.i = 0x00000000; /* 0 or 0f */
7891
7892   for (i = 0; i < n; i++) {
7893     /* 0: loadw */
7894     var35 = ptr5[i];
7895     /* 1: copyw */
7896     var39.i = var35.i;
7897     /* 3: avgsw */
7898     var40.i = (var39.i + var36.i + 1)>>1;
7899     /* 4: loadw */
7900     var37 = ptr4[i];
7901     /* 5: subw */
7902     var41.i = var37.i - var40.i;
7903     /* 6: addw */
7904     var38.i = var39.i + var41.i;
7905     /* 7: storew */
7906     ptr0[i] = var38;
7907   }
7908
7909 }
7910
7911 void
7912 orc_haar_synth_s16_hi (int16_t * d1, const int16_t * s1, const int16_t * s2, int n)
7913 {
7914   OrcExecutor _ex, *ex = &_ex;
7915   static int p_inited = 0;
7916   static OrcProgram *p = 0;
7917   void (*func) (OrcExecutor *);
7918
7919   if (!p_inited) {
7920     orc_once_mutex_lock ();
7921     if (!p_inited) {
7922       OrcCompileResult result;
7923
7924       p = orc_program_new ();
7925       orc_program_set_name (p, "orc_haar_synth_s16_hi");
7926       orc_program_set_backup_function (p, _backup_orc_haar_synth_s16_hi);
7927       orc_program_add_destination (p, 2, "d1");
7928       orc_program_add_source (p, 2, "s1");
7929       orc_program_add_source (p, 2, "s2");
7930       orc_program_add_constant (p, 4, 0x00000000, "c1");
7931       orc_program_add_temporary (p, 2, "t1");
7932       orc_program_add_temporary (p, 2, "t2");
7933       orc_program_add_temporary (p, 2, "t3");
7934
7935       orc_program_append_2 (p, "copyw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, ORC_VAR_D1);
7936       orc_program_append_2 (p, "avgsw", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_D1);
7937       orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_T3, ORC_VAR_D1);
7938       orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1);
7939
7940       result = orc_program_compile (p);
7941     }
7942     p_inited = TRUE;
7943     orc_once_mutex_unlock ();
7944   }
7945   ex->program = p;
7946
7947   ex->n = n;
7948   ex->arrays[ORC_VAR_D1] = d1;
7949   ex->arrays[ORC_VAR_S1] = (void *)s1;
7950   ex->arrays[ORC_VAR_S2] = (void *)s2;
7951
7952   func = p->code_exec;
7953   func (ex);
7954 }
7955 #endif
7956
7957
7958 /* orc_haar_synth_s16_op */
7959 #ifdef DISABLE_ORC
7960 void
7961 orc_haar_synth_s16_op (int16_t * d1, int16_t * d2, const int16_t * s1, const int16_t * s2, int n){
7962   int i;
7963   orc_union16 * ORC_RESTRICT ptr0;
7964   orc_union16 * ORC_RESTRICT ptr1;
7965   const orc_union16 * ORC_RESTRICT ptr4;
7966   const orc_union16 * ORC_RESTRICT ptr5;
7967   orc_union16 var35;
7968   orc_union16 var36;
7969   orc_union16 var37;
7970   orc_union16 var38;
7971   orc_union16 var39;
7972   orc_union16 var40;
7973   orc_union16 var41;
7974   orc_union16 var42;
7975
7976   ptr0 = (orc_union16 *)d1;
7977   ptr1 = (orc_union16 *)d2;
7978   ptr4 = (orc_union16 *)s1;
7979   ptr5 = (orc_union16 *)s2;
7980
7981     /* 2: loadpw */
7982     var36.i = 0x00000000; /* 0 or 0f */
7983
7984   for (i = 0; i < n; i++) {
7985     /* 0: loadw */
7986     var35 = ptr5[i];
7987     /* 1: copyw */
7988     var40.i = var35.i;
7989     /* 3: avgsw */
7990     var41.i = (var40.i + var36.i + 1)>>1;
7991     /* 4: loadw */
7992     var37 = ptr4[i];
7993     /* 5: subw */
7994     var42.i = var37.i - var41.i;
7995     /* 6: copyw */
7996     var38.i = var42.i;
7997     /* 7: storew */
7998     ptr0[i] = var38;
7999     /* 8: addw */
8000     var39.i = var40.i + var42.i;
8001     /* 9: storew */
8002     ptr1[i] = var39;
8003   }
8004
8005 }
8006
8007 #else
8008 static void
8009 _backup_orc_haar_synth_s16_op (OrcExecutor * ORC_RESTRICT ex)
8010 {
8011   int i;
8012   int n = ex->n;
8013   orc_union16 * ORC_RESTRICT ptr0;
8014   orc_union16 * ORC_RESTRICT ptr1;
8015   const orc_union16 * ORC_RESTRICT ptr4;
8016   const orc_union16 * ORC_RESTRICT ptr5;
8017   orc_union16 var35;
8018   orc_union16 var36;
8019   orc_union16 var37;
8020   orc_union16 var38;
8021   orc_union16 var39;
8022   orc_union16 var40;
8023   orc_union16 var41;
8024   orc_union16 var42;
8025
8026   ptr0 = (orc_union16 *)ex->arrays[0];
8027   ptr1 = (orc_union16 *)ex->arrays[1];
8028   ptr4 = (orc_union16 *)ex->arrays[4];
8029   ptr5 = (orc_union16 *)ex->arrays[5];
8030
8031     /* 2: loadpw */
8032     var36.i = 0x00000000; /* 0 or 0f */
8033
8034   for (i = 0; i < n; i++) {
8035     /* 0: loadw */
8036     var35 = ptr5[i];
8037     /* 1: copyw */
8038     var40.i = var35.i;
8039     /* 3: avgsw */
8040     var41.i = (var40.i + var36.i + 1)>>1;
8041     /* 4: loadw */
8042     var37 = ptr4[i];
8043     /* 5: subw */
8044     var42.i = var37.i - var41.i;
8045     /* 6: copyw */
8046     var38.i = var42.i;
8047     /* 7: storew */
8048     ptr0[i] = var38;
8049     /* 8: addw */
8050     var39.i = var40.i + var42.i;
8051     /* 9: storew */
8052     ptr1[i] = var39;
8053   }
8054
8055 }
8056
8057 void
8058 orc_haar_synth_s16_op (int16_t * d1, int16_t * d2, const int16_t * s1, const int16_t * s2, int n)
8059 {
8060   OrcExecutor _ex, *ex = &_ex;
8061   static int p_inited = 0;
8062   static OrcProgram *p = 0;
8063   void (*func) (OrcExecutor *);
8064
8065   if (!p_inited) {
8066     orc_once_mutex_lock ();
8067     if (!p_inited) {
8068       OrcCompileResult result;
8069
8070       p = orc_program_new ();
8071       orc_program_set_name (p, "orc_haar_synth_s16_op");
8072       orc_program_set_backup_function (p, _backup_orc_haar_synth_s16_op);
8073       orc_program_add_destination (p, 2, "d1");
8074       orc_program_add_destination (p, 2, "d2");
8075       orc_program_add_source (p, 2, "s1");
8076       orc_program_add_source (p, 2, "s2");
8077       orc_program_add_constant (p, 4, 0x00000000, "c1");
8078       orc_program_add_temporary (p, 2, "t1");
8079       orc_program_add_temporary (p, 2, "t2");
8080       orc_program_add_temporary (p, 2, "t3");
8081
8082       orc_program_append_2 (p, "copyw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, ORC_VAR_D1);
8083       orc_program_append_2 (p, "avgsw", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_D1);
8084       orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_T3, ORC_VAR_D1);
8085       orc_program_append_2 (p, "copyw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
8086       orc_program_append_2 (p, "addw", 0, ORC_VAR_D2, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1);
8087
8088       result = orc_program_compile (p);
8089     }
8090     p_inited = TRUE;
8091     orc_once_mutex_unlock ();
8092   }
8093   ex->program = p;
8094
8095   ex->n = n;
8096   ex->arrays[ORC_VAR_D1] = d1;
8097   ex->arrays[ORC_VAR_D2] = d2;
8098   ex->arrays[ORC_VAR_S1] = (void *)s1;
8099   ex->arrays[ORC_VAR_S2] = (void *)s2;
8100
8101   func = p->code_exec;
8102   func (ex);
8103 }
8104 #endif
8105
8106
8107 /* orc_haar_synth_s16 */
8108 #ifdef DISABLE_ORC
8109 void
8110 orc_haar_synth_s16 (int16_t * d1, int16_t * d2, int n){
8111   int i;
8112   orc_union16 * ORC_RESTRICT ptr0;
8113   orc_union16 * ORC_RESTRICT ptr1;
8114   orc_union16 var35;
8115   orc_union16 var36;
8116   orc_union16 var37;
8117   orc_union16 var38;
8118   orc_union16 var39;
8119   orc_union16 var40;
8120   orc_union16 var41;
8121   orc_union16 var42;
8122   orc_union16 var43;
8123
8124   ptr0 = (orc_union16 *)d1;
8125   ptr1 = (orc_union16 *)d2;
8126
8127     /* 4: loadpw */
8128     var37.i = 0x00000000; /* 0 or 0f */
8129
8130   for (i = 0; i < n; i++) {
8131     /* 0: loadw */
8132     var35 = ptr0[i];
8133     /* 1: copyw */
8134     var40.i = var35.i;
8135     /* 2: loadw */
8136     var36 = ptr1[i];
8137     /* 3: copyw */
8138     var41.i = var36.i;
8139     /* 5: avgsw */
8140     var42.i = (var41.i + var37.i + 1)>>1;
8141     /* 6: subw */
8142     var43.i = var40.i - var42.i;
8143     /* 7: copyw */
8144     var38.i = var43.i;
8145     /* 8: storew */
8146     ptr0[i] = var38;
8147     /* 9: addw */
8148     var39.i = var41.i + var43.i;
8149     /* 10: storew */
8150     ptr1[i] = var39;
8151   }
8152
8153 }
8154
8155 #else
8156 static void
8157 _backup_orc_haar_synth_s16 (OrcExecutor * ORC_RESTRICT ex)
8158 {
8159   int i;
8160   int n = ex->n;
8161   orc_union16 * ORC_RESTRICT ptr0;
8162   orc_union16 * ORC_RESTRICT ptr1;
8163   orc_union16 var35;
8164   orc_union16 var36;
8165   orc_union16 var37;
8166   orc_union16 var38;
8167   orc_union16 var39;
8168   orc_union16 var40;
8169   orc_union16 var41;
8170   orc_union16 var42;
8171   orc_union16 var43;
8172
8173   ptr0 = (orc_union16 *)ex->arrays[0];
8174   ptr1 = (orc_union16 *)ex->arrays[1];
8175
8176     /* 4: loadpw */
8177     var37.i = 0x00000000; /* 0 or 0f */
8178
8179   for (i = 0; i < n; i++) {
8180     /* 0: loadw */
8181     var35 = ptr0[i];
8182     /* 1: copyw */
8183     var40.i = var35.i;
8184     /* 2: loadw */
8185     var36 = ptr1[i];
8186     /* 3: copyw */
8187     var41.i = var36.i;
8188     /* 5: avgsw */
8189     var42.i = (var41.i + var37.i + 1)>>1;
8190     /* 6: subw */
8191     var43.i = var40.i - var42.i;
8192     /* 7: copyw */
8193     var38.i = var43.i;
8194     /* 8: storew */
8195     ptr0[i] = var38;
8196     /* 9: addw */
8197     var39.i = var41.i + var43.i;
8198     /* 10: storew */
8199     ptr1[i] = var39;
8200   }
8201
8202 }
8203
8204 void
8205 orc_haar_synth_s16 (int16_t * d1, int16_t * d2, int n)
8206 {
8207   OrcExecutor _ex, *ex = &_ex;
8208   static int p_inited = 0;
8209   static OrcProgram *p = 0;
8210   void (*func) (OrcExecutor *);
8211
8212   if (!p_inited) {
8213     orc_once_mutex_lock ();
8214     if (!p_inited) {
8215       OrcCompileResult result;
8216
8217       p = orc_program_new ();
8218       orc_program_set_name (p, "orc_haar_synth_s16");
8219       orc_program_set_backup_function (p, _backup_orc_haar_synth_s16);
8220       orc_program_add_destination (p, 2, "d1");
8221       orc_program_add_destination (p, 2, "d2");
8222       orc_program_add_constant (p, 4, 0x00000000, "c1");
8223       orc_program_add_temporary (p, 2, "t1");
8224       orc_program_add_temporary (p, 2, "t2");
8225       orc_program_add_temporary (p, 2, "t3");
8226
8227       orc_program_append_2 (p, "copyw", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_D1);
8228       orc_program_append_2 (p, "copyw", 0, ORC_VAR_T2, ORC_VAR_D2, ORC_VAR_D1, ORC_VAR_D1);
8229       orc_program_append_2 (p, "avgsw", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_D1);
8230       orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_D1);
8231       orc_program_append_2 (p, "copyw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
8232       orc_program_append_2 (p, "addw", 0, ORC_VAR_D2, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1);
8233
8234       result = orc_program_compile (p);
8235     }
8236     p_inited = TRUE;
8237     orc_once_mutex_unlock ();
8238   }
8239   ex->program = p;
8240
8241   ex->n = n;
8242   ex->arrays[ORC_VAR_D1] = d1;
8243   ex->arrays[ORC_VAR_D2] = d2;
8244
8245   func = p->code_exec;
8246   func (ex);
8247 }
8248 #endif
8249
8250
8251 /* orc_haar_synth_rrshift1_int_s16 */
8252 #ifdef DISABLE_ORC
8253 void
8254 orc_haar_synth_rrshift1_int_s16 (int16_t * d1, const int16_t * s1, const int16_t * s2, int n){
8255   int i;
8256   orc_union32 * ORC_RESTRICT ptr0;
8257   const orc_union16 * ORC_RESTRICT ptr4;
8258   const orc_union16 * ORC_RESTRICT ptr5;
8259   orc_union16 var34;
8260   orc_union16 var35;
8261   orc_union16 var36;
8262   orc_union16 var37;
8263   orc_union16 var38;
8264   orc_union32 var39;
8265   orc_union16 var40;
8266   orc_union16 var41;
8267   orc_union16 var42;
8268   orc_union16 var43;
8269   orc_union16 var44;
8270   orc_union16 var45;
8271
8272   ptr0 = (orc_union32 *)d1;
8273   ptr4 = (orc_union16 *)s1;
8274   ptr5 = (orc_union16 *)s2;
8275
8276     /* 2: loadpw */
8277     var35.i = 0x00000000; /* 0 or 0f */
8278     /* 7: loadpw */
8279     var37.i = 0x00000000; /* 0 or 0f */
8280     /* 9: loadpw */
8281     var38.i = 0x00000000; /* 0 or 0f */
8282
8283   for (i = 0; i < n; i++) {
8284     /* 0: loadw */
8285     var34 = ptr5[i];
8286     /* 1: copyw */
8287     var40.i = var34.i;
8288     /* 3: avgsw */
8289     var41.i = (var40.i + var35.i + 1)>>1;
8290     /* 4: loadw */
8291     var36 = ptr4[i];
8292     /* 5: subw */
8293     var42.i = var36.i - var41.i;
8294     /* 6: addw */
8295     var43.i = var40.i + var42.i;
8296     /* 8: avgsw */
8297     var44.i = (var42.i + var37.i + 1)>>1;
8298     /* 10: avgsw */
8299     var45.i = (var43.i + var38.i + 1)>>1;
8300     /* 11: mergewl */
8301     var39.i = ((orc_uint16)var44.i & 0x0000ffff) | ((orc_uint16)var45.i << 16);
8302     /* 12: storel */
8303     ptr0[i] = var39;
8304   }
8305
8306 }
8307
8308 #else
8309 static void
8310 _backup_orc_haar_synth_rrshift1_int_s16 (OrcExecutor * ORC_RESTRICT ex)
8311 {
8312   int i;
8313   int n = ex->n;
8314   orc_union32 * ORC_RESTRICT ptr0;
8315   const orc_union16 * ORC_RESTRICT ptr4;
8316   const orc_union16 * ORC_RESTRICT ptr5;
8317   orc_union16 var34;
8318   orc_union16 var35;
8319   orc_union16 var36;
8320   orc_union16 var37;
8321   orc_union16 var38;
8322   orc_union32 var39;
8323   orc_union16 var40;
8324   orc_union16 var41;
8325   orc_union16 var42;
8326   orc_union16 var43;
8327   orc_union16 var44;
8328   orc_union16 var45;
8329
8330   ptr0 = (orc_union32 *)ex->arrays[0];
8331   ptr4 = (orc_union16 *)ex->arrays[4];
8332   ptr5 = (orc_union16 *)ex->arrays[5];
8333
8334     /* 2: loadpw */
8335     var35.i = 0x00000000; /* 0 or 0f */
8336     /* 7: loadpw */
8337     var37.i = 0x00000000; /* 0 or 0f */
8338     /* 9: loadpw */
8339     var38.i = 0x00000000; /* 0 or 0f */
8340
8341   for (i = 0; i < n; i++) {
8342     /* 0: loadw */
8343     var34 = ptr5[i];
8344     /* 1: copyw */
8345     var40.i = var34.i;
8346     /* 3: avgsw */
8347     var41.i = (var40.i + var35.i + 1)>>1;
8348     /* 4: loadw */
8349     var36 = ptr4[i];
8350     /* 5: subw */
8351     var42.i = var36.i - var41.i;
8352     /* 6: addw */
8353     var43.i = var40.i + var42.i;
8354     /* 8: avgsw */
8355     var44.i = (var42.i + var37.i + 1)>>1;
8356     /* 10: avgsw */
8357     var45.i = (var43.i + var38.i + 1)>>1;
8358     /* 11: mergewl */
8359     var39.i = ((orc_uint16)var44.i & 0x0000ffff) | ((orc_uint16)var45.i << 16);
8360     /* 12: storel */
8361     ptr0[i] = var39;
8362   }
8363
8364 }
8365
8366 void
8367 orc_haar_synth_rrshift1_int_s16 (int16_t * d1, const int16_t * s1, const int16_t * s2, int n)
8368 {
8369   OrcExecutor _ex, *ex = &_ex;
8370   static int p_inited = 0;
8371   static OrcProgram *p = 0;
8372   void (*func) (OrcExecutor *);
8373
8374   if (!p_inited) {
8375     orc_once_mutex_lock ();
8376     if (!p_inited) {
8377       OrcCompileResult result;
8378
8379       p = orc_program_new ();
8380       orc_program_set_name (p, "orc_haar_synth_rrshift1_int_s16");
8381       orc_program_set_backup_function (p, _backup_orc_haar_synth_rrshift1_int_s16);
8382       orc_program_add_destination (p, 4, "d1");
8383       orc_program_add_source (p, 2, "s1");
8384       orc_program_add_source (p, 2, "s2");
8385       orc_program_add_constant (p, 4, 0x00000000, "c1");
8386       orc_program_add_temporary (p, 2, "t1");
8387       orc_program_add_temporary (p, 2, "t2");
8388
8389       orc_program_append_2 (p, "copyw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, ORC_VAR_D1);
8390       orc_program_append_2 (p, "avgsw", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_D1);
8391       orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_T1, ORC_VAR_D1);
8392       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1);
8393       orc_program_append_2 (p, "avgsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
8394       orc_program_append_2 (p, "avgsw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_D1);
8395       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1);
8396
8397       result = orc_program_compile (p);
8398     }
8399     p_inited = TRUE;
8400     orc_once_mutex_unlock ();
8401   }
8402   ex->program = p;
8403
8404   ex->n = n;
8405   ex->arrays[ORC_VAR_D1] = d1;
8406   ex->arrays[ORC_VAR_S1] = (void *)s1;
8407   ex->arrays[ORC_VAR_S2] = (void *)s2;
8408
8409   func = p->code_exec;
8410   func (ex);
8411 }
8412 #endif
8413
8414
8415 /* orc_haar_synth_int_s16 */
8416 #ifdef DISABLE_ORC
8417 void
8418 orc_haar_synth_int_s16 (int16_t * d1, const int16_t * s1, const int16_t * s2, int n){
8419   int i;
8420   orc_union32 * ORC_RESTRICT ptr0;
8421   const orc_union16 * ORC_RESTRICT ptr4;
8422   const orc_union16 * ORC_RESTRICT ptr5;
8423   orc_union16 var34;
8424   orc_union16 var35;
8425   orc_union16 var36;
8426   orc_union32 var37;
8427   orc_union16 var38;
8428   orc_union16 var39;
8429   orc_union16 var40;
8430   orc_union16 var41;
8431
8432   ptr0 = (orc_union32 *)d1;
8433   ptr4 = (orc_union16 *)s1;
8434   ptr5 = (orc_union16 *)s2;
8435
8436     /* 2: loadpw */
8437     var35.i = 0x00000000; /* 0 or 0f */
8438
8439   for (i = 0; i < n; i++) {
8440     /* 0: loadw */
8441     var34 = ptr5[i];
8442     /* 1: copyw */
8443     var38.i = var34.i;
8444     /* 3: avgsw */
8445     var39.i = (var38.i + var35.i + 1)>>1;
8446     /* 4: loadw */
8447     var36 = ptr4[i];
8448     /* 5: subw */
8449     var40.i = var36.i - var39.i;
8450     /* 6: addw */
8451     var41.i = var38.i + var40.i;
8452     /* 7: mergewl */
8453     var37.i = ((orc_uint16)var40.i & 0x0000ffff) | ((orc_uint16)var41.i << 16);
8454     /* 8: storel */
8455     ptr0[i] = var37;
8456   }
8457
8458 }
8459
8460 #else
8461 static void
8462 _backup_orc_haar_synth_int_s16 (OrcExecutor * ORC_RESTRICT ex)
8463 {
8464   int i;
8465   int n = ex->n;
8466   orc_union32 * ORC_RESTRICT ptr0;
8467   const orc_union16 * ORC_RESTRICT ptr4;
8468   const orc_union16 * ORC_RESTRICT ptr5;
8469   orc_union16 var34;
8470   orc_union16 var35;
8471   orc_union16 var36;
8472   orc_union32 var37;
8473   orc_union16 var38;
8474   orc_union16 var39;
8475   orc_union16 var40;
8476   orc_union16 var41;
8477
8478   ptr0 = (orc_union32 *)ex->arrays[0];
8479   ptr4 = (orc_union16 *)ex->arrays[4];
8480   ptr5 = (orc_union16 *)ex->arrays[5];
8481
8482     /* 2: loadpw */
8483     var35.i = 0x00000000; /* 0 or 0f */
8484
8485   for (i = 0; i < n; i++) {
8486     /* 0: loadw */
8487     var34 = ptr5[i];
8488     /* 1: copyw */
8489     var38.i = var34.i;
8490     /* 3: avgsw */
8491     var39.i = (var38.i + var35.i + 1)>>1;
8492     /* 4: loadw */
8493     var36 = ptr4[i];
8494     /* 5: subw */
8495     var40.i = var36.i - var39.i;
8496     /* 6: addw */
8497     var41.i = var38.i + var40.i;
8498     /* 7: mergewl */
8499     var37.i = ((orc_uint16)var40.i & 0x0000ffff) | ((orc_uint16)var41.i << 16);
8500     /* 8: storel */
8501     ptr0[i] = var37;
8502   }
8503
8504 }
8505
8506 void
8507 orc_haar_synth_int_s16 (int16_t * d1, const int16_t * s1, const int16_t * s2, int n)
8508 {
8509   OrcExecutor _ex, *ex = &_ex;
8510   static int p_inited = 0;
8511   static OrcProgram *p = 0;
8512   void (*func) (OrcExecutor *);
8513
8514   if (!p_inited) {
8515     orc_once_mutex_lock ();
8516     if (!p_inited) {
8517       OrcCompileResult result;
8518
8519       p = orc_program_new ();
8520       orc_program_set_name (p, "orc_haar_synth_int_s16");
8521       orc_program_set_backup_function (p, _backup_orc_haar_synth_int_s16);
8522       orc_program_add_destination (p, 4, "d1");
8523       orc_program_add_source (p, 2, "s1");
8524       orc_program_add_source (p, 2, "s2");
8525       orc_program_add_constant (p, 4, 0x00000000, "c1");
8526       orc_program_add_temporary (p, 2, "t1");
8527       orc_program_add_temporary (p, 2, "t2");
8528
8529       orc_program_append_2 (p, "copyw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, ORC_VAR_D1);
8530       orc_program_append_2 (p, "avgsw", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_D1);
8531       orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_T1, ORC_VAR_D1);
8532       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1);
8533       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1);
8534
8535       result = orc_program_compile (p);
8536     }
8537     p_inited = TRUE;
8538     orc_once_mutex_unlock ();
8539   }
8540   ex->program = p;
8541
8542   ex->n = n;
8543   ex->arrays[ORC_VAR_D1] = d1;
8544   ex->arrays[ORC_VAR_S1] = (void *)s1;
8545   ex->arrays[ORC_VAR_S2] = (void *)s2;
8546
8547   func = p->code_exec;
8548   func (ex);
8549 }
8550 #endif
8551
8552
8553 /* orc_haar_sub_s16 */
8554 #ifdef DISABLE_ORC
8555 void
8556 orc_haar_sub_s16 (int16_t * d1, const int16_t * s1, int n){
8557   int i;
8558   orc_union16 * ORC_RESTRICT ptr0;
8559   const orc_union16 * ORC_RESTRICT ptr4;
8560   orc_union16 var32;
8561   orc_union16 var33;
8562   orc_union16 var34;
8563
8564   ptr0 = (orc_union16 *)d1;
8565   ptr4 = (orc_union16 *)s1;
8566
8567
8568   for (i = 0; i < n; i++) {
8569     /* 0: loadw */
8570     var32 = ptr0[i];
8571     /* 1: loadw */
8572     var33 = ptr4[i];
8573     /* 2: subw */
8574     var34.i = var32.i - var33.i;
8575     /* 3: storew */
8576     ptr0[i] = var34;
8577   }
8578
8579 }
8580
8581 #else
8582 static void
8583 _backup_orc_haar_sub_s16 (OrcExecutor * ORC_RESTRICT ex)
8584 {
8585   int i;
8586   int n = ex->n;
8587   orc_union16 * ORC_RESTRICT ptr0;
8588   const orc_union16 * ORC_RESTRICT ptr4;
8589   orc_union16 var32;
8590   orc_union16 var33;
8591   orc_union16 var34;
8592
8593   ptr0 = (orc_union16 *)ex->arrays[0];
8594   ptr4 = (orc_union16 *)ex->arrays[4];
8595
8596
8597   for (i = 0; i < n; i++) {
8598     /* 0: loadw */
8599     var32 = ptr0[i];
8600     /* 1: loadw */
8601     var33 = ptr4[i];
8602     /* 2: subw */
8603     var34.i = var32.i - var33.i;
8604     /* 3: storew */
8605     ptr0[i] = var34;
8606   }
8607
8608 }
8609
8610 void
8611 orc_haar_sub_s16 (int16_t * d1, const int16_t * s1, int n)
8612 {
8613   OrcExecutor _ex, *ex = &_ex;
8614   static int p_inited = 0;
8615   static OrcProgram *p = 0;
8616   void (*func) (OrcExecutor *);
8617
8618   if (!p_inited) {
8619     orc_once_mutex_lock ();
8620     if (!p_inited) {
8621       OrcCompileResult result;
8622
8623       p = orc_program_new ();
8624       orc_program_set_name (p, "orc_haar_sub_s16");
8625       orc_program_set_backup_function (p, _backup_orc_haar_sub_s16);
8626       orc_program_add_destination (p, 2, "d1");
8627       orc_program_add_source (p, 2, "s1");
8628
8629       orc_program_append_2 (p, "subw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1);
8630
8631       result = orc_program_compile (p);
8632     }
8633     p_inited = TRUE;
8634     orc_once_mutex_unlock ();
8635   }
8636   ex->program = p;
8637
8638   ex->n = n;
8639   ex->arrays[ORC_VAR_D1] = d1;
8640   ex->arrays[ORC_VAR_S1] = (void *)s1;
8641
8642   func = p->code_exec;
8643   func (ex);
8644 }
8645 #endif
8646
8647
8648 /* orc_haar_add_half_s16 */
8649 #ifdef DISABLE_ORC
8650 void
8651 orc_haar_add_half_s16 (int16_t * d1, const int16_t * s1, int n){
8652   int i;
8653   orc_union16 * ORC_RESTRICT ptr0;
8654   const orc_union16 * ORC_RESTRICT ptr4;
8655   orc_union16 var33;
8656   orc_union16 var34;
8657   orc_union16 var35;
8658   orc_union16 var36;
8659   orc_union16 var37;
8660
8661   ptr0 = (orc_union16 *)d1;
8662   ptr4 = (orc_union16 *)s1;
8663
8664     /* 1: loadpw */
8665     var34.i = 0x00000000; /* 0 or 0f */
8666
8667   for (i = 0; i < n; i++) {
8668     /* 0: loadw */
8669     var33 = ptr4[i];
8670     /* 2: avgsw */
8671     var37.i = (var33.i + var34.i + 1)>>1;
8672     /* 3: loadw */
8673     var35 = ptr0[i];
8674     /* 4: addw */
8675     var36.i = var35.i + var37.i;
8676     /* 5: storew */
8677     ptr0[i] = var36;
8678   }
8679
8680 }
8681
8682 #else
8683 static void
8684 _backup_orc_haar_add_half_s16 (OrcExecutor * ORC_RESTRICT ex)
8685 {
8686   int i;
8687   int n = ex->n;
8688   orc_union16 * ORC_RESTRICT ptr0;
8689   const orc_union16 * ORC_RESTRICT ptr4;
8690   orc_union16 var33;
8691   orc_union16 var34;
8692   orc_union16 var35;
8693   orc_union16 var36;
8694   orc_union16 var37;
8695
8696   ptr0 = (orc_union16 *)ex->arrays[0];
8697   ptr4 = (orc_union16 *)ex->arrays[4];
8698
8699     /* 1: loadpw */
8700     var34.i = 0x00000000; /* 0 or 0f */
8701
8702   for (i = 0; i < n; i++) {
8703     /* 0: loadw */
8704     var33 = ptr4[i];
8705     /* 2: avgsw */
8706     var37.i = (var33.i + var34.i + 1)>>1;
8707     /* 3: loadw */
8708     var35 = ptr0[i];
8709     /* 4: addw */
8710     var36.i = var35.i + var37.i;
8711     /* 5: storew */
8712     ptr0[i] = var36;
8713   }
8714
8715 }
8716
8717 void
8718 orc_haar_add_half_s16 (int16_t * d1, const int16_t * s1, int n)
8719 {
8720   OrcExecutor _ex, *ex = &_ex;
8721   static int p_inited = 0;
8722   static OrcProgram *p = 0;
8723   void (*func) (OrcExecutor *);
8724
8725   if (!p_inited) {
8726     orc_once_mutex_lock ();
8727     if (!p_inited) {
8728       OrcCompileResult result;
8729
8730       p = orc_program_new ();
8731       orc_program_set_name (p, "orc_haar_add_half_s16");
8732       orc_program_set_backup_function (p, _backup_orc_haar_add_half_s16);
8733       orc_program_add_destination (p, 2, "d1");
8734       orc_program_add_source (p, 2, "s1");
8735       orc_program_add_constant (p, 4, 0x00000000, "c1");
8736       orc_program_add_temporary (p, 2, "t1");
8737
8738       orc_program_append_2 (p, "avgsw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_C1, ORC_VAR_D1);
8739       orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1);
8740
8741       result = orc_program_compile (p);
8742     }
8743     p_inited = TRUE;
8744     orc_once_mutex_unlock ();
8745   }
8746   ex->program = p;
8747
8748   ex->n = n;
8749   ex->arrays[ORC_VAR_D1] = d1;
8750   ex->arrays[ORC_VAR_S1] = (void *)s1;
8751
8752   func = p->code_exec;
8753   func (ex);
8754 }
8755 #endif
8756
8757
8758 /* orc_haar_add_s16 */
8759 #ifdef DISABLE_ORC
8760 void
8761 orc_haar_add_s16 (int16_t * d1, const int16_t * s1, int n){
8762   int i;
8763   orc_union16 * ORC_RESTRICT ptr0;
8764   const orc_union16 * ORC_RESTRICT ptr4;
8765   orc_union16 var32;
8766   orc_union16 var33;
8767   orc_union16 var34;
8768
8769   ptr0 = (orc_union16 *)d1;
8770   ptr4 = (orc_union16 *)s1;
8771
8772
8773   for (i = 0; i < n; i++) {
8774     /* 0: loadw */
8775     var32 = ptr0[i];
8776     /* 1: loadw */
8777     var33 = ptr4[i];
8778     /* 2: addw */
8779     var34.i = var32.i + var33.i;
8780     /* 3: storew */
8781     ptr0[i] = var34;
8782   }
8783
8784 }
8785
8786 #else
8787 static void
8788 _backup_orc_haar_add_s16 (OrcExecutor * ORC_RESTRICT ex)
8789 {
8790   int i;
8791   int n = ex->n;
8792   orc_union16 * ORC_RESTRICT ptr0;
8793   const orc_union16 * ORC_RESTRICT ptr4;
8794   orc_union16 var32;
8795   orc_union16 var33;
8796   orc_union16 var34;
8797
8798   ptr0 = (orc_union16 *)ex->arrays[0];
8799   ptr4 = (orc_union16 *)ex->arrays[4];
8800
8801
8802   for (i = 0; i < n; i++) {
8803     /* 0: loadw */
8804     var32 = ptr0[i];
8805     /* 1: loadw */
8806     var33 = ptr4[i];
8807     /* 2: addw */
8808     var34.i = var32.i + var33.i;
8809     /* 3: storew */
8810     ptr0[i] = var34;
8811   }
8812
8813 }
8814
8815 void
8816 orc_haar_add_s16 (int16_t * d1, const int16_t * s1, int n)
8817 {
8818   OrcExecutor _ex, *ex = &_ex;
8819   static int p_inited = 0;
8820   static OrcProgram *p = 0;
8821   void (*func) (OrcExecutor *);
8822
8823   if (!p_inited) {
8824     orc_once_mutex_lock ();
8825     if (!p_inited) {
8826       OrcCompileResult result;
8827
8828       p = orc_program_new ();
8829       orc_program_set_name (p, "orc_haar_add_s16");
8830       orc_program_set_backup_function (p, _backup_orc_haar_add_s16);
8831       orc_program_add_destination (p, 2, "d1");
8832       orc_program_add_source (p, 2, "s1");
8833
8834       orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1);
8835
8836       result = orc_program_compile (p);
8837     }
8838     p_inited = TRUE;
8839     orc_once_mutex_unlock ();
8840   }
8841   ex->program = p;
8842
8843   ex->n = n;
8844   ex->arrays[ORC_VAR_D1] = d1;
8845   ex->arrays[ORC_VAR_S1] = (void *)s1;
8846
8847   func = p->code_exec;
8848   func (ex);
8849 }
8850 #endif
8851
8852
8853 /* orc_haar_sub_half_s16 */
8854 #ifdef DISABLE_ORC
8855 void
8856 orc_haar_sub_half_s16 (int16_t * d1, const int16_t * s1, int n){
8857   int i;
8858   orc_union16 * ORC_RESTRICT ptr0;
8859   const orc_union16 * ORC_RESTRICT ptr4;
8860   orc_union16 var33;
8861   orc_union16 var34;
8862   orc_union16 var35;
8863   orc_union16 var36;
8864   orc_union16 var37;
8865
8866   ptr0 = (orc_union16 *)d1;
8867   ptr4 = (orc_union16 *)s1;
8868
8869     /* 1: loadpw */
8870     var34.i = 0x00000000; /* 0 or 0f */
8871
8872   for (i = 0; i < n; i++) {
8873     /* 0: loadw */
8874     var33 = ptr4[i];
8875     /* 2: avgsw */
8876     var37.i = (var33.i + var34.i + 1)>>1;
8877     /* 3: loadw */
8878     var35 = ptr0[i];
8879     /* 4: subw */
8880     var36.i = var35.i - var37.i;
8881     /* 5: storew */
8882     ptr0[i] = var36;
8883   }
8884
8885 }
8886
8887 #else
8888 static void
8889 _backup_orc_haar_sub_half_s16 (OrcExecutor * ORC_RESTRICT ex)
8890 {
8891   int i;
8892   int n = ex->n;
8893   orc_union16 * ORC_RESTRICT ptr0;
8894   const orc_union16 * ORC_RESTRICT ptr4;
8895   orc_union16 var33;
8896   orc_union16 var34;
8897   orc_union16 var35;
8898   orc_union16 var36;
8899   orc_union16 var37;
8900
8901   ptr0 = (orc_union16 *)ex->arrays[0];
8902   ptr4 = (orc_union16 *)ex->arrays[4];
8903
8904     /* 1: loadpw */
8905     var34.i = 0x00000000; /* 0 or 0f */
8906
8907   for (i = 0; i < n; i++) {
8908     /* 0: loadw */
8909     var33 = ptr4[i];
8910     /* 2: avgsw */
8911     var37.i = (var33.i + var34.i + 1)>>1;
8912     /* 3: loadw */
8913     var35 = ptr0[i];
8914     /* 4: subw */
8915     var36.i = var35.i - var37.i;
8916     /* 5: storew */
8917     ptr0[i] = var36;
8918   }
8919
8920 }
8921
8922 void
8923 orc_haar_sub_half_s16 (int16_t * d1, const int16_t * s1, int n)
8924 {
8925   OrcExecutor _ex, *ex = &_ex;
8926   static int p_inited = 0;
8927   static OrcProgram *p = 0;
8928   void (*func) (OrcExecutor *);
8929
8930   if (!p_inited) {
8931     orc_once_mutex_lock ();
8932     if (!p_inited) {
8933       OrcCompileResult result;
8934
8935       p = orc_program_new ();
8936       orc_program_set_name (p, "orc_haar_sub_half_s16");
8937       orc_program_set_backup_function (p, _backup_orc_haar_sub_half_s16);
8938       orc_program_add_destination (p, 2, "d1");
8939       orc_program_add_source (p, 2, "s1");
8940       orc_program_add_constant (p, 4, 0x00000000, "c1");
8941       orc_program_add_temporary (p, 2, "t1");
8942
8943       orc_program_append_2 (p, "avgsw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_C1, ORC_VAR_D1);
8944       orc_program_append_2 (p, "subw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1);
8945
8946       result = orc_program_compile (p);
8947     }
8948     p_inited = TRUE;
8949     orc_once_mutex_unlock ();
8950   }
8951   ex->program = p;
8952
8953   ex->n = n;
8954   ex->arrays[ORC_VAR_D1] = d1;
8955   ex->arrays[ORC_VAR_S1] = (void *)s1;
8956
8957   func = p->code_exec;
8958   func (ex);
8959 }
8960 #endif
8961
8962
8963 /* orc_sum_u8 */
8964 #ifdef DISABLE_ORC
8965 void
8966 orc_sum_u8 (int32_t * a1, const orc_uint8 * s1, int n){
8967   int i;
8968   const orc_int8 * ORC_RESTRICT ptr4;
8969   orc_union32 var12 =  { 0 };
8970   orc_int8 var34;
8971   orc_union16 var35;
8972   orc_union32 var36;
8973
8974   ptr4 = (orc_int8 *)s1;
8975
8976
8977   for (i = 0; i < n; i++) {
8978     /* 0: loadb */
8979     var34 = ptr4[i];
8980     /* 1: convubw */
8981     var35.i = (orc_uint8)var34;
8982     /* 2: convuwl */
8983     var36.i = (orc_uint16)var35.i;
8984     /* 3: accl */
8985     var12.i = var12.i + var36.i;
8986   }
8987   *a1 = var12.i;
8988
8989 }
8990
8991 #else
8992 static void
8993 _backup_orc_sum_u8 (OrcExecutor * ORC_RESTRICT ex)
8994 {
8995   int i;
8996   int n = ex->n;
8997   const orc_int8 * ORC_RESTRICT ptr4;
8998   orc_union32 var12 =  { 0 };
8999   orc_int8 var34;
9000   orc_union16 var35;
9001   orc_union32 var36;
9002
9003   ptr4 = (orc_int8 *)ex->arrays[4];
9004
9005
9006   for (i = 0; i < n; i++) {
9007     /* 0: loadb */
9008     var34 = ptr4[i];
9009     /* 1: convubw */
9010     var35.i = (orc_uint8)var34;
9011     /* 2: convuwl */
9012     var36.i = (orc_uint16)var35.i;
9013     /* 3: accl */
9014     var12.i = var12.i + var36.i;
9015   }
9016   ex->accumulators[0] = var12.i;
9017
9018 }
9019
9020 void
9021 orc_sum_u8 (int32_t * a1, const orc_uint8 * s1, int n)
9022 {
9023   OrcExecutor _ex, *ex = &_ex;
9024   static int p_inited = 0;
9025   static OrcProgram *p = 0;
9026   void (*func) (OrcExecutor *);
9027
9028   if (!p_inited) {
9029     orc_once_mutex_lock ();
9030     if (!p_inited) {
9031       OrcCompileResult result;
9032
9033       p = orc_program_new ();
9034       orc_program_set_name (p, "orc_sum_u8");
9035       orc_program_set_backup_function (p, _backup_orc_sum_u8);
9036       orc_program_add_source (p, 1, "s1");
9037       orc_program_add_accumulator (p, 4, "a1");
9038       orc_program_add_temporary (p, 2, "t1");
9039       orc_program_add_temporary (p, 4, "t2");
9040
9041       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
9042       orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
9043       orc_program_append_2 (p, "accl", 0, ORC_VAR_A1, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
9044
9045       result = orc_program_compile (p);
9046     }
9047     p_inited = TRUE;
9048     orc_once_mutex_unlock ();
9049   }
9050   ex->program = p;
9051
9052   ex->n = n;
9053   ex->arrays[ORC_VAR_S1] = (void *)s1;
9054
9055   func = p->code_exec;
9056   func (ex);
9057   *a1 = orc_executor_get_accumulator (ex, ORC_VAR_A1);
9058 }
9059 #endif
9060
9061
9062 /* orc_sum_s16 */
9063 #ifdef DISABLE_ORC
9064 void
9065 orc_sum_s16 (int32_t * a1, const int16_t * s1, int n){
9066   int i;
9067   const orc_union16 * ORC_RESTRICT ptr4;
9068   orc_union32 var12 =  { 0 };
9069   orc_union16 var33;
9070   orc_union32 var34;
9071
9072   ptr4 = (orc_union16 *)s1;
9073
9074
9075   for (i = 0; i < n; i++) {
9076     /* 0: loadw */
9077     var33 = ptr4[i];
9078     /* 1: convswl */
9079     var34.i = var33.i;
9080     /* 2: accl */
9081     var12.i = var12.i + var34.i;
9082   }
9083   *a1 = var12.i;
9084
9085 }
9086
9087 #else
9088 static void
9089 _backup_orc_sum_s16 (OrcExecutor * ORC_RESTRICT ex)
9090 {
9091   int i;
9092   int n = ex->n;
9093   const orc_union16 * ORC_RESTRICT ptr4;
9094   orc_union32 var12 =  { 0 };
9095   orc_union16 var33;
9096   orc_union32 var34;
9097
9098   ptr4 = (orc_union16 *)ex->arrays[4];
9099
9100
9101   for (i = 0; i < n; i++) {
9102     /* 0: loadw */
9103     var33 = ptr4[i];
9104     /* 1: convswl */
9105     var34.i = var33.i;
9106     /* 2: accl */
9107     var12.i = var12.i + var34.i;
9108   }
9109   ex->accumulators[0] = var12.i;
9110
9111 }
9112
9113 void
9114 orc_sum_s16 (int32_t * a1, const int16_t * s1, int n)
9115 {
9116   OrcExecutor _ex, *ex = &_ex;
9117   static int p_inited = 0;
9118   static OrcProgram *p = 0;
9119   void (*func) (OrcExecutor *);
9120
9121   if (!p_inited) {
9122     orc_once_mutex_lock ();
9123     if (!p_inited) {
9124       OrcCompileResult result;
9125
9126       p = orc_program_new ();
9127       orc_program_set_name (p, "orc_sum_s16");
9128       orc_program_set_backup_function (p, _backup_orc_sum_s16);
9129       orc_program_add_source (p, 2, "s1");
9130       orc_program_add_accumulator (p, 4, "a1");
9131       orc_program_add_temporary (p, 4, "t1");
9132
9133       orc_program_append_2 (p, "convswl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
9134       orc_program_append_2 (p, "accl", 0, ORC_VAR_A1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
9135
9136       result = orc_program_compile (p);
9137     }
9138     p_inited = TRUE;
9139     orc_once_mutex_unlock ();
9140   }
9141   ex->program = p;
9142
9143   ex->n = n;
9144   ex->arrays[ORC_VAR_S1] = (void *)s1;
9145
9146   func = p->code_exec;
9147   func (ex);
9148   *a1 = orc_executor_get_accumulator (ex, ORC_VAR_A1);
9149 }
9150 #endif
9151
9152
9153 /* orc_sum_square_diff_u8 */
9154 #ifdef DISABLE_ORC
9155 void
9156 orc_sum_square_diff_u8 (int32_t * a1, const orc_uint8 * s1, const orc_uint8 * s2, int n){
9157   int i;
9158   const orc_int8 * ORC_RESTRICT ptr4;
9159   const orc_int8 * ORC_RESTRICT ptr5;
9160   orc_union32 var12 =  { 0 };
9161   orc_int8 var35;
9162   orc_int8 var36;
9163   orc_union16 var37;
9164   orc_union16 var38;
9165   orc_union16 var39;
9166   orc_union16 var40;
9167   orc_union32 var41;
9168
9169   ptr4 = (orc_int8 *)s1;
9170   ptr5 = (orc_int8 *)s2;
9171
9172
9173   for (i = 0; i < n; i++) {
9174     /* 0: loadb */
9175     var35 = ptr4[i];
9176     /* 1: convubw */
9177     var37.i = (orc_uint8)var35;
9178     /* 2: loadb */
9179     var36 = ptr5[i];
9180     /* 3: convubw */
9181     var38.i = (orc_uint8)var36;
9182     /* 4: subw */
9183     var39.i = var37.i - var38.i;
9184     /* 5: mullw */
9185     var40.i = (var39.i * var39.i) & 0xffff;
9186     /* 6: convuwl */
9187     var41.i = (orc_uint16)var40.i;
9188     /* 7: accl */
9189     var12.i = var12.i + var41.i;
9190   }
9191   *a1 = var12.i;
9192
9193 }
9194
9195 #else
9196 static void
9197 _backup_orc_sum_square_diff_u8 (OrcExecutor * ORC_RESTRICT ex)
9198 {
9199   int i;
9200   int n = ex->n;
9201   const orc_int8 * ORC_RESTRICT ptr4;
9202   const orc_int8 * ORC_RESTRICT ptr5;
9203   orc_union32 var12 =  { 0 };
9204   orc_int8 var35;
9205   orc_int8 var36;
9206   orc_union16 var37;
9207   orc_union16 var38;
9208   orc_union16 var39;
9209   orc_union16 var40;
9210   orc_union32 var41;
9211
9212   ptr4 = (orc_int8 *)ex->arrays[4];
9213   ptr5 = (orc_int8 *)ex->arrays[5];
9214
9215
9216   for (i = 0; i < n; i++) {
9217     /* 0: loadb */
9218     var35 = ptr4[i];
9219     /* 1: convubw */
9220     var37.i = (orc_uint8)var35;
9221     /* 2: loadb */
9222     var36 = ptr5[i];
9223     /* 3: convubw */
9224     var38.i = (orc_uint8)var36;
9225     /* 4: subw */
9226     var39.i = var37.i - var38.i;
9227     /* 5: mullw */
9228     var40.i = (var39.i * var39.i) & 0xffff;
9229     /* 6: convuwl */
9230     var41.i = (orc_uint16)var40.i;
9231     /* 7: accl */
9232     var12.i = var12.i + var41.i;
9233   }
9234   ex->accumulators[0] = var12.i;
9235
9236 }
9237
9238 void
9239 orc_sum_square_diff_u8 (int32_t * a1, const orc_uint8 * s1, const orc_uint8 * s2, int n)
9240 {
9241   OrcExecutor _ex, *ex = &_ex;
9242   static int p_inited = 0;
9243   static OrcProgram *p = 0;
9244   void (*func) (OrcExecutor *);
9245
9246   if (!p_inited) {
9247     orc_once_mutex_lock ();
9248     if (!p_inited) {
9249       OrcCompileResult result;
9250
9251       p = orc_program_new ();
9252       orc_program_set_name (p, "orc_sum_square_diff_u8");
9253       orc_program_set_backup_function (p, _backup_orc_sum_square_diff_u8);
9254       orc_program_add_source (p, 1, "s1");
9255       orc_program_add_source (p, 1, "s2");
9256       orc_program_add_accumulator (p, 4, "a1");
9257       orc_program_add_temporary (p, 2, "t1");
9258       orc_program_add_temporary (p, 2, "t2");
9259       orc_program_add_temporary (p, 4, "t3");
9260
9261       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
9262       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, ORC_VAR_D1);
9263       orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1);
9264       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1);
9265       orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
9266       orc_program_append_2 (p, "accl", 0, ORC_VAR_A1, ORC_VAR_T3, ORC_VAR_D1, ORC_VAR_D1);
9267
9268       result = orc_program_compile (p);
9269     }
9270     p_inited = TRUE;
9271     orc_once_mutex_unlock ();
9272   }
9273   ex->program = p;
9274
9275   ex->n = n;
9276   ex->arrays[ORC_VAR_S1] = (void *)s1;
9277   ex->arrays[ORC_VAR_S2] = (void *)s2;
9278
9279   func = p->code_exec;
9280   func (ex);
9281   *a1 = orc_executor_get_accumulator (ex, ORC_VAR_A1);
9282 }
9283 #endif
9284
9285
9286 /* orc_dequantise_s16_2d_4xn */
9287 #ifdef DISABLE_ORC
9288 void
9289 orc_dequantise_s16_2d_4xn (int16_t * d1, int d1_stride, const int16_t * s1, int s1_stride, int p1, int p2, int m){
9290   int i;
9291   int j;
9292   int n = 4;
9293   orc_union16 * ORC_RESTRICT ptr0;
9294   const orc_union16 * ORC_RESTRICT ptr4;
9295   orc_union16 var34;
9296   orc_union16 var35;
9297   orc_union16 var36;
9298   orc_union16 var37;
9299   orc_union16 var38;
9300   orc_union16 var39;
9301   orc_union16 var40;
9302   orc_union16 var41;
9303   orc_union16 var42;
9304   orc_union16 var43;
9305
9306   for (j = 0; j < m; j++) {
9307     ptr0 = ORC_PTR_OFFSET(d1, d1_stride * j);
9308     ptr4 = ORC_PTR_OFFSET(s1, s1_stride * j);
9309
9310       /* 4: loadpw */
9311         var35.i = p1;
9312       /* 6: loadpw */
9313         var36.i = p2;
9314
9315     for (i = 0; i < n; i++) {
9316       /* 0: loadw */
9317       var34 = ptr4[i];
9318       /* 1: copyw */
9319       var38.i = var34.i;
9320       /* 2: signw */
9321       var39.i = ORC_CLAMP(var38.i,-1,1);
9322       /* 3: absw */
9323       var40.i = ORC_ABS(var38.i);
9324       /* 5: mullw */
9325       var41.i = (var40.i * var35.i) & 0xffff;
9326       /* 7: addw */
9327       var42.i = var41.i + var36.i;
9328       /* 8: shrsw */
9329       var43.i = var42.i >> 2;
9330       /* 9: mullw */
9331       var37.i = (var43.i * var39.i) & 0xffff;
9332       /* 10: storew */
9333       ptr0[i] = var37;
9334     }
9335   }
9336
9337 }
9338
9339 #else
9340 static void
9341 _backup_orc_dequantise_s16_2d_4xn (OrcExecutor * ORC_RESTRICT ex)
9342 {
9343   int i;
9344   int j;
9345   int n = 4;
9346   int m = ex->params[ORC_VAR_A1];
9347   orc_union16 * ORC_RESTRICT ptr0;
9348   const orc_union16 * ORC_RESTRICT ptr4;
9349   orc_union16 var34;
9350   orc_union16 var35;
9351   orc_union16 var36;
9352   orc_union16 var37;
9353   orc_union16 var38;
9354   orc_union16 var39;
9355   orc_union16 var40;
9356   orc_union16 var41;
9357   orc_union16 var42;
9358   orc_union16 var43;
9359
9360   for (j = 0; j < m; j++) {
9361     ptr0 = ORC_PTR_OFFSET(ex->arrays[0], ex->params[0] * j);
9362     ptr4 = ORC_PTR_OFFSET(ex->arrays[4], ex->params[4] * j);
9363
9364       /* 4: loadpw */
9365         var35.i = ex->params[24];
9366       /* 6: loadpw */
9367         var36.i = ex->params[25];
9368
9369     for (i = 0; i < n; i++) {
9370       /* 0: loadw */
9371       var34 = ptr4[i];
9372       /* 1: copyw */
9373       var38.i = var34.i;
9374       /* 2: signw */
9375       var39.i = ORC_CLAMP(var38.i,-1,1);
9376       /* 3: absw */
9377       var40.i = ORC_ABS(var38.i);
9378       /* 5: mullw */
9379       var41.i = (var40.i * var35.i) & 0xffff;
9380       /* 7: addw */
9381       var42.i = var41.i + var36.i;
9382       /* 8: shrsw */
9383       var43.i = var42.i >> 2;
9384       /* 9: mullw */
9385       var37.i = (var43.i * var39.i) & 0xffff;
9386       /* 10: storew */
9387       ptr0[i] = var37;
9388     }
9389   }
9390
9391 }
9392
9393 void
9394 orc_dequantise_s16_2d_4xn (int16_t * d1, int d1_stride, const int16_t * s1, int s1_stride, int p1, int p2, int m)
9395 {
9396   OrcExecutor _ex, *ex = &_ex;
9397   static int p_inited = 0;
9398   static OrcProgram *p = 0;
9399   void (*func) (OrcExecutor *);
9400
9401   if (!p_inited) {
9402     orc_once_mutex_lock ();
9403     if (!p_inited) {
9404       OrcCompileResult result;
9405
9406       p = orc_program_new ();
9407       orc_program_set_constant_n (p, 4);
9408       orc_program_set_2d (p);
9409       orc_program_set_name (p, "orc_dequantise_s16_2d_4xn");
9410       orc_program_set_backup_function (p, _backup_orc_dequantise_s16_2d_4xn);
9411       orc_program_add_destination (p, 2, "d1");
9412       orc_program_add_source (p, 2, "s1");
9413       orc_program_add_constant (p, 4, 0x00000002, "c1");
9414       orc_program_add_parameter (p, 2, "p1");
9415       orc_program_add_parameter (p, 2, "p2");
9416       orc_program_add_temporary (p, 2, "t1");
9417       orc_program_add_temporary (p, 2, "t2");
9418
9419       orc_program_append_2 (p, "copyw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
9420       orc_program_append_2 (p, "signw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
9421       orc_program_append_2 (p, "absw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
9422       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1);
9423       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P2, ORC_VAR_D1);
9424       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
9425       orc_program_append_2 (p, "mullw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1);
9426
9427       result = orc_program_compile (p);
9428     }
9429     p_inited = TRUE;
9430     orc_once_mutex_unlock ();
9431   }
9432   ex->program = p;
9433
9434   ex->n = 4;
9435   ORC_EXECUTOR_M(ex) = m;
9436   ex->arrays[ORC_VAR_D1] = d1;
9437   ex->params[ORC_VAR_D1] = d1_stride;
9438   ex->arrays[ORC_VAR_S1] = (void *)s1;
9439   ex->params[ORC_VAR_S1] = s1_stride;
9440   ex->params[ORC_VAR_P1] = p1;
9441   ex->params[ORC_VAR_P2] = p2;
9442
9443   func = p->code_exec;
9444   func (ex);
9445 }
9446 #endif
9447
9448
9449 /* orc_dequantise_s16_2d_8xn */
9450 #ifdef DISABLE_ORC
9451 void
9452 orc_dequantise_s16_2d_8xn (int16_t * d1, int d1_stride, const int16_t * s1, int s1_stride, int p1, int p2, int m){
9453   int i;
9454   int j;
9455   int n = 8;
9456   orc_union16 * ORC_RESTRICT ptr0;
9457   const orc_union16 * ORC_RESTRICT ptr4;
9458   orc_union16 var34;
9459   orc_union16 var35;
9460   orc_union16 var36;
9461   orc_union16 var37;
9462   orc_union16 var38;
9463   orc_union16 var39;
9464   orc_union16 var40;
9465   orc_union16 var41;
9466   orc_union16 var42;
9467   orc_union16 var43;
9468
9469   for (j = 0; j < m; j++) {
9470     ptr0 = ORC_PTR_OFFSET(d1, d1_stride * j);
9471     ptr4 = ORC_PTR_OFFSET(s1, s1_stride * j);
9472
9473       /* 4: loadpw */
9474         var35.i = p1;
9475       /* 6: loadpw */
9476         var36.i = p2;
9477
9478     for (i = 0; i < n; i++) {
9479       /* 0: loadw */
9480       var34 = ptr4[i];
9481       /* 1: copyw */
9482       var38.i = var34.i;
9483       /* 2: signw */
9484       var39.i = ORC_CLAMP(var38.i,-1,1);
9485       /* 3: absw */
9486       var40.i = ORC_ABS(var38.i);
9487       /* 5: mullw */
9488       var41.i = (var40.i * var35.i) & 0xffff;
9489       /* 7: addw */
9490       var42.i = var41.i + var36.i;
9491       /* 8: shrsw */
9492       var43.i = var42.i >> 2;
9493       /* 9: mullw */
9494       var37.i = (var43.i * var39.i) & 0xffff;
9495       /* 10: storew */
9496       ptr0[i] = var37;
9497     }
9498   }
9499
9500 }
9501
9502 #else
9503 static void
9504 _backup_orc_dequantise_s16_2d_8xn (OrcExecutor * ORC_RESTRICT ex)
9505 {
9506   int i;
9507   int j;
9508   int n = 8;
9509   int m = ex->params[ORC_VAR_A1];
9510   orc_union16 * ORC_RESTRICT ptr0;
9511   const orc_union16 * ORC_RESTRICT ptr4;
9512   orc_union16 var34;
9513   orc_union16 var35;
9514   orc_union16 var36;
9515   orc_union16 var37;
9516   orc_union16 var38;
9517   orc_union16 var39;
9518   orc_union16 var40;
9519   orc_union16 var41;
9520   orc_union16 var42;
9521   orc_union16 var43;
9522
9523   for (j = 0; j < m; j++) {
9524     ptr0 = ORC_PTR_OFFSET(ex->arrays[0], ex->params[0] * j);
9525     ptr4 = ORC_PTR_OFFSET(ex->arrays[4], ex->params[4] * j);
9526
9527       /* 4: loadpw */
9528         var35.i = ex->params[24];
9529       /* 6: loadpw */
9530         var36.i = ex->params[25];
9531
9532     for (i = 0; i < n; i++) {
9533       /* 0: loadw */
9534       var34 = ptr4[i];
9535       /* 1: copyw */
9536       var38.i = var34.i;
9537       /* 2: signw */
9538       var39.i = ORC_CLAMP(var38.i,-1,1);
9539       /* 3: absw */
9540       var40.i = ORC_ABS(var38.i);
9541       /* 5: mullw */
9542       var41.i = (var40.i * var35.i) & 0xffff;
9543       /* 7: addw */
9544       var42.i = var41.i + var36.i;
9545       /* 8: shrsw */
9546       var43.i = var42.i >> 2;
9547       /* 9: mullw */
9548       var37.i = (var43.i * var39.i) & 0xffff;
9549       /* 10: storew */
9550       ptr0[i] = var37;
9551     }
9552   }
9553
9554 }
9555
9556 void
9557 orc_dequantise_s16_2d_8xn (int16_t * d1, int d1_stride, const int16_t * s1, int s1_stride, int p1, int p2, int m)
9558 {
9559   OrcExecutor _ex, *ex = &_ex;
9560   static int p_inited = 0;
9561   static OrcProgram *p = 0;
9562   void (*func) (OrcExecutor *);
9563
9564   if (!p_inited) {
9565     orc_once_mutex_lock ();
9566     if (!p_inited) {
9567       OrcCompileResult result;
9568
9569       p = orc_program_new ();
9570       orc_program_set_constant_n (p, 8);
9571       orc_program_set_2d (p);
9572       orc_program_set_name (p, "orc_dequantise_s16_2d_8xn");
9573       orc_program_set_backup_function (p, _backup_orc_dequantise_s16_2d_8xn);
9574       orc_program_add_destination (p, 2, "d1");
9575       orc_program_add_source (p, 2, "s1");
9576       orc_program_add_constant (p, 4, 0x00000002, "c1");
9577       orc_program_add_parameter (p, 2, "p1");
9578       orc_program_add_parameter (p, 2, "p2");
9579       orc_program_add_temporary (p, 2, "t1");
9580       orc_program_add_temporary (p, 2, "t2");
9581
9582       orc_program_append_2 (p, "copyw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
9583       orc_program_append_2 (p, "signw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
9584       orc_program_append_2 (p, "absw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
9585       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1);
9586       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P2, ORC_VAR_D1);
9587       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
9588       orc_program_append_2 (p, "mullw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1);
9589
9590       result = orc_program_compile (p);
9591     }
9592     p_inited = TRUE;
9593     orc_once_mutex_unlock ();
9594   }
9595   ex->program = p;
9596
9597   ex->n = 8;
9598   ORC_EXECUTOR_M(ex) = m;
9599   ex->arrays[ORC_VAR_D1] = d1;
9600   ex->params[ORC_VAR_D1] = d1_stride;
9601   ex->arrays[ORC_VAR_S1] = (void *)s1;
9602   ex->params[ORC_VAR_S1] = s1_stride;
9603   ex->params[ORC_VAR_P1] = p1;
9604   ex->params[ORC_VAR_P2] = p2;
9605
9606   func = p->code_exec;
9607   func (ex);
9608 }
9609 #endif
9610
9611
9612 /* orc_dequantise_s16_ip_2d_8xn */
9613 #ifdef DISABLE_ORC
9614 void
9615 orc_dequantise_s16_ip_2d_8xn (int16_t * d1, int d1_stride, int p1, int p2, int m){
9616   int i;
9617   int j;
9618   int n = 8;
9619   orc_union16 * ORC_RESTRICT ptr0;
9620   orc_union16 var34;
9621   orc_union16 var35;
9622   orc_union16 var36;
9623   orc_union16 var37;
9624   orc_union16 var38;
9625   orc_union16 var39;
9626   orc_union16 var40;
9627   orc_union16 var41;
9628   orc_union16 var42;
9629   orc_union16 var43;
9630
9631   for (j = 0; j < m; j++) {
9632     ptr0 = ORC_PTR_OFFSET(d1, d1_stride * j);
9633
9634       /* 4: loadpw */
9635         var35.i = p1;
9636       /* 6: loadpw */
9637         var36.i = p2;
9638
9639     for (i = 0; i < n; i++) {
9640       /* 0: loadw */
9641       var34 = ptr0[i];
9642       /* 1: copyw */
9643       var38.i = var34.i;
9644       /* 2: signw */
9645       var39.i = ORC_CLAMP(var38.i,-1,1);
9646       /* 3: absw */
9647       var40.i = ORC_ABS(var38.i);
9648       /* 5: mullw */
9649       var41.i = (var40.i * var35.i) & 0xffff;
9650       /* 7: addw */
9651       var42.i = var41.i + var36.i;
9652       /* 8: shrsw */
9653       var43.i = var42.i >> 2;
9654       /* 9: mullw */
9655       var37.i = (var43.i * var39.i) & 0xffff;
9656       /* 10: storew */
9657       ptr0[i] = var37;
9658     }
9659   }
9660
9661 }
9662
9663 #else
9664 static void
9665 _backup_orc_dequantise_s16_ip_2d_8xn (OrcExecutor * ORC_RESTRICT ex)
9666 {
9667   int i;
9668   int j;
9669   int n = 8;
9670   int m = ex->params[ORC_VAR_A1];
9671   orc_union16 * ORC_RESTRICT ptr0;
9672   orc_union16 var34;
9673   orc_union16 var35;
9674   orc_union16 var36;
9675   orc_union16 var37;
9676   orc_union16 var38;
9677   orc_union16 var39;
9678   orc_union16 var40;
9679   orc_union16 var41;
9680   orc_union16 var42;
9681   orc_union16 var43;
9682
9683   for (j = 0; j < m; j++) {
9684     ptr0 = ORC_PTR_OFFSET(ex->arrays[0], ex->params[0] * j);
9685
9686       /* 4: loadpw */
9687         var35.i = ex->params[24];
9688       /* 6: loadpw */
9689         var36.i = ex->params[25];
9690
9691     for (i = 0; i < n; i++) {
9692       /* 0: loadw */
9693       var34 = ptr0[i];
9694       /* 1: copyw */
9695       var38.i = var34.i;
9696       /* 2: signw */
9697       var39.i = ORC_CLAMP(var38.i,-1,1);
9698       /* 3: absw */
9699       var40.i = ORC_ABS(var38.i);
9700       /* 5: mullw */
9701       var41.i = (var40.i * var35.i) & 0xffff;
9702       /* 7: addw */
9703       var42.i = var41.i + var36.i;
9704       /* 8: shrsw */
9705       var43.i = var42.i >> 2;
9706       /* 9: mullw */
9707       var37.i = (var43.i * var39.i) & 0xffff;
9708       /* 10: storew */
9709       ptr0[i] = var37;
9710     }
9711   }
9712
9713 }
9714
9715 void
9716 orc_dequantise_s16_ip_2d_8xn (int16_t * d1, int d1_stride, int p1, int p2, int m)
9717 {
9718   OrcExecutor _ex, *ex = &_ex;
9719   static int p_inited = 0;
9720   static OrcProgram *p = 0;
9721   void (*func) (OrcExecutor *);
9722
9723   if (!p_inited) {
9724     orc_once_mutex_lock ();
9725     if (!p_inited) {
9726       OrcCompileResult result;
9727
9728       p = orc_program_new ();
9729       orc_program_set_constant_n (p, 8);
9730       orc_program_set_2d (p);
9731       orc_program_set_name (p, "orc_dequantise_s16_ip_2d_8xn");
9732       orc_program_set_backup_function (p, _backup_orc_dequantise_s16_ip_2d_8xn);
9733       orc_program_add_destination (p, 2, "d1");
9734       orc_program_add_constant (p, 4, 0x00000002, "c1");
9735       orc_program_add_parameter (p, 2, "p1");
9736       orc_program_add_parameter (p, 2, "p2");
9737       orc_program_add_temporary (p, 2, "t1");
9738       orc_program_add_temporary (p, 2, "t2");
9739
9740       orc_program_append_2 (p, "copyw", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_D1);
9741       orc_program_append_2 (p, "signw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
9742       orc_program_append_2 (p, "absw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
9743       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1);
9744       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P2, ORC_VAR_D1);
9745       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
9746       orc_program_append_2 (p, "mullw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1);
9747
9748       result = orc_program_compile (p);
9749     }
9750     p_inited = TRUE;
9751     orc_once_mutex_unlock ();
9752   }
9753   ex->program = p;
9754
9755   ex->n = 8;
9756   ORC_EXECUTOR_M(ex) = m;
9757   ex->arrays[ORC_VAR_D1] = d1;
9758   ex->params[ORC_VAR_D1] = d1_stride;
9759   ex->params[ORC_VAR_P1] = p1;
9760   ex->params[ORC_VAR_P2] = p2;
9761
9762   func = p->code_exec;
9763   func (ex);
9764 }
9765 #endif
9766
9767
9768 /* orc_dequantise_s16_ip_2d */
9769 #ifdef DISABLE_ORC
9770 void
9771 orc_dequantise_s16_ip_2d (int16_t * d1, int d1_stride, int p1, int p2, int n, int m){
9772   int i;
9773   int j;
9774   orc_union16 * ORC_RESTRICT ptr0;
9775   orc_union16 var34;
9776   orc_union16 var35;
9777   orc_union16 var36;
9778   orc_union16 var37;
9779   orc_union16 var38;
9780   orc_union16 var39;
9781   orc_union16 var40;
9782   orc_union16 var41;
9783   orc_union16 var42;
9784   orc_union16 var43;
9785
9786   for (j = 0; j < m; j++) {
9787     ptr0 = ORC_PTR_OFFSET(d1, d1_stride * j);
9788
9789       /* 4: loadpw */
9790         var35.i = p1;
9791       /* 6: loadpw */
9792         var36.i = p2;
9793
9794     for (i = 0; i < n; i++) {
9795       /* 0: loadw */
9796       var34 = ptr0[i];
9797       /* 1: copyw */
9798       var38.i = var34.i;
9799       /* 2: signw */
9800       var39.i = ORC_CLAMP(var38.i,-1,1);
9801       /* 3: absw */
9802       var40.i = ORC_ABS(var38.i);
9803       /* 5: mullw */
9804       var41.i = (var40.i * var35.i) & 0xffff;
9805       /* 7: addw */
9806       var42.i = var41.i + var36.i;
9807       /* 8: shrsw */
9808       var43.i = var42.i >> 2;
9809       /* 9: mullw */
9810       var37.i = (var43.i * var39.i) & 0xffff;
9811       /* 10: storew */
9812       ptr0[i] = var37;
9813     }
9814   }
9815
9816 }
9817
9818 #else
9819 static void
9820 _backup_orc_dequantise_s16_ip_2d (OrcExecutor * ORC_RESTRICT ex)
9821 {
9822   int i;
9823   int j;
9824   int n = ex->n;
9825   int m = ex->params[ORC_VAR_A1];
9826   orc_union16 * ORC_RESTRICT ptr0;
9827   orc_union16 var34;
9828   orc_union16 var35;
9829   orc_union16 var36;
9830   orc_union16 var37;
9831   orc_union16 var38;
9832   orc_union16 var39;
9833   orc_union16 var40;
9834   orc_union16 var41;
9835   orc_union16 var42;
9836   orc_union16 var43;
9837
9838   for (j = 0; j < m; j++) {
9839     ptr0 = ORC_PTR_OFFSET(ex->arrays[0], ex->params[0] * j);
9840
9841       /* 4: loadpw */
9842         var35.i = ex->params[24];
9843       /* 6: loadpw */
9844         var36.i = ex->params[25];
9845
9846     for (i = 0; i < n; i++) {
9847       /* 0: loadw */
9848       var34 = ptr0[i];
9849       /* 1: copyw */
9850       var38.i = var34.i;
9851       /* 2: signw */
9852       var39.i = ORC_CLAMP(var38.i,-1,1);
9853       /* 3: absw */
9854       var40.i = ORC_ABS(var38.i);
9855       /* 5: mullw */
9856       var41.i = (var40.i * var35.i) & 0xffff;
9857       /* 7: addw */
9858       var42.i = var41.i + var36.i;
9859       /* 8: shrsw */
9860       var43.i = var42.i >> 2;
9861       /* 9: mullw */
9862       var37.i = (var43.i * var39.i) & 0xffff;
9863       /* 10: storew */
9864       ptr0[i] = var37;
9865     }
9866   }
9867
9868 }
9869
9870 void
9871 orc_dequantise_s16_ip_2d (int16_t * d1, int d1_stride, int p1, int p2, int n, int m)
9872 {
9873   OrcExecutor _ex, *ex = &_ex;
9874   static int p_inited = 0;
9875   static OrcProgram *p = 0;
9876   void (*func) (OrcExecutor *);
9877
9878   if (!p_inited) {
9879     orc_once_mutex_lock ();
9880     if (!p_inited) {
9881       OrcCompileResult result;
9882
9883       p = orc_program_new ();
9884       orc_program_set_2d (p);
9885       orc_program_set_name (p, "orc_dequantise_s16_ip_2d");
9886       orc_program_set_backup_function (p, _backup_orc_dequantise_s16_ip_2d);
9887       orc_program_add_destination (p, 2, "d1");
9888       orc_program_add_constant (p, 4, 0x00000002, "c1");
9889       orc_program_add_parameter (p, 2, "p1");
9890       orc_program_add_parameter (p, 2, "p2");
9891       orc_program_add_temporary (p, 2, "t1");
9892       orc_program_add_temporary (p, 2, "t2");
9893
9894       orc_program_append_2 (p, "copyw", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_D1);
9895       orc_program_append_2 (p, "signw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
9896       orc_program_append_2 (p, "absw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
9897       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1);
9898       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P2, ORC_VAR_D1);
9899       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
9900       orc_program_append_2 (p, "mullw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1);
9901
9902       result = orc_program_compile (p);
9903     }
9904     p_inited = TRUE;
9905     orc_once_mutex_unlock ();
9906   }
9907   ex->program = p;
9908
9909   ex->n = n;
9910   ORC_EXECUTOR_M(ex) = m;
9911   ex->arrays[ORC_VAR_D1] = d1;
9912   ex->params[ORC_VAR_D1] = d1_stride;
9913   ex->params[ORC_VAR_P1] = p1;
9914   ex->params[ORC_VAR_P2] = p2;
9915
9916   func = p->code_exec;
9917   func (ex);
9918 }
9919 #endif
9920
9921
9922 /* orc_dequantise_s16_ip */
9923 #ifdef DISABLE_ORC
9924 void
9925 orc_dequantise_s16_ip (int16_t * d1, int p1, int p2, int n){
9926   int i;
9927   orc_union16 * ORC_RESTRICT ptr0;
9928   orc_union16 var34;
9929   orc_union16 var35;
9930   orc_union16 var36;
9931   orc_union16 var37;
9932   orc_union16 var38;
9933   orc_union16 var39;
9934   orc_union16 var40;
9935   orc_union16 var41;
9936   orc_union16 var42;
9937   orc_union16 var43;
9938
9939   ptr0 = (orc_union16 *)d1;
9940
9941     /* 4: loadpw */
9942     var35.i = p1;
9943     /* 6: loadpw */
9944     var36.i = p2;
9945
9946   for (i = 0; i < n; i++) {
9947     /* 0: loadw */
9948     var34 = ptr0[i];
9949     /* 1: copyw */
9950     var38.i = var34.i;
9951     /* 2: signw */
9952     var39.i = ORC_CLAMP(var38.i,-1,1);
9953     /* 3: absw */
9954     var40.i = ORC_ABS(var38.i);
9955     /* 5: mullw */
9956     var41.i = (var40.i * var35.i) & 0xffff;
9957     /* 7: addw */
9958     var42.i = var41.i + var36.i;
9959     /* 8: shrsw */
9960     var43.i = var42.i >> 2;
9961     /* 9: mullw */
9962     var37.i = (var43.i * var39.i) & 0xffff;
9963     /* 10: storew */
9964     ptr0[i] = var37;
9965   }
9966
9967 }
9968
9969 #else
9970 static void
9971 _backup_orc_dequantise_s16_ip (OrcExecutor * ORC_RESTRICT ex)
9972 {
9973   int i;
9974   int n = ex->n;
9975   orc_union16 * ORC_RESTRICT ptr0;
9976   orc_union16 var34;
9977   orc_union16 var35;
9978   orc_union16 var36;
9979   orc_union16 var37;
9980   orc_union16 var38;
9981   orc_union16 var39;
9982   orc_union16 var40;
9983   orc_union16 var41;
9984   orc_union16 var42;
9985   orc_union16 var43;
9986
9987   ptr0 = (orc_union16 *)ex->arrays[0];
9988
9989     /* 4: loadpw */
9990     var35.i = ex->params[24];
9991     /* 6: loadpw */
9992     var36.i = ex->params[25];
9993
9994   for (i = 0; i < n; i++) {
9995     /* 0: loadw */
9996     var34 = ptr0[i];
9997     /* 1: copyw */
9998     var38.i = var34.i;
9999     /* 2: signw */
10000     var39.i = ORC_CLAMP(var38.i,-1,1);
10001     /* 3: absw */
10002     var40.i = ORC_ABS(var38.i);
10003     /* 5: mullw */
10004     var41.i = (var40.i * var35.i) & 0xffff;
10005     /* 7: addw */
10006     var42.i = var41.i + var36.i;
10007     /* 8: shrsw */
10008     var43.i = var42.i >> 2;
10009     /* 9: mullw */
10010     var37.i = (var43.i * var39.i) & 0xffff;
10011     /* 10: storew */
10012     ptr0[i] = var37;
10013   }
10014
10015 }
10016
10017 void
10018 orc_dequantise_s16_ip (int16_t * d1, int p1, int p2, int n)
10019 {
10020   OrcExecutor _ex, *ex = &_ex;
10021   static int p_inited = 0;
10022   static OrcProgram *p = 0;
10023   void (*func) (OrcExecutor *);
10024
10025   if (!p_inited) {
10026     orc_once_mutex_lock ();
10027     if (!p_inited) {
10028       OrcCompileResult result;
10029
10030       p = orc_program_new ();
10031       orc_program_set_name (p, "orc_dequantise_s16_ip");
10032       orc_program_set_backup_function (p, _backup_orc_dequantise_s16_ip);
10033       orc_program_add_destination (p, 2, "d1");
10034       orc_program_add_constant (p, 4, 0x00000002, "c1");
10035       orc_program_add_parameter (p, 2, "p1");
10036       orc_program_add_parameter (p, 2, "p2");
10037       orc_program_add_temporary (p, 2, "t1");
10038       orc_program_add_temporary (p, 2, "t2");
10039
10040       orc_program_append_2 (p, "copyw", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_D1);
10041       orc_program_append_2 (p, "signw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
10042       orc_program_append_2 (p, "absw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
10043       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1);
10044       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P2, ORC_VAR_D1);
10045       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
10046       orc_program_append_2 (p, "mullw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1);
10047
10048       result = orc_program_compile (p);
10049     }
10050     p_inited = TRUE;
10051     orc_once_mutex_unlock ();
10052   }
10053   ex->program = p;
10054
10055   ex->n = n;
10056   ex->arrays[ORC_VAR_D1] = d1;
10057   ex->params[ORC_VAR_P1] = p1;
10058   ex->params[ORC_VAR_P2] = p2;
10059
10060   func = p->code_exec;
10061   func (ex);
10062 }
10063 #endif
10064
10065
10066 /* orc_dequantise_s16 */
10067 #ifdef DISABLE_ORC
10068 void
10069 orc_dequantise_s16 (int16_t * d1, const int16_t * s1, int p1, int p2, int n){
10070   int i;
10071   orc_union16 * ORC_RESTRICT ptr0;
10072   const orc_union16 * ORC_RESTRICT ptr4;
10073   orc_union16 var34;
10074   orc_union16 var35;
10075   orc_union16 var36;
10076   orc_union16 var37;
10077   orc_union16 var38;
10078   orc_union16 var39;
10079   orc_union16 var40;
10080   orc_union16 var41;
10081   orc_union16 var42;
10082   orc_union16 var43;
10083
10084   ptr0 = (orc_union16 *)d1;
10085   ptr4 = (orc_union16 *)s1;
10086
10087     /* 4: loadpw */
10088     var35.i = p1;
10089     /* 6: loadpw */
10090     var36.i = p2;
10091
10092   for (i = 0; i < n; i++) {
10093     /* 0: loadw */
10094     var34 = ptr4[i];
10095     /* 1: copyw */
10096     var38.i = var34.i;
10097     /* 2: signw */
10098     var39.i = ORC_CLAMP(var38.i,-1,1);
10099     /* 3: absw */
10100     var40.i = ORC_ABS(var38.i);
10101     /* 5: mullw */
10102     var41.i = (var40.i * var35.i) & 0xffff;
10103     /* 7: addw */
10104     var42.i = var41.i + var36.i;
10105     /* 8: shrsw */
10106     var43.i = var42.i >> 2;
10107     /* 9: mullw */
10108     var37.i = (var43.i * var39.i) & 0xffff;
10109     /* 10: storew */
10110     ptr0[i] = var37;
10111   }
10112
10113 }
10114
10115 #else
10116 static void
10117 _backup_orc_dequantise_s16 (OrcExecutor * ORC_RESTRICT ex)
10118 {
10119   int i;
10120   int n = ex->n;
10121   orc_union16 * ORC_RESTRICT ptr0;
10122   const orc_union16 * ORC_RESTRICT ptr4;
10123   orc_union16 var34;
10124   orc_union16 var35;
10125   orc_union16 var36;
10126   orc_union16 var37;
10127   orc_union16 var38;
10128   orc_union16 var39;
10129   orc_union16 var40;
10130   orc_union16 var41;
10131   orc_union16 var42;
10132   orc_union16 var43;
10133
10134   ptr0 = (orc_union16 *)ex->arrays[0];
10135   ptr4 = (orc_union16 *)ex->arrays[4];
10136
10137     /* 4: loadpw */
10138     var35.i = ex->params[24];
10139     /* 6: loadpw */
10140     var36.i = ex->params[25];
10141
10142   for (i = 0; i < n; i++) {
10143     /* 0: loadw */
10144     var34 = ptr4[i];
10145     /* 1: copyw */
10146     var38.i = var34.i;
10147     /* 2: signw */
10148     var39.i = ORC_CLAMP(var38.i,-1,1);
10149     /* 3: absw */
10150     var40.i = ORC_ABS(var38.i);
10151     /* 5: mullw */
10152     var41.i = (var40.i * var35.i) & 0xffff;
10153     /* 7: addw */
10154     var42.i = var41.i + var36.i;
10155     /* 8: shrsw */
10156     var43.i = var42.i >> 2;
10157     /* 9: mullw */
10158     var37.i = (var43.i * var39.i) & 0xffff;
10159     /* 10: storew */
10160     ptr0[i] = var37;
10161   }
10162
10163 }
10164
10165 void
10166 orc_dequantise_s16 (int16_t * d1, const int16_t * s1, int p1, int p2, int n)
10167 {
10168   OrcExecutor _ex, *ex = &_ex;
10169   static int p_inited = 0;
10170   static OrcProgram *p = 0;
10171   void (*func) (OrcExecutor *);
10172
10173   if (!p_inited) {
10174     orc_once_mutex_lock ();
10175     if (!p_inited) {
10176       OrcCompileResult result;
10177
10178       p = orc_program_new ();
10179       orc_program_set_name (p, "orc_dequantise_s16");
10180       orc_program_set_backup_function (p, _backup_orc_dequantise_s16);
10181       orc_program_add_destination (p, 2, "d1");
10182       orc_program_add_source (p, 2, "s1");
10183       orc_program_add_constant (p, 4, 0x00000002, "c1");
10184       orc_program_add_parameter (p, 2, "p1");
10185       orc_program_add_parameter (p, 2, "p2");
10186       orc_program_add_temporary (p, 2, "t1");
10187       orc_program_add_temporary (p, 2, "t2");
10188
10189       orc_program_append_2 (p, "copyw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
10190       orc_program_append_2 (p, "signw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
10191       orc_program_append_2 (p, "absw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
10192       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1);
10193       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P2, ORC_VAR_D1);
10194       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
10195       orc_program_append_2 (p, "mullw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1);
10196
10197       result = orc_program_compile (p);
10198     }
10199     p_inited = TRUE;
10200     orc_once_mutex_unlock ();
10201   }
10202   ex->program = p;
10203
10204   ex->n = n;
10205   ex->arrays[ORC_VAR_D1] = d1;
10206   ex->arrays[ORC_VAR_S1] = (void *)s1;
10207   ex->params[ORC_VAR_P1] = p1;
10208   ex->params[ORC_VAR_P2] = p2;
10209
10210   func = p->code_exec;
10211   func (ex);
10212 }
10213 #endif
10214
10215
10216 /* orc_dequantise_var_s16_ip */
10217 #ifdef DISABLE_ORC
10218 void
10219 orc_dequantise_var_s16_ip (int16_t * d1, const int16_t * s1, const int16_t * s2, int n){
10220   int i;
10221   orc_union16 * ORC_RESTRICT ptr0;
10222   const orc_union16 * ORC_RESTRICT ptr4;
10223   const orc_union16 * ORC_RESTRICT ptr5;
10224   orc_union16 var34;
10225   orc_union16 var35;
10226   orc_union16 var36;
10227   orc_union16 var37;
10228   orc_union16 var38;
10229   orc_union16 var39;
10230   orc_union16 var40;
10231   orc_union16 var41;
10232   orc_union16 var42;
10233   orc_union16 var43;
10234
10235   ptr0 = (orc_union16 *)d1;
10236   ptr4 = (orc_union16 *)s1;
10237   ptr5 = (orc_union16 *)s2;
10238
10239
10240   for (i = 0; i < n; i++) {
10241     /* 0: loadw */
10242     var34 = ptr0[i];
10243     /* 1: copyw */
10244     var38.i = var34.i;
10245     /* 2: signw */
10246     var39.i = ORC_CLAMP(var38.i,-1,1);
10247     /* 3: absw */
10248     var40.i = ORC_ABS(var38.i);
10249     /* 4: loadw */
10250     var35 = ptr4[i];
10251     /* 5: mullw */
10252     var41.i = (var40.i * var35.i) & 0xffff;
10253     /* 6: loadw */
10254     var36 = ptr5[i];
10255     /* 7: addw */
10256     var42.i = var41.i + var36.i;
10257     /* 8: shrsw */
10258     var43.i = var42.i >> 2;
10259     /* 9: mullw */
10260     var37.i = (var43.i * var39.i) & 0xffff;
10261     /* 10: storew */
10262     ptr0[i] = var37;
10263   }
10264
10265 }
10266
10267 #else
10268 static void
10269 _backup_orc_dequantise_var_s16_ip (OrcExecutor * ORC_RESTRICT ex)
10270 {
10271   int i;
10272   int n = ex->n;
10273   orc_union16 * ORC_RESTRICT ptr0;
10274   const orc_union16 * ORC_RESTRICT ptr4;
10275   const orc_union16 * ORC_RESTRICT ptr5;
10276   orc_union16 var34;
10277   orc_union16 var35;
10278   orc_union16 var36;
10279   orc_union16 var37;
10280   orc_union16 var38;
10281   orc_union16 var39;
10282   orc_union16 var40;
10283   orc_union16 var41;
10284   orc_union16 var42;
10285   orc_union16 var43;
10286
10287   ptr0 = (orc_union16 *)ex->arrays[0];
10288   ptr4 = (orc_union16 *)ex->arrays[4];
10289   ptr5 = (orc_union16 *)ex->arrays[5];
10290
10291
10292   for (i = 0; i < n; i++) {
10293     /* 0: loadw */
10294     var34 = ptr0[i];
10295     /* 1: copyw */
10296     var38.i = var34.i;
10297     /* 2: signw */
10298     var39.i = ORC_CLAMP(var38.i,-1,1);
10299     /* 3: absw */
10300     var40.i = ORC_ABS(var38.i);
10301     /* 4: loadw */
10302     var35 = ptr4[i];
10303     /* 5: mullw */
10304     var41.i = (var40.i * var35.i) & 0xffff;
10305     /* 6: loadw */
10306     var36 = ptr5[i];
10307     /* 7: addw */
10308     var42.i = var41.i + var36.i;
10309     /* 8: shrsw */
10310     var43.i = var42.i >> 2;
10311     /* 9: mullw */
10312     var37.i = (var43.i * var39.i) & 0xffff;
10313     /* 10: storew */
10314     ptr0[i] = var37;
10315   }
10316
10317 }
10318
10319 void
10320 orc_dequantise_var_s16_ip (int16_t * d1, const int16_t * s1, const int16_t * s2, int n)
10321 {
10322   OrcExecutor _ex, *ex = &_ex;
10323   static int p_inited = 0;
10324   static OrcProgram *p = 0;
10325   void (*func) (OrcExecutor *);
10326
10327   if (!p_inited) {
10328     orc_once_mutex_lock ();
10329     if (!p_inited) {
10330       OrcCompileResult result;
10331
10332       p = orc_program_new ();
10333       orc_program_set_name (p, "orc_dequantise_var_s16_ip");
10334       orc_program_set_backup_function (p, _backup_orc_dequantise_var_s16_ip);
10335       orc_program_add_destination (p, 2, "d1");
10336       orc_program_add_source (p, 2, "s1");
10337       orc_program_add_source (p, 2, "s2");
10338       orc_program_add_constant (p, 4, 0x00000002, "c1");
10339       orc_program_add_temporary (p, 2, "t1");
10340       orc_program_add_temporary (p, 2, "t2");
10341
10342       orc_program_append_2 (p, "copyw", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_D1);
10343       orc_program_append_2 (p, "signw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
10344       orc_program_append_2 (p, "absw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
10345       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1);
10346       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_D1);
10347       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
10348       orc_program_append_2 (p, "mullw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1);
10349
10350       result = orc_program_compile (p);
10351     }
10352     p_inited = TRUE;
10353     orc_once_mutex_unlock ();
10354   }
10355   ex->program = p;
10356
10357   ex->n = n;
10358   ex->arrays[ORC_VAR_D1] = d1;
10359   ex->arrays[ORC_VAR_S1] = (void *)s1;
10360   ex->arrays[ORC_VAR_S2] = (void *)s2;
10361
10362   func = p->code_exec;
10363   func (ex);
10364 }
10365 #endif
10366
10367
10368 /* orc_quantise1_s16 */
10369 #ifdef DISABLE_ORC
10370 void
10371 orc_quantise1_s16 (int16_t * d1, const int16_t * s1, int p1, int p2, int p3, int n){
10372   int i;
10373   orc_union16 * ORC_RESTRICT ptr0;
10374   const orc_union16 * ORC_RESTRICT ptr4;
10375   orc_union16 var34;
10376   orc_union16 var35;
10377   orc_union16 var36;
10378   orc_union16 var37;
10379   orc_union16 var38;
10380   orc_union16 var39;
10381   orc_union16 var40;
10382   orc_union16 var41;
10383   orc_union16 var42;
10384   orc_union16 var43;
10385   orc_union16 var44;
10386
10387   ptr0 = (orc_union16 *)d1;
10388   ptr4 = (orc_union16 *)s1;
10389
10390     /* 5: loadpw */
10391     var35.i = p2;
10392     /* 7: loadpw */
10393     var36.i = p1;
10394
10395   for (i = 0; i < n; i++) {
10396     /* 0: loadw */
10397     var34 = ptr4[i];
10398     /* 1: copyw */
10399     var38.i = var34.i;
10400     /* 2: signw */
10401     var39.i = ORC_CLAMP(var38.i,-1,1);
10402     /* 3: absw */
10403     var40.i = ORC_ABS(var38.i);
10404     /* 4: shlw */
10405     var41.i = var40.i << 2;
10406     /* 6: subw */
10407     var42.i = var41.i - var35.i;
10408     /* 8: mulhuw */
10409     var43.i = ((orc_uint32)((orc_uint16)var42.i) * (orc_uint32)((orc_uint16)var36.i)) >> 16;
10410     /* 9: shruw */
10411     var44.i = ((orc_uint16)var43.i) >> p3;
10412     /* 10: mullw */
10413     var37.i = (var44.i * var39.i) & 0xffff;
10414     /* 11: storew */
10415     ptr0[i] = var37;
10416   }
10417
10418 }
10419
10420 #else
10421 static void
10422 _backup_orc_quantise1_s16 (OrcExecutor * ORC_RESTRICT ex)
10423 {
10424   int i;
10425   int n = ex->n;
10426   orc_union16 * ORC_RESTRICT ptr0;
10427   const orc_union16 * ORC_RESTRICT ptr4;
10428   orc_union16 var34;
10429   orc_union16 var35;
10430   orc_union16 var36;
10431   orc_union16 var37;
10432   orc_union16 var38;
10433   orc_union16 var39;
10434   orc_union16 var40;
10435   orc_union16 var41;
10436   orc_union16 var42;
10437   orc_union16 var43;
10438   orc_union16 var44;
10439
10440   ptr0 = (orc_union16 *)ex->arrays[0];
10441   ptr4 = (orc_union16 *)ex->arrays[4];
10442
10443     /* 5: loadpw */
10444     var35.i = ex->params[25];
10445     /* 7: loadpw */
10446     var36.i = ex->params[24];
10447
10448   for (i = 0; i < n; i++) {
10449     /* 0: loadw */
10450     var34 = ptr4[i];
10451     /* 1: copyw */
10452     var38.i = var34.i;
10453     /* 2: signw */
10454     var39.i = ORC_CLAMP(var38.i,-1,1);
10455     /* 3: absw */
10456     var40.i = ORC_ABS(var38.i);
10457     /* 4: shlw */
10458     var41.i = var40.i << 2;
10459     /* 6: subw */
10460     var42.i = var41.i - var35.i;
10461     /* 8: mulhuw */
10462     var43.i = ((orc_uint32)((orc_uint16)var42.i) * (orc_uint32)((orc_uint16)var36.i)) >> 16;
10463     /* 9: shruw */
10464     var44.i = ((orc_uint16)var43.i) >> ex->params[26];
10465     /* 10: mullw */
10466     var37.i = (var44.i * var39.i) & 0xffff;
10467     /* 11: storew */
10468     ptr0[i] = var37;
10469   }
10470
10471 }
10472
10473 void
10474 orc_quantise1_s16 (int16_t * d1, const int16_t * s1, int p1, int p2, int p3, int n)
10475 {
10476   OrcExecutor _ex, *ex = &_ex;
10477   static int p_inited = 0;
10478   static OrcProgram *p = 0;
10479   void (*func) (OrcExecutor *);
10480
10481   if (!p_inited) {
10482     orc_once_mutex_lock ();
10483     if (!p_inited) {
10484       OrcCompileResult result;
10485
10486       p = orc_program_new ();
10487       orc_program_set_name (p, "orc_quantise1_s16");
10488       orc_program_set_backup_function (p, _backup_orc_quantise1_s16);
10489       orc_program_add_destination (p, 2, "d1");
10490       orc_program_add_source (p, 2, "s1");
10491       orc_program_add_constant (p, 4, 0x00000002, "c1");
10492       orc_program_add_parameter (p, 2, "p1");
10493       orc_program_add_parameter (p, 2, "p2");
10494       orc_program_add_parameter (p, 2, "p3");
10495       orc_program_add_temporary (p, 2, "t1");
10496       orc_program_add_temporary (p, 2, "t2");
10497
10498       orc_program_append_2 (p, "copyw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
10499       orc_program_append_2 (p, "signw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
10500       orc_program_append_2 (p, "absw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
10501       orc_program_append_2 (p, "shlw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
10502       orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P2, ORC_VAR_D1);
10503       orc_program_append_2 (p, "mulhuw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1);
10504       orc_program_append_2 (p, "shruw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P3, ORC_VAR_D1);
10505       orc_program_append_2 (p, "mullw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1);
10506
10507       result = orc_program_compile (p);
10508     }
10509     p_inited = TRUE;
10510     orc_once_mutex_unlock ();
10511   }
10512   ex->program = p;
10513
10514   ex->n = n;
10515   ex->arrays[ORC_VAR_D1] = d1;
10516   ex->arrays[ORC_VAR_S1] = (void *)s1;
10517   ex->params[ORC_VAR_P1] = p1;
10518   ex->params[ORC_VAR_P2] = p2;
10519   ex->params[ORC_VAR_P3] = p3;
10520
10521   func = p->code_exec;
10522   func (ex);
10523 }
10524 #endif
10525
10526
10527 /* orc_quantise2_s16 */
10528 #ifdef DISABLE_ORC
10529 void
10530 orc_quantise2_s16 (int16_t * d1, const int16_t * s1, int p1, int p2, int n){
10531   int i;
10532   orc_union16 * ORC_RESTRICT ptr0;
10533   const orc_union16 * ORC_RESTRICT ptr4;
10534   orc_union16 var34;
10535   orc_union16 var35;
10536   orc_union16 var36;
10537   orc_union16 var37;
10538   orc_union16 var38;
10539   orc_union16 var39;
10540   orc_union16 var40;
10541   orc_union16 var41;
10542   orc_union16 var42;
10543
10544   ptr0 = (orc_union16 *)d1;
10545   ptr4 = (orc_union16 *)s1;
10546
10547     /* 5: loadpw */
10548     var35.i = p2;
10549
10550   for (i = 0; i < n; i++) {
10551     /* 0: loadw */
10552     var34 = ptr4[i];
10553     /* 1: copyw */
10554     var37.i = var34.i;
10555     /* 2: signw */
10556     var38.i = ORC_CLAMP(var37.i,-1,1);
10557     /* 3: absw */
10558     var39.i = ORC_ABS(var37.i);
10559     /* 4: shlw */
10560     var40.i = var39.i << 2;
10561     /* 6: subw */
10562     var41.i = var40.i - var35.i;
10563     /* 7: shruw */
10564     var42.i = ((orc_uint16)var41.i) >> p1;
10565     /* 8: mullw */
10566     var36.i = (var42.i * var38.i) & 0xffff;
10567     /* 9: storew */
10568     ptr0[i] = var36;
10569   }
10570
10571 }
10572
10573 #else
10574 static void
10575 _backup_orc_quantise2_s16 (OrcExecutor * ORC_RESTRICT ex)
10576 {
10577   int i;
10578   int n = ex->n;
10579   orc_union16 * ORC_RESTRICT ptr0;
10580   const orc_union16 * ORC_RESTRICT ptr4;
10581   orc_union16 var34;
10582   orc_union16 var35;
10583   orc_union16 var36;
10584   orc_union16 var37;
10585   orc_union16 var38;
10586   orc_union16 var39;
10587   orc_union16 var40;
10588   orc_union16 var41;
10589   orc_union16 var42;
10590
10591   ptr0 = (orc_union16 *)ex->arrays[0];
10592   ptr4 = (orc_union16 *)ex->arrays[4];
10593
10594     /* 5: loadpw */
10595     var35.i = ex->params[25];
10596
10597   for (i = 0; i < n; i++) {
10598     /* 0: loadw */
10599     var34 = ptr4[i];
10600     /* 1: copyw */
10601     var37.i = var34.i;
10602     /* 2: signw */
10603     var38.i = ORC_CLAMP(var37.i,-1,1);
10604     /* 3: absw */
10605     var39.i = ORC_ABS(var37.i);
10606     /* 4: shlw */
10607     var40.i = var39.i << 2;
10608     /* 6: subw */
10609     var41.i = var40.i - var35.i;
10610     /* 7: shruw */
10611     var42.i = ((orc_uint16)var41.i) >> ex->params[24];
10612     /* 8: mullw */
10613     var36.i = (var42.i * var38.i) & 0xffff;
10614     /* 9: storew */
10615     ptr0[i] = var36;
10616   }
10617
10618 }
10619
10620 void
10621 orc_quantise2_s16 (int16_t * d1, const int16_t * s1, int p1, int p2, int n)
10622 {
10623   OrcExecutor _ex, *ex = &_ex;
10624   static int p_inited = 0;
10625   static OrcProgram *p = 0;
10626   void (*func) (OrcExecutor *);
10627
10628   if (!p_inited) {
10629     orc_once_mutex_lock ();
10630     if (!p_inited) {
10631       OrcCompileResult result;
10632
10633       p = orc_program_new ();
10634       orc_program_set_name (p, "orc_quantise2_s16");
10635       orc_program_set_backup_function (p, _backup_orc_quantise2_s16);
10636       orc_program_add_destination (p, 2, "d1");
10637       orc_program_add_source (p, 2, "s1");
10638       orc_program_add_constant (p, 4, 0x00000002, "c1");
10639       orc_program_add_parameter (p, 2, "p1");
10640       orc_program_add_parameter (p, 2, "p2");
10641       orc_program_add_temporary (p, 2, "t1");
10642       orc_program_add_temporary (p, 2, "t2");
10643
10644       orc_program_append_2 (p, "copyw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
10645       orc_program_append_2 (p, "signw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
10646       orc_program_append_2 (p, "absw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
10647       orc_program_append_2 (p, "shlw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
10648       orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P2, ORC_VAR_D1);
10649       orc_program_append_2 (p, "shruw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1);
10650       orc_program_append_2 (p, "mullw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1);
10651
10652       result = orc_program_compile (p);
10653     }
10654     p_inited = TRUE;
10655     orc_once_mutex_unlock ();
10656   }
10657   ex->program = p;
10658
10659   ex->n = n;
10660   ex->arrays[ORC_VAR_D1] = d1;
10661   ex->arrays[ORC_VAR_S1] = (void *)s1;
10662   ex->params[ORC_VAR_P1] = p1;
10663   ex->params[ORC_VAR_P2] = p2;
10664
10665   func = p->code_exec;
10666   func (ex);
10667 }
10668 #endif
10669
10670
10671 /* orc_quantdequant1_s16 */
10672 #ifdef DISABLE_ORC
10673 void
10674 orc_quantdequant1_s16 (int16_t * d1, int16_t * d2, int p1, int p2, int p3, int p4, int p5, int n){
10675   int i;
10676   orc_union16 * ORC_RESTRICT ptr0;
10677   orc_union16 * ORC_RESTRICT ptr1;
10678   orc_union16 var34;
10679   orc_union16 var35;
10680   orc_union16 var36;
10681   orc_union16 var37;
10682   orc_union16 var38;
10683   orc_union16 var39;
10684   orc_union16 var40;
10685   orc_union16 var41;
10686   orc_union16 var42;
10687   orc_union16 var43;
10688   orc_union16 var44;
10689   orc_union16 var45;
10690   orc_union16 var46;
10691   orc_union16 var47;
10692   orc_union16 var48;
10693   orc_union16 var49;
10694   orc_union16 var50;
10695   orc_union16 var51;
10696   orc_union16 var52;
10697
10698   ptr0 = (orc_union16 *)d1;
10699   ptr1 = (orc_union16 *)d2;
10700
10701     /* 5: loadpw */
10702     var35.i = p2;
10703     /* 7: loadpw */
10704     var36.i = p1;
10705     /* 14: loadpw */
10706     var38.i = p4;
10707     /* 16: loadpw */
10708     var39.i = p5;
10709
10710   for (i = 0; i < n; i++) {
10711     /* 0: loadw */
10712     var34 = ptr1[i];
10713     /* 1: copyw */
10714     var41.i = var34.i;
10715     /* 2: signw */
10716     var42.i = ORC_CLAMP(var41.i,-1,1);
10717     /* 3: absw */
10718     var43.i = ORC_ABS(var41.i);
10719     /* 4: shlw */
10720     var44.i = var43.i << 2;
10721     /* 6: subw */
10722     var45.i = var44.i - var35.i;
10723     /* 8: mulhuw */
10724     var46.i = ((orc_uint32)((orc_uint16)var45.i) * (orc_uint32)((orc_uint16)var36.i)) >> 16;
10725     /* 9: shruw */
10726     var47.i = ((orc_uint16)var46.i) >> p3;
10727     /* 10: mullw */
10728     var48.i = (var47.i * var42.i) & 0xffff;
10729     /* 11: copyw */
10730     var37.i = var48.i;
10731     /* 12: storew */
10732     ptr0[i] = var37;
10733     /* 13: signw */
10734     var49.i = ORC_CLAMP(var48.i,-1,1);
10735     /* 15: mullw */
10736     var50.i = (var47.i * var38.i) & 0xffff;
10737     /* 17: addw */
10738     var51.i = var50.i + var39.i;
10739     /* 18: shrsw */
10740     var52.i = var51.i >> 2;
10741     /* 19: mullw */
10742     var40.i = (var52.i * var49.i) & 0xffff;
10743     /* 20: storew */
10744     ptr1[i] = var40;
10745   }
10746
10747 }
10748
10749 #else
10750 static void
10751 _backup_orc_quantdequant1_s16 (OrcExecutor * ORC_RESTRICT ex)
10752 {
10753   int i;
10754   int n = ex->n;
10755   orc_union16 * ORC_RESTRICT ptr0;
10756   orc_union16 * ORC_RESTRICT ptr1;
10757   orc_union16 var34;
10758   orc_union16 var35;
10759   orc_union16 var36;
10760   orc_union16 var37;
10761   orc_union16 var38;
10762   orc_union16 var39;
10763   orc_union16 var40;
10764   orc_union16 var41;
10765   orc_union16 var42;
10766   orc_union16 var43;
10767   orc_union16 var44;
10768   orc_union16 var45;
10769   orc_union16 var46;
10770   orc_union16 var47;
10771   orc_union16 var48;
10772   orc_union16 var49;
10773   orc_union16 var50;
10774   orc_union16 var51;
10775   orc_union16 var52;
10776
10777   ptr0 = (orc_union16 *)ex->arrays[0];
10778   ptr1 = (orc_union16 *)ex->arrays[1];
10779
10780     /* 5: loadpw */
10781     var35.i = ex->params[25];
10782     /* 7: loadpw */
10783     var36.i = ex->params[24];
10784     /* 14: loadpw */
10785     var38.i = ex->params[27];
10786     /* 16: loadpw */
10787     var39.i = ex->params[28];
10788
10789   for (i = 0; i < n; i++) {
10790     /* 0: loadw */
10791     var34 = ptr1[i];
10792     /* 1: copyw */
10793     var41.i = var34.i;
10794     /* 2: signw */
10795     var42.i = ORC_CLAMP(var41.i,-1,1);
10796     /* 3: absw */
10797     var43.i = ORC_ABS(var41.i);
10798     /* 4: shlw */
10799     var44.i = var43.i << 2;
10800     /* 6: subw */
10801     var45.i = var44.i - var35.i;
10802     /* 8: mulhuw */
10803     var46.i = ((orc_uint32)((orc_uint16)var45.i) * (orc_uint32)((orc_uint16)var36.i)) >> 16;
10804     /* 9: shruw */
10805     var47.i = ((orc_uint16)var46.i) >> ex->params[26];
10806     /* 10: mullw */
10807     var48.i = (var47.i * var42.i) & 0xffff;
10808     /* 11: copyw */
10809     var37.i = var48.i;
10810     /* 12: storew */
10811     ptr0[i] = var37;
10812     /* 13: signw */
10813     var49.i = ORC_CLAMP(var48.i,-1,1);
10814     /* 15: mullw */
10815     var50.i = (var47.i * var38.i) & 0xffff;
10816     /* 17: addw */
10817     var51.i = var50.i + var39.i;
10818     /* 18: shrsw */
10819     var52.i = var51.i >> 2;
10820     /* 19: mullw */
10821     var40.i = (var52.i * var49.i) & 0xffff;
10822     /* 20: storew */
10823     ptr1[i] = var40;
10824   }
10825
10826 }
10827
10828 void
10829 orc_quantdequant1_s16 (int16_t * d1, int16_t * d2, int p1, int p2, int p3, int p4, int p5, int n)
10830 {
10831   OrcExecutor _ex, *ex = &_ex;
10832   static int p_inited = 0;
10833   static OrcProgram *p = 0;
10834   void (*func) (OrcExecutor *);
10835
10836   if (!p_inited) {
10837     orc_once_mutex_lock ();
10838     if (!p_inited) {
10839       OrcCompileResult result;
10840
10841       p = orc_program_new ();
10842       orc_program_set_name (p, "orc_quantdequant1_s16");
10843       orc_program_set_backup_function (p, _backup_orc_quantdequant1_s16);
10844       orc_program_add_destination (p, 2, "d1");
10845       orc_program_add_destination (p, 2, "d2");
10846       orc_program_add_constant (p, 4, 0x00000002, "c1");
10847       orc_program_add_parameter (p, 2, "p1");
10848       orc_program_add_parameter (p, 2, "p2");
10849       orc_program_add_parameter (p, 2, "p3");
10850       orc_program_add_parameter (p, 2, "p4");
10851       orc_program_add_parameter (p, 2, "p5");
10852       orc_program_add_temporary (p, 2, "t1");
10853       orc_program_add_temporary (p, 2, "t2");
10854
10855       orc_program_append_2 (p, "copyw", 0, ORC_VAR_T1, ORC_VAR_D2, ORC_VAR_D1, ORC_VAR_D1);
10856       orc_program_append_2 (p, "signw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
10857       orc_program_append_2 (p, "absw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
10858       orc_program_append_2 (p, "shlw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
10859       orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P2, ORC_VAR_D1);
10860       orc_program_append_2 (p, "mulhuw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1);
10861       orc_program_append_2 (p, "shruw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P3, ORC_VAR_D1);
10862       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1);
10863       orc_program_append_2 (p, "copyw", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
10864       orc_program_append_2 (p, "signw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
10865       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P4, ORC_VAR_D1);
10866       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P5, ORC_VAR_D1);
10867       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
10868       orc_program_append_2 (p, "mullw", 0, ORC_VAR_D2, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1);
10869
10870       result = orc_program_compile (p);
10871     }
10872     p_inited = TRUE;
10873     orc_once_mutex_unlock ();
10874   }
10875   ex->program = p;
10876
10877   ex->n = n;
10878   ex->arrays[ORC_VAR_D1] = d1;
10879   ex->arrays[ORC_VAR_D2] = d2;
10880   ex->params[ORC_VAR_P1] = p1;
10881   ex->params[ORC_VAR_P2] = p2;
10882   ex->params[ORC_VAR_P3] = p3;
10883   ex->params[ORC_VAR_P4] = p4;
10884   ex->params[ORC_VAR_P5] = p5;
10885
10886   func = p->code_exec;
10887   func (ex);
10888 }
10889 #endif
10890
10891
10892 /* orc_quantdequant3_s16 */
10893 #ifdef DISABLE_ORC
10894 void
10895 orc_quantdequant3_s16 (int16_t * d1, int16_t * d2, int p1, int p2, int p3, int p4, int p5, int p6, int n){
10896   int i;
10897   orc_union16 * ORC_RESTRICT ptr0;
10898   orc_union16 * ORC_RESTRICT ptr1;
10899   orc_union16 var35;
10900   orc_union16 var36;
10901   orc_union16 var37;
10902   orc_union32 var38;
10903   orc_union16 var39;
10904   orc_union16 var40;
10905   orc_union16 var41;
10906   orc_union16 var42;
10907   orc_union16 var43;
10908   orc_union16 var44;
10909   orc_union16 var45;
10910   orc_union16 var46;
10911   orc_union16 var47;
10912   orc_union32 var48;
10913   orc_union32 var49;
10914   orc_union32 var50;
10915   orc_union16 var51;
10916   orc_union16 var52;
10917   orc_union16 var53;
10918   orc_union16 var54;
10919   orc_union16 var55;
10920   orc_union16 var56;
10921
10922   ptr0 = (orc_union16 *)d1;
10923   ptr1 = (orc_union16 *)d2;
10924
10925     /* 5: loadpw */
10926     var36.i = p2;
10927     /* 7: loadpw */
10928     var37.i = p1;
10929     /* 9: loadpl */
10930     var38.i = p6;
10931     /* 17: loadpw */
10932     var40.i = p4;
10933     /* 19: loadpw */
10934     var41.i = p5;
10935
10936   for (i = 0; i < n; i++) {
10937     /* 0: loadw */
10938     var35 = ptr1[i];
10939     /* 1: copyw */
10940     var43.i = var35.i;
10941     /* 2: signw */
10942     var44.i = ORC_CLAMP(var43.i,-1,1);
10943     /* 3: absw */
10944     var45.i = ORC_ABS(var43.i);
10945     /* 4: shlw */
10946     var46.i = var45.i << 2;
10947     /* 6: subw */
10948     var47.i = var46.i - var36.i;
10949     /* 8: muluwl */
10950     var48.i = ((orc_uint16)var47.i) * ((orc_uint16)var37.i);
10951     /* 10: addl */
10952     var49.i = var48.i + var38.i;
10953     /* 11: shrul */
10954     var50.i = ((orc_uint32)var49.i) >> p3;
10955     /* 12: convlw */
10956     var51.i = var50.i;
10957     /* 13: mullw */
10958     var52.i = (var51.i * var44.i) & 0xffff;
10959     /* 14: copyw */
10960     var39.i = var52.i;
10961     /* 15: storew */
10962     ptr0[i] = var39;
10963     /* 16: signw */
10964     var53.i = ORC_CLAMP(var52.i,-1,1);
10965     /* 18: mullw */
10966     var54.i = (var51.i * var40.i) & 0xffff;
10967     /* 20: addw */
10968     var55.i = var54.i + var41.i;
10969     /* 21: shrsw */
10970     var56.i = var55.i >> 2;
10971     /* 22: mullw */
10972     var42.i = (var56.i * var53.i) & 0xffff;
10973     /* 23: storew */
10974     ptr1[i] = var42;
10975   }
10976
10977 }
10978
10979 #else
10980 static void
10981 _backup_orc_quantdequant3_s16 (OrcExecutor * ORC_RESTRICT ex)
10982 {
10983   int i;
10984   int n = ex->n;
10985   orc_union16 * ORC_RESTRICT ptr0;
10986   orc_union16 * ORC_RESTRICT ptr1;
10987   orc_union16 var35;
10988   orc_union16 var36;
10989   orc_union16 var37;
10990   orc_union32 var38;
10991   orc_union16 var39;
10992   orc_union16 var40;
10993   orc_union16 var41;
10994   orc_union16 var42;
10995   orc_union16 var43;
10996   orc_union16 var44;
10997   orc_union16 var45;
10998   orc_union16 var46;
10999   orc_union16 var47;
11000   orc_union32 var48;
11001   orc_union32 var49;
11002   orc_union32 var50;
11003   orc_union16 var51;
11004   orc_union16 var52;
11005   orc_union16 var53;
11006   orc_union16 var54;
11007   orc_union16 var55;
11008   orc_union16 var56;
11009
11010   ptr0 = (orc_union16 *)ex->arrays[0];
11011   ptr1 = (orc_union16 *)ex->arrays[1];
11012
11013     /* 5: loadpw */
11014     var36.i = ex->params[25];
11015     /* 7: loadpw */
11016     var37.i = ex->params[24];
11017     /* 9: loadpl */
11018     var38.i = ex->params[29];
11019     /* 17: loadpw */
11020     var40.i = ex->params[27];
11021     /* 19: loadpw */
11022     var41.i = ex->params[28];
11023
11024   for (i = 0; i < n; i++) {
11025     /* 0: loadw */
11026     var35 = ptr1[i];
11027     /* 1: copyw */
11028     var43.i = var35.i;
11029     /* 2: signw */
11030     var44.i = ORC_CLAMP(var43.i,-1,1);
11031     /* 3: absw */
11032     var45.i = ORC_ABS(var43.i);
11033     /* 4: shlw */
11034     var46.i = var45.i << 2;
11035     /* 6: subw */
11036     var47.i = var46.i - var36.i;
11037     /* 8: muluwl */
11038     var48.i = ((orc_uint16)var47.i) * ((orc_uint16)var37.i);
11039     /* 10: addl */
11040     var49.i = var48.i + var38.i;
11041     /* 11: shrul */
11042     var50.i = ((orc_uint32)var49.i) >> ex->params[26];
11043     /* 12: convlw */
11044     var51.i = var50.i;
11045     /* 13: mullw */
11046     var52.i = (var51.i * var44.i) & 0xffff;
11047     /* 14: copyw */
11048     var39.i = var52.i;
11049     /* 15: storew */
11050     ptr0[i] = var39;
11051     /* 16: signw */
11052     var53.i = ORC_CLAMP(var52.i,-1,1);
11053     /* 18: mullw */
11054     var54.i = (var51.i * var40.i) & 0xffff;
11055     /* 20: addw */
11056     var55.i = var54.i + var41.i;
11057     /* 21: shrsw */
11058     var56.i = var55.i >> 2;
11059     /* 22: mullw */
11060     var42.i = (var56.i * var53.i) & 0xffff;
11061     /* 23: storew */
11062     ptr1[i] = var42;
11063   }
11064
11065 }
11066
11067 void
11068 orc_quantdequant3_s16 (int16_t * d1, int16_t * d2, int p1, int p2, int p3, int p4, int p5, int p6, int n)
11069 {
11070   OrcExecutor _ex, *ex = &_ex;
11071   static int p_inited = 0;
11072   static OrcProgram *p = 0;
11073   void (*func) (OrcExecutor *);
11074
11075   if (!p_inited) {
11076     orc_once_mutex_lock ();
11077     if (!p_inited) {
11078       OrcCompileResult result;
11079
11080       p = orc_program_new ();
11081       orc_program_set_name (p, "orc_quantdequant3_s16");
11082       orc_program_set_backup_function (p, _backup_orc_quantdequant3_s16);
11083       orc_program_add_destination (p, 2, "d1");
11084       orc_program_add_destination (p, 2, "d2");
11085       orc_program_add_constant (p, 4, 0x00000002, "c1");
11086       orc_program_add_parameter (p, 2, "p1");
11087       orc_program_add_parameter (p, 2, "p2");
11088       orc_program_add_parameter (p, 2, "p3");
11089       orc_program_add_parameter (p, 2, "p4");
11090       orc_program_add_parameter (p, 2, "p5");
11091       orc_program_add_parameter (p, 4, "p6");
11092       orc_program_add_temporary (p, 2, "t1");
11093       orc_program_add_temporary (p, 2, "t2");
11094       orc_program_add_temporary (p, 4, "t3");
11095
11096       orc_program_append_2 (p, "copyw", 0, ORC_VAR_T1, ORC_VAR_D2, ORC_VAR_D1, ORC_VAR_D1);
11097       orc_program_append_2 (p, "signw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
11098       orc_program_append_2 (p, "absw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
11099       orc_program_append_2 (p, "shlw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
11100       orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P2, ORC_VAR_D1);
11101       orc_program_append_2 (p, "muluwl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1);
11102       orc_program_append_2 (p, "addl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_P6, ORC_VAR_D1);
11103       orc_program_append_2 (p, "shrul", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_P3, ORC_VAR_D1);
11104       orc_program_append_2 (p, "convlw", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_D1, ORC_VAR_D1);
11105       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1);
11106       orc_program_append_2 (p, "copyw", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
11107       orc_program_append_2 (p, "signw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
11108       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P4, ORC_VAR_D1);
11109       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P5, ORC_VAR_D1);
11110       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
11111       orc_program_append_2 (p, "mullw", 0, ORC_VAR_D2, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1);
11112
11113       result = orc_program_compile (p);
11114     }
11115     p_inited = TRUE;
11116     orc_once_mutex_unlock ();
11117   }
11118   ex->program = p;
11119
11120   ex->n = n;
11121   ex->arrays[ORC_VAR_D1] = d1;
11122   ex->arrays[ORC_VAR_D2] = d2;
11123   ex->params[ORC_VAR_P1] = p1;
11124   ex->params[ORC_VAR_P2] = p2;
11125   ex->params[ORC_VAR_P3] = p3;
11126   ex->params[ORC_VAR_P4] = p4;
11127   ex->params[ORC_VAR_P5] = p5;
11128   ex->params[ORC_VAR_P6] = p6;
11129
11130   func = p->code_exec;
11131   func (ex);
11132 }
11133 #endif
11134
11135
11136 /* orc_quantdequant2_s16 */
11137 #ifdef DISABLE_ORC
11138 void
11139 orc_quantdequant2_s16 (int16_t * d1, int16_t * d2, int p1, int p2, int p3, int p4, int n){
11140   int i;
11141   orc_union16 * ORC_RESTRICT ptr0;
11142   orc_union16 * ORC_RESTRICT ptr1;
11143   orc_union16 var34;
11144   orc_union16 var35;
11145   orc_union16 var36;
11146   orc_union16 var37;
11147   orc_union16 var38;
11148   orc_union16 var39;
11149   orc_union16 var40;
11150   orc_union16 var41;
11151   orc_union16 var42;
11152   orc_union16 var43;
11153   orc_union16 var44;
11154   orc_union16 var45;
11155   orc_union16 var46;
11156   orc_union16 var47;
11157   orc_union16 var48;
11158   orc_union16 var49;
11159   orc_union16 var50;
11160
11161   ptr0 = (orc_union16 *)d1;
11162   ptr1 = (orc_union16 *)d2;
11163
11164     /* 5: loadpw */
11165     var35.i = p2;
11166     /* 12: loadpw */
11167     var37.i = p3;
11168     /* 14: loadpw */
11169     var38.i = p4;
11170
11171   for (i = 0; i < n; i++) {
11172     /* 0: loadw */
11173     var34 = ptr1[i];
11174     /* 1: copyw */
11175     var40.i = var34.i;
11176     /* 2: signw */
11177     var41.i = ORC_CLAMP(var40.i,-1,1);
11178     /* 3: absw */
11179     var42.i = ORC_ABS(var40.i);
11180     /* 4: shlw */
11181     var43.i = var42.i << 2;
11182     /* 6: subw */
11183     var44.i = var43.i - var35.i;
11184     /* 7: shruw */
11185     var45.i = ((orc_uint16)var44.i) >> p1;
11186     /* 8: mullw */
11187     var46.i = (var45.i * var41.i) & 0xffff;
11188     /* 9: copyw */
11189     var36.i = var46.i;
11190     /* 10: storew */
11191     ptr0[i] = var36;
11192     /* 11: signw */
11193     var47.i = ORC_CLAMP(var46.i,-1,1);
11194     /* 13: mullw */
11195     var48.i = (var45.i * var37.i) & 0xffff;
11196     /* 15: addw */
11197     var49.i = var48.i + var38.i;
11198     /* 16: shrsw */
11199     var50.i = var49.i >> 2;
11200     /* 17: mullw */
11201     var39.i = (var50.i * var47.i) & 0xffff;
11202     /* 18: storew */
11203     ptr1[i] = var39;
11204   }
11205
11206 }
11207
11208 #else
11209 static void
11210 _backup_orc_quantdequant2_s16 (OrcExecutor * ORC_RESTRICT ex)
11211 {
11212   int i;
11213   int n = ex->n;
11214   orc_union16 * ORC_RESTRICT ptr0;
11215   orc_union16 * ORC_RESTRICT ptr1;
11216   orc_union16 var34;
11217   orc_union16 var35;
11218   orc_union16 var36;
11219   orc_union16 var37;
11220   orc_union16 var38;
11221   orc_union16 var39;
11222   orc_union16 var40;
11223   orc_union16 var41;
11224   orc_union16 var42;
11225   orc_union16 var43;
11226   orc_union16 var44;
11227   orc_union16 var45;
11228   orc_union16 var46;
11229   orc_union16 var47;
11230   orc_union16 var48;
11231   orc_union16 var49;
11232   orc_union16 var50;
11233
11234   ptr0 = (orc_union16 *)ex->arrays[0];
11235   ptr1 = (orc_union16 *)ex->arrays[1];
11236
11237     /* 5: loadpw */
11238     var35.i = ex->params[25];
11239     /* 12: loadpw */
11240     var37.i = ex->params[26];
11241     /* 14: loadpw */
11242     var38.i = ex->params[27];
11243
11244   for (i = 0; i < n; i++) {
11245     /* 0: loadw */
11246     var34 = ptr1[i];
11247     /* 1: copyw */
11248     var40.i = var34.i;
11249     /* 2: signw */
11250     var41.i = ORC_CLAMP(var40.i,-1,1);
11251     /* 3: absw */
11252     var42.i = ORC_ABS(var40.i);
11253     /* 4: shlw */
11254     var43.i = var42.i << 2;
11255     /* 6: subw */
11256     var44.i = var43.i - var35.i;
11257     /* 7: shruw */
11258     var45.i = ((orc_uint16)var44.i) >> ex->params[24];
11259     /* 8: mullw */
11260     var46.i = (var45.i * var41.i) & 0xffff;
11261     /* 9: copyw */
11262     var36.i = var46.i;
11263     /* 10: storew */
11264     ptr0[i] = var36;
11265     /* 11: signw */
11266     var47.i = ORC_CLAMP(var46.i,-1,1);
11267     /* 13: mullw */
11268     var48.i = (var45.i * var37.i) & 0xffff;
11269     /* 15: addw */
11270     var49.i = var48.i + var38.i;
11271     /* 16: shrsw */
11272     var50.i = var49.i >> 2;
11273     /* 17: mullw */
11274     var39.i = (var50.i * var47.i) & 0xffff;
11275     /* 18: storew */
11276     ptr1[i] = var39;
11277   }
11278
11279 }
11280
11281 void
11282 orc_quantdequant2_s16 (int16_t * d1, int16_t * d2, int p1, int p2, int p3, int p4, int n)
11283 {
11284   OrcExecutor _ex, *ex = &_ex;
11285   static int p_inited = 0;
11286   static OrcProgram *p = 0;
11287   void (*func) (OrcExecutor *);
11288
11289   if (!p_inited) {
11290     orc_once_mutex_lock ();
11291     if (!p_inited) {
11292       OrcCompileResult result;
11293
11294       p = orc_program_new ();
11295       orc_program_set_name (p, "orc_quantdequant2_s16");
11296       orc_program_set_backup_function (p, _backup_orc_quantdequant2_s16);
11297       orc_program_add_destination (p, 2, "d1");
11298       orc_program_add_destination (p, 2, "d2");
11299       orc_program_add_constant (p, 4, 0x00000002, "c1");
11300       orc_program_add_parameter (p, 2, "p1");
11301       orc_program_add_parameter (p, 2, "p2");
11302       orc_program_add_parameter (p, 2, "p3");
11303       orc_program_add_parameter (p, 2, "p4");
11304       orc_program_add_temporary (p, 2, "t1");
11305       orc_program_add_temporary (p, 2, "t2");
11306
11307       orc_program_append_2 (p, "copyw", 0, ORC_VAR_T1, ORC_VAR_D2, ORC_VAR_D1, ORC_VAR_D1);
11308       orc_program_append_2 (p, "signw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
11309       orc_program_append_2 (p, "absw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
11310       orc_program_append_2 (p, "shlw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
11311       orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P2, ORC_VAR_D1);
11312       orc_program_append_2 (p, "shruw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1);
11313       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1);
11314       orc_program_append_2 (p, "copyw", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
11315       orc_program_append_2 (p, "signw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
11316       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P3, ORC_VAR_D1);
11317       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P4, ORC_VAR_D1);
11318       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
11319       orc_program_append_2 (p, "mullw", 0, ORC_VAR_D2, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1);
11320
11321       result = orc_program_compile (p);
11322     }
11323     p_inited = TRUE;
11324     orc_once_mutex_unlock ();
11325   }
11326   ex->program = p;
11327
11328   ex->n = n;
11329   ex->arrays[ORC_VAR_D1] = d1;
11330   ex->arrays[ORC_VAR_D2] = d2;
11331   ex->params[ORC_VAR_P1] = p1;
11332   ex->params[ORC_VAR_P2] = p2;
11333   ex->params[ORC_VAR_P3] = p3;
11334   ex->params[ORC_VAR_P4] = p4;
11335
11336   func = p->code_exec;
11337   func (ex);
11338 }
11339 #endif
11340
11341
11342 /* orc_downsample_vert_u8 */
11343 #ifdef DISABLE_ORC
11344 void
11345 orc_downsample_vert_u8 (orc_uint8 * d1, const orc_uint8 * s1, const orc_uint8 * s2, const orc_uint8 * s3, const orc_uint8 * s4, int n){
11346   int i;
11347   orc_int8 * ORC_RESTRICT ptr0;
11348   const orc_int8 * ORC_RESTRICT ptr4;
11349   const orc_int8 * ORC_RESTRICT ptr5;
11350   const orc_int8 * ORC_RESTRICT ptr6;
11351   const orc_int8 * ORC_RESTRICT ptr7;
11352   orc_int8 var35;
11353   orc_int8 var36;
11354   orc_union16 var37;
11355   orc_int8 var38;
11356   orc_int8 var39;
11357   orc_union16 var40;
11358   orc_union16 var41;
11359   orc_int8 var42;
11360   orc_union16 var43;
11361   orc_union16 var44;
11362   orc_union16 var45;
11363   orc_union16 var46;
11364   orc_union16 var47;
11365   orc_union16 var48;
11366   orc_union16 var49;
11367   orc_union16 var50;
11368   orc_union16 var51;
11369   orc_union16 var52;
11370   orc_union16 var53;
11371
11372   ptr0 = (orc_int8 *)d1;
11373   ptr4 = (orc_int8 *)s1;
11374   ptr5 = (orc_int8 *)s2;
11375   ptr6 = (orc_int8 *)s3;
11376   ptr7 = (orc_int8 *)s4;
11377
11378     /* 5: loadpw */
11379     var37.i = 0x00000006; /* 6 or 2.96439e-323f */
11380     /* 12: loadpw */
11381     var40.i = 0x0000001a; /* 26 or 1.28457e-322f */
11382     /* 15: loadpw */
11383     var41.i = 0x00000020; /* 32 or 1.58101e-322f */
11384
11385   for (i = 0; i < n; i++) {
11386     /* 0: loadb */
11387     var35 = ptr4[i];
11388     /* 1: convubw */
11389     var43.i = (orc_uint8)var35;
11390     /* 2: loadb */
11391     var36 = ptr7[i];
11392     /* 3: convubw */
11393     var44.i = (orc_uint8)var36;
11394     /* 4: addw */
11395     var45.i = var43.i + var44.i;
11396     /* 6: mullw */
11397     var46.i = (var45.i * var37.i) & 0xffff;
11398     /* 7: loadb */
11399     var38 = ptr5[i];
11400     /* 8: convubw */
11401     var47.i = (orc_uint8)var38;
11402     /* 9: loadb */
11403     var39 = ptr6[i];
11404     /* 10: convubw */
11405     var48.i = (orc_uint8)var39;
11406     /* 11: addw */
11407     var49.i = var47.i + var48.i;
11408     /* 13: mullw */
11409     var50.i = (var49.i * var40.i) & 0xffff;
11410     /* 14: addw */
11411     var51.i = var50.i + var46.i;
11412     /* 16: addw */
11413     var52.i = var51.i + var41.i;
11414     /* 17: shruw */
11415     var53.i = ((orc_uint16)var52.i) >> 6;
11416     /* 18: convwb */
11417     var42 = var53.i;
11418     /* 19: storeb */
11419     ptr0[i] = var42;
11420   }
11421
11422 }
11423
11424 #else
11425 static void
11426 _backup_orc_downsample_vert_u8 (OrcExecutor * ORC_RESTRICT ex)
11427 {
11428   int i;
11429   int n = ex->n;
11430   orc_int8 * ORC_RESTRICT ptr0;
11431   const orc_int8 * ORC_RESTRICT ptr4;
11432   const orc_int8 * ORC_RESTRICT ptr5;
11433   const orc_int8 * ORC_RESTRICT ptr6;
11434   const orc_int8 * ORC_RESTRICT ptr7;
11435   orc_int8 var35;
11436   orc_int8 var36;
11437   orc_union16 var37;
11438   orc_int8 var38;
11439   orc_int8 var39;
11440   orc_union16 var40;
11441   orc_union16 var41;
11442   orc_int8 var42;
11443   orc_union16 var43;
11444   orc_union16 var44;
11445   orc_union16 var45;
11446   orc_union16 var46;
11447   orc_union16 var47;
11448   orc_union16 var48;
11449   orc_union16 var49;
11450   orc_union16 var50;
11451   orc_union16 var51;
11452   orc_union16 var52;
11453   orc_union16 var53;
11454
11455   ptr0 = (orc_int8 *)ex->arrays[0];
11456   ptr4 = (orc_int8 *)ex->arrays[4];
11457   ptr5 = (orc_int8 *)ex->arrays[5];
11458   ptr6 = (orc_int8 *)ex->arrays[6];
11459   ptr7 = (orc_int8 *)ex->arrays[7];
11460
11461     /* 5: loadpw */
11462     var37.i = 0x00000006; /* 6 or 2.96439e-323f */
11463     /* 12: loadpw */
11464     var40.i = 0x0000001a; /* 26 or 1.28457e-322f */
11465     /* 15: loadpw */
11466     var41.i = 0x00000020; /* 32 or 1.58101e-322f */
11467
11468   for (i = 0; i < n; i++) {
11469     /* 0: loadb */
11470     var35 = ptr4[i];
11471     /* 1: convubw */
11472     var43.i = (orc_uint8)var35;
11473     /* 2: loadb */
11474     var36 = ptr7[i];
11475     /* 3: convubw */
11476     var44.i = (orc_uint8)var36;
11477     /* 4: addw */
11478     var45.i = var43.i + var44.i;
11479     /* 6: mullw */
11480     var46.i = (var45.i * var37.i) & 0xffff;
11481     /* 7: loadb */
11482     var38 = ptr5[i];
11483     /* 8: convubw */
11484     var47.i = (orc_uint8)var38;
11485     /* 9: loadb */
11486     var39 = ptr6[i];
11487     /* 10: convubw */
11488     var48.i = (orc_uint8)var39;
11489     /* 11: addw */
11490     var49.i = var47.i + var48.i;
11491     /* 13: mullw */
11492     var50.i = (var49.i * var40.i) & 0xffff;
11493     /* 14: addw */
11494     var51.i = var50.i + var46.i;
11495     /* 16: addw */
11496     var52.i = var51.i + var41.i;
11497     /* 17: shruw */
11498     var53.i = ((orc_uint16)var52.i) >> 6;
11499     /* 18: convwb */
11500     var42 = var53.i;
11501     /* 19: storeb */
11502     ptr0[i] = var42;
11503   }
11504
11505 }
11506
11507 void
11508 orc_downsample_vert_u8 (orc_uint8 * d1, const orc_uint8 * s1, const orc_uint8 * s2, const orc_uint8 * s3, const orc_uint8 * s4, int n)
11509 {
11510   OrcExecutor _ex, *ex = &_ex;
11511   static int p_inited = 0;
11512   static OrcProgram *p = 0;
11513   void (*func) (OrcExecutor *);
11514
11515   if (!p_inited) {
11516     orc_once_mutex_lock ();
11517     if (!p_inited) {
11518       OrcCompileResult result;
11519
11520       p = orc_program_new ();
11521       orc_program_set_name (p, "orc_downsample_vert_u8");
11522       orc_program_set_backup_function (p, _backup_orc_downsample_vert_u8);
11523       orc_program_add_destination (p, 1, "d1");
11524       orc_program_add_source (p, 1, "s1");
11525       orc_program_add_source (p, 1, "s2");
11526       orc_program_add_source (p, 1, "s3");
11527       orc_program_add_source (p, 1, "s4");
11528       orc_program_add_constant (p, 4, 0x00000006, "c1");
11529       orc_program_add_constant (p, 4, 0x0000001a, "c2");
11530       orc_program_add_constant (p, 4, 0x00000020, "c3");
11531       orc_program_add_temporary (p, 2, "t1");
11532       orc_program_add_temporary (p, 2, "t2");
11533       orc_program_add_temporary (p, 2, "t3");
11534
11535       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
11536       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S4, ORC_VAR_D1, ORC_VAR_D1);
11537       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1);
11538       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
11539       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, ORC_VAR_D1);
11540       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T3, ORC_VAR_S3, ORC_VAR_D1, ORC_VAR_D1);
11541       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_D1);
11542       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C2, ORC_VAR_D1);
11543       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1);
11544       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C3, ORC_VAR_D1);
11545       orc_program_append_2 (p, "shruw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_D1);
11546       orc_program_append_2 (p, "convwb", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
11547
11548       result = orc_program_compile (p);
11549     }
11550     p_inited = TRUE;
11551     orc_once_mutex_unlock ();
11552   }
11553   ex->program = p;
11554
11555   ex->n = n;
11556   ex->arrays[ORC_VAR_D1] = d1;
11557   ex->arrays[ORC_VAR_S1] = (void *)s1;
11558   ex->arrays[ORC_VAR_S2] = (void *)s2;
11559   ex->arrays[ORC_VAR_S3] = (void *)s3;
11560   ex->arrays[ORC_VAR_S4] = (void *)s4;
11561
11562   func = p->code_exec;
11563   func (ex);
11564 }
11565 #endif
11566
11567
11568 /* orc_downsample_horiz_u8 */
11569 #ifdef DISABLE_ORC
11570 void
11571 orc_downsample_horiz_u8 (orc_uint8 * d1, const uint8_t * s1, const uint8_t * s2, int n){
11572   int i;
11573   orc_int8 * ORC_RESTRICT ptr0;
11574   const orc_union16 * ORC_RESTRICT ptr4;
11575   const orc_union16 * ORC_RESTRICT ptr5;
11576   orc_union16 var38;
11577   orc_union16 var39;
11578   orc_union16 var40;
11579   orc_union16 var41;
11580   orc_union16 var42;
11581   orc_int8 var43;
11582   orc_union16 var44;
11583   orc_union16 var45;
11584   orc_int8 var46;
11585   orc_union16 var47;
11586   orc_int8 var48;
11587   orc_union16 var49;
11588   orc_union16 var50;
11589   orc_union16 var51;
11590   orc_int8 var52;
11591   orc_union16 var53;
11592   orc_int8 var54;
11593   orc_union16 var55;
11594   orc_union16 var56;
11595   orc_union16 var57;
11596   orc_union16 var58;
11597   orc_union16 var59;
11598   orc_union16 var60;
11599
11600   ptr0 = (orc_int8 *)d1;
11601   ptr4 = (orc_union16 *)s1;
11602   ptr5 = (orc_union16 *)s2;
11603
11604     /* 9: loadpw */
11605     var40.i = 0x00000006; /* 6 or 2.96439e-323f */
11606     /* 16: loadpw */
11607     var41.i = 0x0000001a; /* 26 or 1.28457e-322f */
11608     /* 19: loadpw */
11609     var42.i = 0x00000020; /* 32 or 1.58101e-322f */
11610
11611   for (i = 0; i < n; i++) {
11612     /* 0: loadw */
11613     var38 = ptr4[i];
11614     /* 1: copyw */
11615     var44.i = var38.i;
11616     /* 2: loadw */
11617     var39 = ptr5[i];
11618     /* 3: copyw */
11619     var45.i = var39.i;
11620     /* 4: select0wb */
11621     var46 = (orc_uint16)var44.i & 0xff;
11622     /* 5: convubw */
11623     var47.i = (orc_uint8)var46;
11624     /* 6: select1wb */
11625     var48 = ((orc_uint16)var45.i >> 8)&0xff;
11626     /* 7: convubw */
11627     var49.i = (orc_uint8)var48;
11628     /* 8: addw */
11629     var50.i = var47.i + var49.i;
11630     /* 10: mullw */
11631     var51.i = (var50.i * var40.i) & 0xffff;
11632     /* 11: select1wb */
11633     var52 = ((orc_uint16)var44.i >> 8)&0xff;
11634     /* 12: convubw */
11635     var53.i = (orc_uint8)var52;
11636     /* 13: select0wb */
11637     var54 = (orc_uint16)var45.i & 0xff;
11638     /* 14: convubw */
11639     var55.i = (orc_uint8)var54;
11640     /* 15: addw */
11641     var56.i = var53.i + var55.i;
11642     /* 17: mullw */
11643     var57.i = (var56.i * var41.i) & 0xffff;
11644     /* 18: addw */
11645     var58.i = var51.i + var57.i;
11646     /* 20: addw */
11647     var59.i = var58.i + var42.i;
11648     /* 21: shruw */
11649     var60.i = ((orc_uint16)var59.i) >> 6;
11650     /* 22: convwb */
11651     var43 = var60.i;
11652     /* 23: storeb */
11653     ptr0[i] = var43;
11654   }
11655
11656 }
11657
11658 #else
11659 static void
11660 _backup_orc_downsample_horiz_u8 (OrcExecutor * ORC_RESTRICT ex)
11661 {
11662   int i;
11663   int n = ex->n;
11664   orc_int8 * ORC_RESTRICT ptr0;
11665   const orc_union16 * ORC_RESTRICT ptr4;
11666   const orc_union16 * ORC_RESTRICT ptr5;
11667   orc_union16 var38;
11668   orc_union16 var39;
11669   orc_union16 var40;
11670   orc_union16 var41;
11671   orc_union16 var42;
11672   orc_int8 var43;
11673   orc_union16 var44;
11674   orc_union16 var45;
11675   orc_int8 var46;
11676   orc_union16 var47;
11677   orc_int8 var48;
11678   orc_union16 var49;
11679   orc_union16 var50;
11680   orc_union16 var51;
11681   orc_int8 var52;
11682   orc_union16 var53;
11683   orc_int8 var54;
11684   orc_union16 var55;
11685   orc_union16 var56;
11686   orc_union16 var57;
11687   orc_union16 var58;
11688   orc_union16 var59;
11689   orc_union16 var60;
11690
11691   ptr0 = (orc_int8 *)ex->arrays[0];
11692   ptr4 = (orc_union16 *)ex->arrays[4];
11693   ptr5 = (orc_union16 *)ex->arrays[5];
11694
11695     /* 9: loadpw */
11696     var40.i = 0x00000006; /* 6 or 2.96439e-323f */
11697     /* 16: loadpw */
11698     var41.i = 0x0000001a; /* 26 or 1.28457e-322f */
11699     /* 19: loadpw */
11700     var42.i = 0x00000020; /* 32 or 1.58101e-322f */
11701
11702   for (i = 0; i < n; i++) {
11703     /* 0: loadw */
11704     var38 = ptr4[i];
11705     /* 1: copyw */
11706     var44.i = var38.i;
11707     /* 2: loadw */
11708     var39 = ptr5[i];
11709     /* 3: copyw */
11710     var45.i = var39.i;
11711     /* 4: select0wb */
11712     var46 = (orc_uint16)var44.i & 0xff;
11713     /* 5: convubw */
11714     var47.i = (orc_uint8)var46;
11715     /* 6: select1wb */
11716     var48 = ((orc_uint16)var45.i >> 8)&0xff;
11717     /* 7: convubw */
11718     var49.i = (orc_uint8)var48;
11719     /* 8: addw */
11720     var50.i = var47.i + var49.i;
11721     /* 10: mullw */
11722     var51.i = (var50.i * var40.i) & 0xffff;
11723     /* 11: select1wb */
11724     var52 = ((orc_uint16)var44.i >> 8)&0xff;
11725     /* 12: convubw */
11726     var53.i = (orc_uint8)var52;
11727     /* 13: select0wb */
11728     var54 = (orc_uint16)var45.i & 0xff;
11729     /* 14: convubw */
11730     var55.i = (orc_uint8)var54;
11731     /* 15: addw */
11732     var56.i = var53.i + var55.i;
11733     /* 17: mullw */
11734     var57.i = (var56.i * var41.i) & 0xffff;
11735     /* 18: addw */
11736     var58.i = var51.i + var57.i;
11737     /* 20: addw */
11738     var59.i = var58.i + var42.i;
11739     /* 21: shruw */
11740     var60.i = ((orc_uint16)var59.i) >> 6;
11741     /* 22: convwb */
11742     var43 = var60.i;
11743     /* 23: storeb */
11744     ptr0[i] = var43;
11745   }
11746
11747 }
11748
11749 void
11750 orc_downsample_horiz_u8 (orc_uint8 * d1, const uint8_t * s1, const uint8_t * s2, int n)
11751 {
11752   OrcExecutor _ex, *ex = &_ex;
11753   static int p_inited = 0;
11754   static OrcProgram *p = 0;
11755   void (*func) (OrcExecutor *);
11756
11757   if (!p_inited) {
11758     orc_once_mutex_lock ();
11759     if (!p_inited) {
11760       OrcCompileResult result;
11761
11762       p = orc_program_new ();
11763       orc_program_set_name (p, "orc_downsample_horiz_u8");
11764       orc_program_set_backup_function (p, _backup_orc_downsample_horiz_u8);
11765       orc_program_add_destination (p, 1, "d1");
11766       orc_program_add_source (p, 2, "s1");
11767       orc_program_add_source (p, 2, "s2");
11768       orc_program_add_constant (p, 4, 0x00000006, "c1");
11769       orc_program_add_constant (p, 4, 0x0000001a, "c2");
11770       orc_program_add_constant (p, 4, 0x00000020, "c3");
11771       orc_program_add_temporary (p, 2, "t1");
11772       orc_program_add_temporary (p, 2, "t2");
11773       orc_program_add_temporary (p, 1, "t3");
11774       orc_program_add_temporary (p, 2, "t4");
11775       orc_program_add_temporary (p, 2, "t5");
11776       orc_program_add_temporary (p, 2, "t6");
11777
11778       orc_program_append_2 (p, "copyw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
11779       orc_program_append_2 (p, "copyw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, ORC_VAR_D1);
11780       orc_program_append_2 (p, "select0wb", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
11781       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1, ORC_VAR_D1);
11782       orc_program_append_2 (p, "select1wb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
11783       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T5, ORC_VAR_T3, ORC_VAR_D1, ORC_VAR_D1);
11784       orc_program_append_2 (p, "addw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_T5, ORC_VAR_D1);
11785       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C1, ORC_VAR_D1);
11786       orc_program_append_2 (p, "select1wb", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
11787       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T5, ORC_VAR_T3, ORC_VAR_D1, ORC_VAR_D1);
11788       orc_program_append_2 (p, "select0wb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
11789       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T6, ORC_VAR_T3, ORC_VAR_D1, ORC_VAR_D1);
11790       orc_program_append_2 (p, "addw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T6, ORC_VAR_D1);
11791       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C2, ORC_VAR_D1);
11792       orc_program_append_2 (p, "addw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_T5, ORC_VAR_D1);
11793       orc_program_append_2 (p, "addw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C3, ORC_VAR_D1);
11794       orc_program_append_2 (p, "shruw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C1, ORC_VAR_D1);
11795       orc_program_append_2 (p, "convwb", 0, ORC_VAR_D1, ORC_VAR_T4, ORC_VAR_D1, ORC_VAR_D1);
11796
11797       result = orc_program_compile (p);
11798     }
11799     p_inited = TRUE;
11800     orc_once_mutex_unlock ();
11801   }
11802   ex->program = p;
11803
11804   ex->n = n;
11805   ex->arrays[ORC_VAR_D1] = d1;
11806   ex->arrays[ORC_VAR_S1] = (void *)s1;
11807   ex->arrays[ORC_VAR_S2] = (void *)s2;
11808
11809   func = p->code_exec;
11810   func (ex);
11811 }
11812 #endif
11813
11814
11815 /* orc_stats_moment_s16 */
11816 #ifdef DISABLE_ORC
11817 void
11818 orc_stats_moment_s16 (int32_t * a1, const int16_t * s1, int n){
11819   int i;
11820   const orc_union16 * ORC_RESTRICT ptr4;
11821   orc_union32 var12 =  { 0 };
11822   orc_union16 var34;
11823   orc_union16 var35;
11824   orc_union16 var36;
11825   orc_union16 var37;
11826   orc_union16 var38;
11827   orc_union16 var39;
11828   orc_union32 var40;
11829
11830   ptr4 = (orc_union16 *)s1;
11831
11832     /* 2: loadpw */
11833     var35.i = 0x00000002; /* 2 or 9.88131e-324f */
11834     /* 4: loadpw */
11835     var36.i = 0x00000000; /* 0 or 0f */
11836
11837   for (i = 0; i < n; i++) {
11838     /* 0: loadw */
11839     var34 = ptr4[i];
11840     /* 1: absw */
11841     var37.i = ORC_ABS(var34.i);
11842     /* 3: subw */
11843     var38.i = var37.i - var35.i;
11844     /* 5: maxsw */
11845     var39.i = ORC_MAX(var38.i, var36.i);
11846     /* 6: convuwl */
11847     var40.i = (orc_uint16)var39.i;
11848     /* 7: accl */
11849     var12.i = var12.i + var40.i;
11850   }
11851   *a1 = var12.i;
11852
11853 }
11854
11855 #else
11856 static void
11857 _backup_orc_stats_moment_s16 (OrcExecutor * ORC_RESTRICT ex)
11858 {
11859   int i;
11860   int n = ex->n;
11861   const orc_union16 * ORC_RESTRICT ptr4;
11862   orc_union32 var12 =  { 0 };
11863   orc_union16 var34;
11864   orc_union16 var35;
11865   orc_union16 var36;
11866   orc_union16 var37;
11867   orc_union16 var38;
11868   orc_union16 var39;
11869   orc_union32 var40;
11870
11871   ptr4 = (orc_union16 *)ex->arrays[4];
11872
11873     /* 2: loadpw */
11874     var35.i = 0x00000002; /* 2 or 9.88131e-324f */
11875     /* 4: loadpw */
11876     var36.i = 0x00000000; /* 0 or 0f */
11877
11878   for (i = 0; i < n; i++) {
11879     /* 0: loadw */
11880     var34 = ptr4[i];
11881     /* 1: absw */
11882     var37.i = ORC_ABS(var34.i);
11883     /* 3: subw */
11884     var38.i = var37.i - var35.i;
11885     /* 5: maxsw */
11886     var39.i = ORC_MAX(var38.i, var36.i);
11887     /* 6: convuwl */
11888     var40.i = (orc_uint16)var39.i;
11889     /* 7: accl */
11890     var12.i = var12.i + var40.i;
11891   }
11892   ex->accumulators[0] = var12.i;
11893
11894 }
11895
11896 void
11897 orc_stats_moment_s16 (int32_t * a1, const int16_t * s1, int n)
11898 {
11899   OrcExecutor _ex, *ex = &_ex;
11900   static int p_inited = 0;
11901   static OrcProgram *p = 0;
11902   void (*func) (OrcExecutor *);
11903
11904   if (!p_inited) {
11905     orc_once_mutex_lock ();
11906     if (!p_inited) {
11907       OrcCompileResult result;
11908
11909       p = orc_program_new ();
11910       orc_program_set_name (p, "orc_stats_moment_s16");
11911       orc_program_set_backup_function (p, _backup_orc_stats_moment_s16);
11912       orc_program_add_source (p, 2, "s1");
11913       orc_program_add_accumulator (p, 4, "a1");
11914       orc_program_add_constant (p, 4, 0x00000002, "c1");
11915       orc_program_add_constant (p, 4, 0x00000000, "c2");
11916       orc_program_add_temporary (p, 2, "t1");
11917       orc_program_add_temporary (p, 4, "t2");
11918
11919       orc_program_append_2 (p, "absw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
11920       orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
11921       orc_program_append_2 (p, "maxsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2, ORC_VAR_D1);
11922       orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
11923       orc_program_append_2 (p, "accl", 0, ORC_VAR_A1, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
11924
11925       result = orc_program_compile (p);
11926     }
11927     p_inited = TRUE;
11928     orc_once_mutex_unlock ();
11929   }
11930   ex->program = p;
11931
11932   ex->n = n;
11933   ex->arrays[ORC_VAR_S1] = (void *)s1;
11934
11935   func = p->code_exec;
11936   func (ex);
11937   *a1 = orc_executor_get_accumulator (ex, ORC_VAR_A1);
11938 }
11939 #endif
11940
11941
11942 /* orc_stats_above_s16 */
11943 #ifdef DISABLE_ORC
11944 void
11945 orc_stats_above_s16 (int32_t * a1, const int16_t * s1, int n){
11946   int i;
11947   const orc_union16 * ORC_RESTRICT ptr4;
11948   orc_union32 var12 =  { 0 };
11949   orc_union16 var34;
11950   orc_union16 var35;
11951   orc_union16 var36;
11952   orc_union16 var37;
11953   orc_union16 var38;
11954   orc_union16 var39;
11955   orc_union16 var40;
11956   orc_union16 var41;
11957   orc_union32 var42;
11958
11959   ptr4 = (orc_union16 *)s1;
11960
11961     /* 2: loadpw */
11962     var35.i = 0x00000001; /* 1 or 4.94066e-324f */
11963     /* 4: loadpw */
11964     var36.i = 0x00000000; /* 0 or 0f */
11965     /* 6: loadpw */
11966     var37.i = 0x00000001; /* 1 or 4.94066e-324f */
11967
11968   for (i = 0; i < n; i++) {
11969     /* 0: loadw */
11970     var34 = ptr4[i];
11971     /* 1: absw */
11972     var38.i = ORC_ABS(var34.i);
11973     /* 3: subw */
11974     var39.i = var38.i - var35.i;
11975     /* 5: maxsw */
11976     var40.i = ORC_MAX(var39.i, var36.i);
11977     /* 7: minsw */
11978     var41.i = ORC_MIN(var40.i, var37.i);
11979     /* 8: convuwl */
11980     var42.i = (orc_uint16)var41.i;
11981     /* 9: accl */
11982     var12.i = var12.i + var42.i;
11983   }
11984   *a1 = var12.i;
11985
11986 }
11987
11988 #else
11989 static void
11990 _backup_orc_stats_above_s16 (OrcExecutor * ORC_RESTRICT ex)
11991 {
11992   int i;
11993   int n = ex->n;
11994   const orc_union16 * ORC_RESTRICT ptr4;
11995   orc_union32 var12 =  { 0 };
11996   orc_union16 var34;
11997   orc_union16 var35;
11998   orc_union16 var36;
11999   orc_union16 var37;
12000   orc_union16 var38;
12001   orc_union16 var39;
12002   orc_union16 var40;
12003   orc_union16 var41;
12004   orc_union32 var42;
12005
12006   ptr4 = (orc_union16 *)ex->arrays[4];
12007
12008     /* 2: loadpw */
12009     var35.i = 0x00000001; /* 1 or 4.94066e-324f */
12010     /* 4: loadpw */
12011     var36.i = 0x00000000; /* 0 or 0f */
12012     /* 6: loadpw */
12013     var37.i = 0x00000001; /* 1 or 4.94066e-324f */
12014
12015   for (i = 0; i < n; i++) {
12016     /* 0: loadw */
12017     var34 = ptr4[i];
12018     /* 1: absw */
12019     var38.i = ORC_ABS(var34.i);
12020     /* 3: subw */
12021     var39.i = var38.i - var35.i;
12022     /* 5: maxsw */
12023     var40.i = ORC_MAX(var39.i, var36.i);
12024     /* 7: minsw */
12025     var41.i = ORC_MIN(var40.i, var37.i);
12026     /* 8: convuwl */
12027     var42.i = (orc_uint16)var41.i;
12028     /* 9: accl */
12029     var12.i = var12.i + var42.i;
12030   }
12031   ex->accumulators[0] = var12.i;
12032
12033 }
12034
12035 void
12036 orc_stats_above_s16 (int32_t * a1, const int16_t * s1, int n)
12037 {
12038   OrcExecutor _ex, *ex = &_ex;
12039   static int p_inited = 0;
12040   static OrcProgram *p = 0;
12041   void (*func) (OrcExecutor *);
12042
12043   if (!p_inited) {
12044     orc_once_mutex_lock ();
12045     if (!p_inited) {
12046       OrcCompileResult result;
12047
12048       p = orc_program_new ();
12049       orc_program_set_name (p, "orc_stats_above_s16");
12050       orc_program_set_backup_function (p, _backup_orc_stats_above_s16);
12051       orc_program_add_source (p, 2, "s1");
12052       orc_program_add_accumulator (p, 4, "a1");
12053       orc_program_add_constant (p, 4, 0x00000001, "c1");
12054       orc_program_add_constant (p, 4, 0x00000000, "c2");
12055       orc_program_add_temporary (p, 2, "t1");
12056       orc_program_add_temporary (p, 4, "t2");
12057
12058       orc_program_append_2 (p, "absw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
12059       orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
12060       orc_program_append_2 (p, "maxsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2, ORC_VAR_D1);
12061       orc_program_append_2 (p, "minsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
12062       orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
12063       orc_program_append_2 (p, "accl", 0, ORC_VAR_A1, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
12064
12065       result = orc_program_compile (p);
12066     }
12067     p_inited = TRUE;
12068     orc_once_mutex_unlock ();
12069   }
12070   ex->program = p;
12071
12072   ex->n = n;
12073   ex->arrays[ORC_VAR_S1] = (void *)s1;
12074
12075   func = p->code_exec;
12076   func (ex);
12077   *a1 = orc_executor_get_accumulator (ex, ORC_VAR_A1);
12078 }
12079 #endif
12080
12081
12082 /* orc_accw */
12083 #ifdef DISABLE_ORC
12084 void
12085 orc_accw (int * a1, const int16_t * s1, int n){
12086   int i;
12087   const orc_union16 * ORC_RESTRICT ptr4;
12088   orc_union16 var12 =  { 0 };
12089   orc_union16 var33;
12090   orc_union16 var34;
12091
12092   ptr4 = (orc_union16 *)s1;
12093
12094
12095   for (i = 0; i < n; i++) {
12096     /* 0: loadw */
12097     var33 = ptr4[i];
12098     /* 1: absw */
12099     var34.i = ORC_ABS(var33.i);
12100     /* 2: accw */
12101     var12.i = var12.i + var34.i;
12102   }
12103   *a1 = (var12.i & 0xffff);
12104
12105 }
12106
12107 #else
12108 static void
12109 _backup_orc_accw (OrcExecutor * ORC_RESTRICT ex)
12110 {
12111   int i;
12112   int n = ex->n;
12113   const orc_union16 * ORC_RESTRICT ptr4;
12114   orc_union16 var12 =  { 0 };
12115   orc_union16 var33;
12116   orc_union16 var34;
12117
12118   ptr4 = (orc_union16 *)ex->arrays[4];
12119
12120
12121   for (i = 0; i < n; i++) {
12122     /* 0: loadw */
12123     var33 = ptr4[i];
12124     /* 1: absw */
12125     var34.i = ORC_ABS(var33.i);
12126     /* 2: accw */
12127     var12.i = var12.i + var34.i;
12128   }
12129   ex->accumulators[0] = (var12.i & 0xffff);
12130
12131 }
12132
12133 void
12134 orc_accw (int * a1, const int16_t * s1, int n)
12135 {
12136   OrcExecutor _ex, *ex = &_ex;
12137   static int p_inited = 0;
12138   static OrcProgram *p = 0;
12139   void (*func) (OrcExecutor *);
12140
12141   if (!p_inited) {
12142     orc_once_mutex_lock ();
12143     if (!p_inited) {
12144       OrcCompileResult result;
12145
12146       p = orc_program_new ();
12147       orc_program_set_name (p, "orc_accw");
12148       orc_program_set_backup_function (p, _backup_orc_accw);
12149       orc_program_add_source (p, 2, "s1");
12150       orc_program_add_accumulator (p, 2, "a1");
12151       orc_program_add_temporary (p, 2, "t1");
12152
12153       orc_program_append_2 (p, "absw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
12154       orc_program_append_2 (p, "accw", 0, ORC_VAR_A1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
12155
12156       result = orc_program_compile (p);
12157     }
12158     p_inited = TRUE;
12159     orc_once_mutex_unlock ();
12160   }
12161   ex->program = p;
12162
12163   ex->n = n;
12164   ex->arrays[ORC_VAR_S1] = (void *)s1;
12165
12166   func = p->code_exec;
12167   func (ex);
12168   *a1 = orc_executor_get_accumulator (ex, ORC_VAR_A1);
12169 }
12170 #endif
12171
12172
12173 /* orc_avg2_8xn_u8 */
12174 #ifdef DISABLE_ORC
12175 void
12176 orc_avg2_8xn_u8 (uint8_t * d1, int d1_stride, const uint8_t * s1, int s1_stride, const uint8_t * s2, int s2_stride, int m){
12177   int i;
12178   int j;
12179   int n = 8;
12180   orc_int8 * ORC_RESTRICT ptr0;
12181   const orc_int8 * ORC_RESTRICT ptr4;
12182   const orc_int8 * ORC_RESTRICT ptr5;
12183   orc_int8 var32;
12184   orc_int8 var33;
12185   orc_int8 var34;
12186
12187   for (j = 0; j < m; j++) {
12188     ptr0 = ORC_PTR_OFFSET(d1, d1_stride * j);
12189     ptr4 = ORC_PTR_OFFSET(s1, s1_stride * j);
12190     ptr5 = ORC_PTR_OFFSET(s2, s2_stride * j);
12191
12192
12193     for (i = 0; i < n; i++) {
12194       /* 0: loadb */
12195       var32 = ptr4[i];
12196       /* 1: loadb */
12197       var33 = ptr5[i];
12198       /* 2: avgub */
12199       var34 = ((orc_uint8)var32 + (orc_uint8)var33 + 1)>>1;
12200       /* 3: storeb */
12201       ptr0[i] = var34;
12202     }
12203   }
12204
12205 }
12206
12207 #else
12208 static void
12209 _backup_orc_avg2_8xn_u8 (OrcExecutor * ORC_RESTRICT ex)
12210 {
12211   int i;
12212   int j;
12213   int n = 8;
12214   int m = ex->params[ORC_VAR_A1];
12215   orc_int8 * ORC_RESTRICT ptr0;
12216   const orc_int8 * ORC_RESTRICT ptr4;
12217   const orc_int8 * ORC_RESTRICT ptr5;
12218   orc_int8 var32;
12219   orc_int8 var33;
12220   orc_int8 var34;
12221
12222   for (j = 0; j < m; j++) {
12223     ptr0 = ORC_PTR_OFFSET(ex->arrays[0], ex->params[0] * j);
12224     ptr4 = ORC_PTR_OFFSET(ex->arrays[4], ex->params[4] * j);
12225     ptr5 = ORC_PTR_OFFSET(ex->arrays[5], ex->params[5] * j);
12226
12227
12228     for (i = 0; i < n; i++) {
12229       /* 0: loadb */
12230       var32 = ptr4[i];
12231       /* 1: loadb */
12232       var33 = ptr5[i];
12233       /* 2: avgub */
12234       var34 = ((orc_uint8)var32 + (orc_uint8)var33 + 1)>>1;
12235       /* 3: storeb */
12236       ptr0[i] = var34;
12237     }
12238   }
12239
12240 }
12241
12242 void
12243 orc_avg2_8xn_u8 (uint8_t * d1, int d1_stride, const uint8_t * s1, int s1_stride, const uint8_t * s2, int s2_stride, int m)
12244 {
12245   OrcExecutor _ex, *ex = &_ex;
12246   static int p_inited = 0;
12247   static OrcProgram *p = 0;
12248   void (*func) (OrcExecutor *);
12249
12250   if (!p_inited) {
12251     orc_once_mutex_lock ();
12252     if (!p_inited) {
12253       OrcCompileResult result;
12254
12255       p = orc_program_new ();
12256       orc_program_set_constant_n (p, 8);
12257       orc_program_set_2d (p);
12258       orc_program_set_name (p, "orc_avg2_8xn_u8");
12259       orc_program_set_backup_function (p, _backup_orc_avg2_8xn_u8);
12260       orc_program_add_destination (p, 1, "d1");
12261       orc_program_add_source (p, 1, "s1");
12262       orc_program_add_source (p, 1, "s2");
12263
12264       orc_program_append_2 (p, "avgub", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_S2, ORC_VAR_D1);
12265
12266       result = orc_program_compile (p);
12267     }
12268     p_inited = TRUE;
12269     orc_once_mutex_unlock ();
12270   }
12271   ex->program = p;
12272
12273   ex->n = 8;
12274   ORC_EXECUTOR_M(ex) = m;
12275   ex->arrays[ORC_VAR_D1] = d1;
12276   ex->params[ORC_VAR_D1] = d1_stride;
12277   ex->arrays[ORC_VAR_S1] = (void *)s1;
12278   ex->params[ORC_VAR_S1] = s1_stride;
12279   ex->arrays[ORC_VAR_S2] = (void *)s2;
12280   ex->params[ORC_VAR_S2] = s2_stride;
12281
12282   func = p->code_exec;
12283   func (ex);
12284 }
12285 #endif
12286
12287
12288 /* orc_avg2_12xn_u8 */
12289 #ifdef DISABLE_ORC
12290 void
12291 orc_avg2_12xn_u8 (uint8_t * d1, int d1_stride, const uint8_t * s1, int s1_stride, const uint8_t * s2, int s2_stride, int m){
12292   int i;
12293   int j;
12294   int n = 12;
12295   orc_int8 * ORC_RESTRICT ptr0;
12296   const orc_int8 * ORC_RESTRICT ptr4;
12297   const orc_int8 * ORC_RESTRICT ptr5;
12298   orc_int8 var32;
12299   orc_int8 var33;
12300   orc_int8 var34;
12301
12302   for (j = 0; j < m; j++) {
12303     ptr0 = ORC_PTR_OFFSET(d1, d1_stride * j);
12304     ptr4 = ORC_PTR_OFFSET(s1, s1_stride * j);
12305     ptr5 = ORC_PTR_OFFSET(s2, s2_stride * j);
12306
12307
12308     for (i = 0; i < n; i++) {
12309       /* 0: loadb */
12310       var32 = ptr4[i];
12311       /* 1: loadb */
12312       var33 = ptr5[i];
12313       /* 2: avgub */
12314       var34 = ((orc_uint8)var32 + (orc_uint8)var33 + 1)>>1;
12315       /* 3: storeb */
12316       ptr0[i] = var34;
12317     }
12318   }
12319
12320 }
12321
12322 #else
12323 static void
12324 _backup_orc_avg2_12xn_u8 (OrcExecutor * ORC_RESTRICT ex)
12325 {
12326   int i;
12327   int j;
12328   int n = 12;
12329   int m = ex->params[ORC_VAR_A1];
12330   orc_int8 * ORC_RESTRICT ptr0;
12331   const orc_int8 * ORC_RESTRICT ptr4;
12332   const orc_int8 * ORC_RESTRICT ptr5;
12333   orc_int8 var32;
12334   orc_int8 var33;
12335   orc_int8 var34;
12336
12337   for (j = 0; j < m; j++) {
12338     ptr0 = ORC_PTR_OFFSET(ex->arrays[0], ex->params[0] * j);
12339     ptr4 = ORC_PTR_OFFSET(ex->arrays[4], ex->params[4] * j);
12340     ptr5 = ORC_PTR_OFFSET(ex->arrays[5], ex->params[5] * j);
12341
12342
12343     for (i = 0; i < n; i++) {
12344       /* 0: loadb */
12345       var32 = ptr4[i];
12346       /* 1: loadb */
12347       var33 = ptr5[i];
12348       /* 2: avgub */
12349       var34 = ((orc_uint8)var32 + (orc_uint8)var33 + 1)>>1;
12350       /* 3: storeb */
12351       ptr0[i] = var34;
12352     }
12353   }
12354
12355 }
12356
12357 void
12358 orc_avg2_12xn_u8 (uint8_t * d1, int d1_stride, const uint8_t * s1, int s1_stride, const uint8_t * s2, int s2_stride, int m)
12359 {
12360   OrcExecutor _ex, *ex = &_ex;
12361   static int p_inited = 0;
12362   static OrcProgram *p = 0;
12363   void (*func) (OrcExecutor *);
12364
12365   if (!p_inited) {
12366     orc_once_mutex_lock ();
12367     if (!p_inited) {
12368       OrcCompileResult result;
12369
12370       p = orc_program_new ();
12371       orc_program_set_constant_n (p, 12);
12372       orc_program_set_2d (p);
12373       orc_program_set_name (p, "orc_avg2_12xn_u8");
12374       orc_program_set_backup_function (p, _backup_orc_avg2_12xn_u8);
12375       orc_program_add_destination (p, 1, "d1");
12376       orc_program_add_source (p, 1, "s1");
12377       orc_program_add_source (p, 1, "s2");
12378
12379       orc_program_append_2 (p, "avgub", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_S2, ORC_VAR_D1);
12380
12381       result = orc_program_compile (p);
12382     }
12383     p_inited = TRUE;
12384     orc_once_mutex_unlock ();
12385   }
12386   ex->program = p;
12387
12388   ex->n = 12;
12389   ORC_EXECUTOR_M(ex) = m;
12390   ex->arrays[ORC_VAR_D1] = d1;
12391   ex->params[ORC_VAR_D1] = d1_stride;
12392   ex->arrays[ORC_VAR_S1] = (void *)s1;
12393   ex->params[ORC_VAR_S1] = s1_stride;
12394   ex->arrays[ORC_VAR_S2] = (void *)s2;
12395   ex->params[ORC_VAR_S2] = s2_stride;
12396
12397   func = p->code_exec;
12398   func (ex);
12399 }
12400 #endif
12401
12402
12403 /* orc_avg2_16xn_u8 */
12404 #ifdef DISABLE_ORC
12405 void
12406 orc_avg2_16xn_u8 (uint8_t * d1, int d1_stride, const uint8_t * s1, int s1_stride, const uint8_t * s2, int s2_stride, int m){
12407   int i;
12408   int j;
12409   int n = 16;
12410   orc_int8 * ORC_RESTRICT ptr0;
12411   const orc_int8 * ORC_RESTRICT ptr4;
12412   const orc_int8 * ORC_RESTRICT ptr5;
12413   orc_int8 var32;
12414   orc_int8 var33;
12415   orc_int8 var34;
12416
12417   for (j = 0; j < m; j++) {
12418     ptr0 = ORC_PTR_OFFSET(d1, d1_stride * j);
12419     ptr4 = ORC_PTR_OFFSET(s1, s1_stride * j);
12420     ptr5 = ORC_PTR_OFFSET(s2, s2_stride * j);
12421
12422
12423     for (i = 0; i < n; i++) {
12424       /* 0: loadb */
12425       var32 = ptr4[i];
12426       /* 1: loadb */
12427       var33 = ptr5[i];
12428       /* 2: avgub */
12429       var34 = ((orc_uint8)var32 + (orc_uint8)var33 + 1)>>1;
12430       /* 3: storeb */
12431       ptr0[i] = var34;
12432     }
12433   }
12434
12435 }
12436
12437 #else
12438 static void
12439 _backup_orc_avg2_16xn_u8 (OrcExecutor * ORC_RESTRICT ex)
12440 {
12441   int i;
12442   int j;
12443   int n = 16;
12444   int m = ex->params[ORC_VAR_A1];
12445   orc_int8 * ORC_RESTRICT ptr0;
12446   const orc_int8 * ORC_RESTRICT ptr4;
12447   const orc_int8 * ORC_RESTRICT ptr5;
12448   orc_int8 var32;
12449   orc_int8 var33;
12450   orc_int8 var34;
12451
12452   for (j = 0; j < m; j++) {
12453     ptr0 = ORC_PTR_OFFSET(ex->arrays[0], ex->params[0] * j);
12454     ptr4 = ORC_PTR_OFFSET(ex->arrays[4], ex->params[4] * j);
12455     ptr5 = ORC_PTR_OFFSET(ex->arrays[5], ex->params[5] * j);
12456
12457
12458     for (i = 0; i < n; i++) {
12459       /* 0: loadb */
12460       var32 = ptr4[i];
12461       /* 1: loadb */
12462       var33 = ptr5[i];
12463       /* 2: avgub */
12464       var34 = ((orc_uint8)var32 + (orc_uint8)var33 + 1)>>1;
12465       /* 3: storeb */
12466       ptr0[i] = var34;
12467     }
12468   }
12469
12470 }
12471
12472 void
12473 orc_avg2_16xn_u8 (uint8_t * d1, int d1_stride, const uint8_t * s1, int s1_stride, const uint8_t * s2, int s2_stride, int m)
12474 {
12475   OrcExecutor _ex, *ex = &_ex;
12476   static int p_inited = 0;
12477   static OrcProgram *p = 0;
12478   void (*func) (OrcExecutor *);
12479
12480   if (!p_inited) {
12481     orc_once_mutex_lock ();
12482     if (!p_inited) {
12483       OrcCompileResult result;
12484
12485       p = orc_program_new ();
12486       orc_program_set_constant_n (p, 16);
12487       orc_program_set_2d (p);
12488       orc_program_set_name (p, "orc_avg2_16xn_u8");
12489       orc_program_set_backup_function (p, _backup_orc_avg2_16xn_u8);
12490       orc_program_add_destination (p, 1, "d1");
12491       orc_program_add_source (p, 1, "s1");
12492       orc_program_add_source (p, 1, "s2");
12493
12494       orc_program_append_2 (p, "avgub", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_S2, ORC_VAR_D1);
12495
12496       result = orc_program_compile (p);
12497     }
12498     p_inited = TRUE;
12499     orc_once_mutex_unlock ();
12500   }
12501   ex->program = p;
12502
12503   ex->n = 16;
12504   ORC_EXECUTOR_M(ex) = m;
12505   ex->arrays[ORC_VAR_D1] = d1;
12506   ex->params[ORC_VAR_D1] = d1_stride;
12507   ex->arrays[ORC_VAR_S1] = (void *)s1;
12508   ex->params[ORC_VAR_S1] = s1_stride;
12509   ex->arrays[ORC_VAR_S2] = (void *)s2;
12510   ex->params[ORC_VAR_S2] = s2_stride;
12511
12512   func = p->code_exec;
12513   func (ex);
12514 }
12515 #endif
12516
12517
12518 /* orc_avg2_32xn_u8 */
12519 #ifdef DISABLE_ORC
12520 void
12521 orc_avg2_32xn_u8 (uint8_t * d1, int d1_stride, const uint8_t * s1, int s1_stride, const uint8_t * s2, int s2_stride, int m){
12522   int i;
12523   int j;
12524   int n = 32;
12525   orc_int8 * ORC_RESTRICT ptr0;
12526   const orc_int8 * ORC_RESTRICT ptr4;
12527   const orc_int8 * ORC_RESTRICT ptr5;
12528   orc_int8 var32;
12529   orc_int8 var33;
12530   orc_int8 var34;
12531
12532   for (j = 0; j < m; j++) {
12533     ptr0 = ORC_PTR_OFFSET(d1, d1_stride * j);
12534     ptr4 = ORC_PTR_OFFSET(s1, s1_stride * j);
12535     ptr5 = ORC_PTR_OFFSET(s2, s2_stride * j);
12536
12537
12538     for (i = 0; i < n; i++) {
12539       /* 0: loadb */
12540       var32 = ptr4[i];
12541       /* 1: loadb */
12542       var33 = ptr5[i];
12543       /* 2: avgub */
12544       var34 = ((orc_uint8)var32 + (orc_uint8)var33 + 1)>>1;
12545       /* 3: storeb */
12546       ptr0[i] = var34;
12547     }
12548   }
12549
12550 }
12551
12552 #else
12553 static void
12554 _backup_orc_avg2_32xn_u8 (OrcExecutor * ORC_RESTRICT ex)
12555 {
12556   int i;
12557   int j;
12558   int n = 32;
12559   int m = ex->params[ORC_VAR_A1];
12560   orc_int8 * ORC_RESTRICT ptr0;
12561   const orc_int8 * ORC_RESTRICT ptr4;
12562   const orc_int8 * ORC_RESTRICT ptr5;
12563   orc_int8 var32;
12564   orc_int8 var33;
12565   orc_int8 var34;
12566
12567   for (j = 0; j < m; j++) {
12568     ptr0 = ORC_PTR_OFFSET(ex->arrays[0], ex->params[0] * j);
12569     ptr4 = ORC_PTR_OFFSET(ex->arrays[4], ex->params[4] * j);
12570     ptr5 = ORC_PTR_OFFSET(ex->arrays[5], ex->params[5] * j);
12571
12572
12573     for (i = 0; i < n; i++) {
12574       /* 0: loadb */
12575       var32 = ptr4[i];
12576       /* 1: loadb */
12577       var33 = ptr5[i];
12578       /* 2: avgub */
12579       var34 = ((orc_uint8)var32 + (orc_uint8)var33 + 1)>>1;
12580       /* 3: storeb */
12581       ptr0[i] = var34;
12582     }
12583   }
12584
12585 }
12586
12587 void
12588 orc_avg2_32xn_u8 (uint8_t * d1, int d1_stride, const uint8_t * s1, int s1_stride, const uint8_t * s2, int s2_stride, int m)
12589 {
12590   OrcExecutor _ex, *ex = &_ex;
12591   static int p_inited = 0;
12592   static OrcProgram *p = 0;
12593   void (*func) (OrcExecutor *);
12594
12595   if (!p_inited) {
12596     orc_once_mutex_lock ();
12597     if (!p_inited) {
12598       OrcCompileResult result;
12599
12600       p = orc_program_new ();
12601       orc_program_set_constant_n (p, 32);
12602       orc_program_set_2d (p);
12603       orc_program_set_name (p, "orc_avg2_32xn_u8");
12604       orc_program_set_backup_function (p, _backup_orc_avg2_32xn_u8);
12605       orc_program_add_destination (p, 1, "d1");
12606       orc_program_add_source (p, 1, "s1");
12607       orc_program_add_source (p, 1, "s2");
12608
12609       orc_program_append_2 (p, "avgub", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_S2, ORC_VAR_D1);
12610
12611       result = orc_program_compile (p);
12612     }
12613     p_inited = TRUE;
12614     orc_once_mutex_unlock ();
12615   }
12616   ex->program = p;
12617
12618   ex->n = 32;
12619   ORC_EXECUTOR_M(ex) = m;
12620   ex->arrays[ORC_VAR_D1] = d1;
12621   ex->params[ORC_VAR_D1] = d1_stride;
12622   ex->arrays[ORC_VAR_S1] = (void *)s1;
12623   ex->params[ORC_VAR_S1] = s1_stride;
12624   ex->arrays[ORC_VAR_S2] = (void *)s2;
12625   ex->params[ORC_VAR_S2] = s2_stride;
12626
12627   func = p->code_exec;
12628   func (ex);
12629 }
12630 #endif
12631
12632
12633 /* orc_avg2_nxm_u8 */
12634 #ifdef DISABLE_ORC
12635 void
12636 orc_avg2_nxm_u8 (uint8_t * d1, int d1_stride, const uint8_t * s1, int s1_stride, const uint8_t * s2, int s2_stride, int n, int m){
12637   int i;
12638   int j;
12639   orc_int8 * ORC_RESTRICT ptr0;
12640   const orc_int8 * ORC_RESTRICT ptr4;
12641   const orc_int8 * ORC_RESTRICT ptr5;
12642   orc_int8 var32;
12643   orc_int8 var33;
12644   orc_int8 var34;
12645
12646   for (j = 0; j < m; j++) {
12647     ptr0 = ORC_PTR_OFFSET(d1, d1_stride * j);
12648     ptr4 = ORC_PTR_OFFSET(s1, s1_stride * j);
12649     ptr5 = ORC_PTR_OFFSET(s2, s2_stride * j);
12650
12651
12652     for (i = 0; i < n; i++) {
12653       /* 0: loadb */
12654       var32 = ptr4[i];
12655       /* 1: loadb */
12656       var33 = ptr5[i];
12657       /* 2: avgub */
12658       var34 = ((orc_uint8)var32 + (orc_uint8)var33 + 1)>>1;
12659       /* 3: storeb */
12660       ptr0[i] = var34;
12661     }
12662   }
12663
12664 }
12665
12666 #else
12667 static void
12668 _backup_orc_avg2_nxm_u8 (OrcExecutor * ORC_RESTRICT ex)
12669 {
12670   int i;
12671   int j;
12672   int n = ex->n;
12673   int m = ex->params[ORC_VAR_A1];
12674   orc_int8 * ORC_RESTRICT ptr0;
12675   const orc_int8 * ORC_RESTRICT ptr4;
12676   const orc_int8 * ORC_RESTRICT ptr5;
12677   orc_int8 var32;
12678   orc_int8 var33;
12679   orc_int8 var34;
12680
12681   for (j = 0; j < m; j++) {
12682     ptr0 = ORC_PTR_OFFSET(ex->arrays[0], ex->params[0] * j);
12683     ptr4 = ORC_PTR_OFFSET(ex->arrays[4], ex->params[4] * j);
12684     ptr5 = ORC_PTR_OFFSET(ex->arrays[5], ex->params[5] * j);
12685
12686
12687     for (i = 0; i < n; i++) {
12688       /* 0: loadb */
12689       var32 = ptr4[i];
12690       /* 1: loadb */
12691       var33 = ptr5[i];
12692       /* 2: avgub */
12693       var34 = ((orc_uint8)var32 + (orc_uint8)var33 + 1)>>1;
12694       /* 3: storeb */
12695       ptr0[i] = var34;
12696     }
12697   }
12698
12699 }
12700
12701 void
12702 orc_avg2_nxm_u8 (uint8_t * d1, int d1_stride, const uint8_t * s1, int s1_stride, const uint8_t * s2, int s2_stride, int n, int m)
12703 {
12704   OrcExecutor _ex, *ex = &_ex;
12705   static int p_inited = 0;
12706   static OrcProgram *p = 0;
12707   void (*func) (OrcExecutor *);
12708
12709   if (!p_inited) {
12710     orc_once_mutex_lock ();
12711     if (!p_inited) {
12712       OrcCompileResult result;
12713
12714       p = orc_program_new ();
12715       orc_program_set_2d (p);
12716       orc_program_set_name (p, "orc_avg2_nxm_u8");
12717       orc_program_set_backup_function (p, _backup_orc_avg2_nxm_u8);
12718       orc_program_add_destination (p, 1, "d1");
12719       orc_program_add_source (p, 1, "s1");
12720       orc_program_add_source (p, 1, "s2");
12721
12722       orc_program_append_2 (p, "avgub", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_S2, ORC_VAR_D1);
12723
12724       result = orc_program_compile (p);
12725     }
12726     p_inited = TRUE;
12727     orc_once_mutex_unlock ();
12728   }
12729   ex->program = p;
12730
12731   ex->n = n;
12732   ORC_EXECUTOR_M(ex) = m;
12733   ex->arrays[ORC_VAR_D1] = d1;
12734   ex->params[ORC_VAR_D1] = d1_stride;
12735   ex->arrays[ORC_VAR_S1] = (void *)s1;
12736   ex->params[ORC_VAR_S1] = s1_stride;
12737   ex->arrays[ORC_VAR_S2] = (void *)s2;
12738   ex->params[ORC_VAR_S2] = s2_stride;
12739
12740   func = p->code_exec;
12741   func (ex);
12742 }
12743 #endif
12744
12745
12746 /* orc_combine4_8xn_u8 */
12747 #ifdef DISABLE_ORC
12748 void
12749 orc_combine4_8xn_u8 (uint8_t * d1, int d1_stride, const uint8_t * s1, int s1_stride, const uint8_t * s2, int s2_stride, const uint8_t * s3, int s3_stride, const uint8_t * s4, int s4_stride, int p1, int p2, int p3, int p4, int m){
12750   int i;
12751   int j;
12752   int n = 8;
12753   orc_int8 * ORC_RESTRICT ptr0;
12754   const orc_int8 * ORC_RESTRICT ptr4;
12755   const orc_int8 * ORC_RESTRICT ptr5;
12756   const orc_int8 * ORC_RESTRICT ptr6;
12757   const orc_int8 * ORC_RESTRICT ptr7;
12758   orc_int8 var34;
12759   orc_union16 var35;
12760   orc_int8 var36;
12761   orc_union16 var37;
12762   orc_int8 var38;
12763   orc_union16 var39;
12764   orc_int8 var40;
12765   orc_union16 var41;
12766   orc_union16 var42;
12767   orc_int8 var43;
12768   orc_union16 var44;
12769   orc_union16 var45;
12770   orc_union16 var46;
12771   orc_union16 var47;
12772   orc_union16 var48;
12773   orc_union16 var49;
12774   orc_union16 var50;
12775   orc_union16 var51;
12776   orc_union16 var52;
12777   orc_union16 var53;
12778   orc_union16 var54;
12779   orc_union16 var55;
12780
12781   for (j = 0; j < m; j++) {
12782     ptr0 = ORC_PTR_OFFSET(d1, d1_stride * j);
12783     ptr4 = ORC_PTR_OFFSET(s1, s1_stride * j);
12784     ptr5 = ORC_PTR_OFFSET(s2, s2_stride * j);
12785     ptr6 = ORC_PTR_OFFSET(s3, s3_stride * j);
12786     ptr7 = ORC_PTR_OFFSET(s4, s4_stride * j);
12787
12788       /* 2: loadpw */
12789         var35.i = p1;
12790       /* 6: loadpw */
12791         var37.i = p2;
12792       /* 11: loadpw */
12793         var39.i = p3;
12794       /* 16: loadpw */
12795         var41.i = p4;
12796       /* 19: loadpw */
12797         var42.i = 0x00000008; /* 8 or 3.95253e-323f */
12798
12799     for (i = 0; i < n; i++) {
12800       /* 0: loadb */
12801       var34 = ptr4[i];
12802       /* 1: convubw */
12803       var44.i = (orc_uint8)var34;
12804       /* 3: mullw */
12805       var45.i = (var44.i * var35.i) & 0xffff;
12806       /* 4: loadb */
12807       var36 = ptr5[i];
12808       /* 5: convubw */
12809       var46.i = (orc_uint8)var36;
12810       /* 7: mullw */
12811       var47.i = (var46.i * var37.i) & 0xffff;
12812       /* 8: addw */
12813       var48.i = var45.i + var47.i;
12814       /* 9: loadb */
12815       var38 = ptr6[i];
12816       /* 10: convubw */
12817       var49.i = (orc_uint8)var38;
12818       /* 12: mullw */
12819       var50.i = (var49.i * var39.i) & 0xffff;
12820       /* 13: addw */
12821       var51.i = var48.i + var50.i;
12822       /* 14: loadb */
12823       var40 = ptr7[i];
12824       /* 15: convubw */
12825       var52.i = (orc_uint8)var40;
12826       /* 17: mullw */
12827       var53.i = (var52.i * var41.i) & 0xffff;
12828       /* 18: addw */
12829       var54.i = var51.i + var53.i;
12830       /* 20: addw */
12831       var55.i = var54.i + var42.i;
12832       /* 21: convsuswb */
12833       var43 = ORC_CLAMP_UB(var55.i);
12834       /* 22: storeb */
12835       ptr0[i] = var43;
12836     }
12837   }
12838
12839 }
12840
12841 #else
12842 static void
12843 _backup_orc_combine4_8xn_u8 (OrcExecutor * ORC_RESTRICT ex)
12844 {
12845   int i;
12846   int j;
12847   int n = 8;
12848   int m = ex->params[ORC_VAR_A1];
12849   orc_int8 * ORC_RESTRICT ptr0;
12850   const orc_int8 * ORC_RESTRICT ptr4;
12851   const orc_int8 * ORC_RESTRICT ptr5;
12852   const orc_int8 * ORC_RESTRICT ptr6;
12853   const orc_int8 * ORC_RESTRICT ptr7;
12854   orc_int8 var34;
12855   orc_union16 var35;
12856   orc_int8 var36;
12857   orc_union16 var37;
12858   orc_int8 var38;
12859   orc_union16 var39;
12860   orc_int8 var40;
12861   orc_union16 var41;
12862   orc_union16 var42;
12863   orc_int8 var43;
12864   orc_union16 var44;
12865   orc_union16 var45;
12866   orc_union16 var46;
12867   orc_union16 var47;
12868   orc_union16 var48;
12869   orc_union16 var49;
12870   orc_union16 var50;
12871   orc_union16 var51;
12872   orc_union16 var52;
12873   orc_union16 var53;
12874   orc_union16 var54;
12875   orc_union16 var55;
12876
12877   for (j = 0; j < m; j++) {
12878     ptr0 = ORC_PTR_OFFSET(ex->arrays[0], ex->params[0] * j);
12879     ptr4 = ORC_PTR_OFFSET(ex->arrays[4], ex->params[4] * j);
12880     ptr5 = ORC_PTR_OFFSET(ex->arrays[5], ex->params[5] * j);
12881     ptr6 = ORC_PTR_OFFSET(ex->arrays[6], ex->params[6] * j);
12882     ptr7 = ORC_PTR_OFFSET(ex->arrays[7], ex->params[7] * j);
12883
12884       /* 2: loadpw */
12885         var35.i = ex->params[24];
12886       /* 6: loadpw */
12887         var37.i = ex->params[25];
12888       /* 11: loadpw */
12889         var39.i = ex->params[26];
12890       /* 16: loadpw */
12891         var41.i = ex->params[27];
12892       /* 19: loadpw */
12893         var42.i = 0x00000008; /* 8 or 3.95253e-323f */
12894
12895     for (i = 0; i < n; i++) {
12896       /* 0: loadb */
12897       var34 = ptr4[i];
12898       /* 1: convubw */
12899       var44.i = (orc_uint8)var34;
12900       /* 3: mullw */
12901       var45.i = (var44.i * var35.i) & 0xffff;
12902       /* 4: loadb */
12903       var36 = ptr5[i];
12904       /* 5: convubw */
12905       var46.i = (orc_uint8)var36;
12906       /* 7: mullw */
12907       var47.i = (var46.i * var37.i) & 0xffff;
12908       /* 8: addw */
12909       var48.i = var45.i + var47.i;
12910       /* 9: loadb */
12911       var38 = ptr6[i];
12912       /* 10: convubw */
12913       var49.i = (orc_uint8)var38;
12914       /* 12: mullw */
12915       var50.i = (var49.i * var39.i) & 0xffff;
12916       /* 13: addw */
12917       var51.i = var48.i + var50.i;
12918       /* 14: loadb */
12919       var40 = ptr7[i];
12920       /* 15: convubw */
12921       var52.i = (orc_uint8)var40;
12922       /* 17: mullw */
12923       var53.i = (var52.i * var41.i) & 0xffff;
12924       /* 18: addw */
12925       var54.i = var51.i + var53.i;
12926       /* 20: addw */
12927       var55.i = var54.i + var42.i;
12928       /* 21: convsuswb */
12929       var43 = ORC_CLAMP_UB(var55.i);
12930       /* 22: storeb */
12931       ptr0[i] = var43;
12932     }
12933   }
12934
12935 }
12936
12937 void
12938 orc_combine4_8xn_u8 (uint8_t * d1, int d1_stride, const uint8_t * s1, int s1_stride, const uint8_t * s2, int s2_stride, const uint8_t * s3, int s3_stride, const uint8_t * s4, int s4_stride, int p1, int p2, int p3, int p4, int m)
12939 {
12940   OrcExecutor _ex, *ex = &_ex;
12941   static int p_inited = 0;
12942   static OrcProgram *p = 0;
12943   void (*func) (OrcExecutor *);
12944
12945   if (!p_inited) {
12946     orc_once_mutex_lock ();
12947     if (!p_inited) {
12948       OrcCompileResult result;
12949
12950       p = orc_program_new ();
12951       orc_program_set_constant_n (p, 8);
12952       orc_program_set_2d (p);
12953       orc_program_set_name (p, "orc_combine4_8xn_u8");
12954       orc_program_set_backup_function (p, _backup_orc_combine4_8xn_u8);
12955       orc_program_add_destination (p, 1, "d1");
12956       orc_program_add_source (p, 1, "s1");
12957       orc_program_add_source (p, 1, "s2");
12958       orc_program_add_source (p, 1, "s3");
12959       orc_program_add_source (p, 1, "s4");
12960       orc_program_add_constant (p, 4, 0x00000008, "c1");
12961       orc_program_add_parameter (p, 2, "p1");
12962       orc_program_add_parameter (p, 2, "p2");
12963       orc_program_add_parameter (p, 2, "p3");
12964       orc_program_add_parameter (p, 2, "p4");
12965       orc_program_add_temporary (p, 2, "t1");
12966       orc_program_add_temporary (p, 2, "t2");
12967
12968       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
12969       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1);
12970       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_D1, ORC_VAR_D1);
12971       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P2, ORC_VAR_D1);
12972       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1);
12973       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S3, ORC_VAR_D1, ORC_VAR_D1);
12974       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P3, ORC_VAR_D1);
12975       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1);
12976       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S4, ORC_VAR_D1, ORC_VAR_D1);
12977       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P4, ORC_VAR_D1);
12978       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1);
12979       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_D1);
12980       orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
12981
12982       result = orc_program_compile (p);
12983     }
12984     p_inited = TRUE;
12985     orc_once_mutex_unlock ();
12986   }
12987   ex->program = p;
12988
12989   ex->n = 8;
12990   ORC_EXECUTOR_M(ex) = m;
12991   ex->arrays[ORC_VAR_D1] = d1;
12992   ex->params[ORC_VAR_D1] = d1_stride;
12993   ex->arrays[ORC_VAR_S1] = (void *)s1;
12994   ex->params[ORC_VAR_S1] = s1_stride;
12995   ex->arrays[ORC_VAR_S2] = (void *)s2;
12996   ex->params[ORC_VAR_S2] = s2_stride;
12997   ex->arrays[ORC_VAR_S3] = (void *)s3;
12998   ex->params[ORC_VAR_S3] = s3_stride;
12999   ex->arrays[ORC_VAR_S4] = (void *)s4;
13000   ex->params[ORC_VAR_S4] = s4_stride;
13001   ex->params[ORC_VAR_P1] = p1;
13002   ex->params[ORC_VAR_P2] = p2;
13003   ex->params[ORC_VAR_P3] = p3;
13004   ex->params[ORC_VAR_P4] = p4;
13005
13006   func = p->code_exec;
13007   func (ex);
13008 }
13009 #endif
13010
13011
13012 /* orc_combine4_12xn_u8 */
13013 #ifdef DISABLE_ORC
13014 void
13015 orc_combine4_12xn_u8 (uint8_t * d1, int d1_stride, const uint8_t * s1, int s1_stride, const uint8_t * s2, int s2_stride, const uint8_t * s3, int s3_stride, const uint8_t * s4, int s4_stride, int p1, int p2, int p3, int p4, int m){
13016   int i;
13017   int j;
13018   int n = 12;
13019   orc_int8 * ORC_RESTRICT ptr0;
13020   const orc_int8 * ORC_RESTRICT ptr4;
13021   const orc_int8 * ORC_RESTRICT ptr5;
13022   const orc_int8 * ORC_RESTRICT ptr6;
13023   const orc_int8 * ORC_RESTRICT ptr7;
13024   orc_int8 var34;
13025   orc_union16 var35;
13026   orc_int8 var36;
13027   orc_union16 var37;
13028   orc_int8 var38;
13029   orc_union16 var39;
13030   orc_int8 var40;
13031   orc_union16 var41;
13032   orc_union16 var42;
13033   orc_int8 var43;
13034   orc_union16 var44;
13035   orc_union16 var45;
13036   orc_union16 var46;
13037   orc_union16 var47;
13038   orc_union16 var48;
13039   orc_union16 var49;
13040   orc_union16 var50;
13041   orc_union16 var51;
13042   orc_union16 var52;
13043   orc_union16 var53;
13044   orc_union16 var54;
13045   orc_union16 var55;
13046
13047   for (j = 0; j < m; j++) {
13048     ptr0 = ORC_PTR_OFFSET(d1, d1_stride * j);
13049     ptr4 = ORC_PTR_OFFSET(s1, s1_stride * j);
13050     ptr5 = ORC_PTR_OFFSET(s2, s2_stride * j);
13051     ptr6 = ORC_PTR_OFFSET(s3, s3_stride * j);
13052     ptr7 = ORC_PTR_OFFSET(s4, s4_stride * j);
13053
13054       /* 2: loadpw */
13055         var35.i = p1;
13056       /* 6: loadpw */
13057         var37.i = p2;
13058       /* 11: loadpw */
13059         var39.i = p3;
13060       /* 16: loadpw */
13061         var41.i = p4;
13062       /* 19: loadpw */
13063         var42.i = 0x00000008; /* 8 or 3.95253e-323f */
13064
13065     for (i = 0; i < n; i++) {
13066       /* 0: loadb */
13067       var34 = ptr4[i];
13068       /* 1: convubw */
13069       var44.i = (orc_uint8)var34;
13070       /* 3: mullw */
13071       var45.i = (var44.i * var35.i) & 0xffff;
13072       /* 4: loadb */
13073       var36 = ptr5[i];
13074       /* 5: convubw */
13075       var46.i = (orc_uint8)var36;
13076       /* 7: mullw */
13077       var47.i = (var46.i * var37.i) & 0xffff;
13078       /* 8: addw */
13079       var48.i = var45.i + var47.i;
13080       /* 9: loadb */
13081       var38 = ptr6[i];
13082       /* 10: convubw */
13083       var49.i = (orc_uint8)var38;
13084       /* 12: mullw */
13085       var50.i = (var49.i * var39.i) & 0xffff;
13086       /* 13: addw */
13087       var51.i = var48.i + var50.i;
13088       /* 14: loadb */
13089       var40 = ptr7[i];
13090       /* 15: convubw */
13091       var52.i = (orc_uint8)var40;
13092       /* 17: mullw */
13093       var53.i = (var52.i * var41.i) & 0xffff;
13094       /* 18: addw */
13095       var54.i = var51.i + var53.i;
13096       /* 20: addw */
13097       var55.i = var54.i + var42.i;
13098       /* 21: convsuswb */
13099       var43 = ORC_CLAMP_UB(var55.i);
13100       /* 22: storeb */
13101       ptr0[i] = var43;
13102     }
13103   }
13104
13105 }
13106
13107 #else
13108 static void
13109 _backup_orc_combine4_12xn_u8 (OrcExecutor * ORC_RESTRICT ex)
13110 {
13111   int i;
13112   int j;
13113   int n = 12;
13114   int m = ex->params[ORC_VAR_A1];
13115   orc_int8 * ORC_RESTRICT ptr0;
13116   const orc_int8 * ORC_RESTRICT ptr4;
13117   const orc_int8 * ORC_RESTRICT ptr5;
13118   const orc_int8 * ORC_RESTRICT ptr6;
13119   const orc_int8 * ORC_RESTRICT ptr7;
13120   orc_int8 var34;
13121   orc_union16 var35;
13122   orc_int8 var36;
13123   orc_union16 var37;
13124   orc_int8 var38;
13125   orc_union16 var39;
13126   orc_int8 var40;
13127   orc_union16 var41;
13128   orc_union16 var42;
13129   orc_int8 var43;
13130   orc_union16 var44;
13131   orc_union16 var45;
13132   orc_union16 var46;
13133   orc_union16 var47;
13134   orc_union16 var48;
13135   orc_union16 var49;
13136   orc_union16 var50;
13137   orc_union16 var51;
13138   orc_union16 var52;
13139   orc_union16 var53;
13140   orc_union16 var54;
13141   orc_union16 var55;
13142
13143   for (j = 0; j < m; j++) {
13144     ptr0 = ORC_PTR_OFFSET(ex->arrays[0], ex->params[0] * j);
13145     ptr4 = ORC_PTR_OFFSET(ex->arrays[4], ex->params[4] * j);
13146     ptr5 = ORC_PTR_OFFSET(ex->arrays[5], ex->params[5] * j);
13147     ptr6 = ORC_PTR_OFFSET(ex->arrays[6], ex->params[6] * j);
13148     ptr7 = ORC_PTR_OFFSET(ex->arrays[7], ex->params[7] * j);
13149
13150       /* 2: loadpw */
13151         var35.i = ex->params[24];
13152       /* 6: loadpw */
13153         var37.i = ex->params[25];
13154       /* 11: loadpw */
13155         var39.i = ex->params[26];
13156       /* 16: loadpw */
13157         var41.i = ex->params[27];
13158       /* 19: loadpw */
13159         var42.i = 0x00000008; /* 8 or 3.95253e-323f */
13160
13161     for (i = 0; i < n; i++) {
13162       /* 0: loadb */
13163       var34 = ptr4[i];
13164       /* 1: convubw */
13165       var44.i = (orc_uint8)var34;
13166       /* 3: mullw */
13167       var45.i = (var44.i * var35.i) & 0xffff;
13168       /* 4: loadb */
13169       var36 = ptr5[i];
13170       /* 5: convubw */
13171       var46.i = (orc_uint8)var36;
13172       /* 7: mullw */
13173       var47.i = (var46.i * var37.i) & 0xffff;
13174       /* 8: addw */
13175       var48.i = var45.i + var47.i;
13176       /* 9: loadb */
13177       var38 = ptr6[i];
13178       /* 10: convubw */
13179       var49.i = (orc_uint8)var38;
13180       /* 12: mullw */
13181       var50.i = (var49.i * var39.i) & 0xffff;
13182       /* 13: addw */
13183       var51.i = var48.i + var50.i;
13184       /* 14: loadb */
13185       var40 = ptr7[i];
13186       /* 15: convubw */
13187       var52.i = (orc_uint8)var40;
13188       /* 17: mullw */
13189       var53.i = (var52.i * var41.i) & 0xffff;
13190       /* 18: addw */
13191       var54.i = var51.i + var53.i;
13192       /* 20: addw */
13193       var55.i = var54.i + var42.i;
13194       /* 21: convsuswb */
13195       var43 = ORC_CLAMP_UB(var55.i);
13196       /* 22: storeb */
13197       ptr0[i] = var43;
13198     }
13199   }
13200
13201 }
13202
13203 void
13204 orc_combine4_12xn_u8 (uint8_t * d1, int d1_stride, const uint8_t * s1, int s1_stride, const uint8_t * s2, int s2_stride, const uint8_t * s3, int s3_stride, const uint8_t * s4, int s4_stride, int p1, int p2, int p3, int p4, int m)
13205 {
13206   OrcExecutor _ex, *ex = &_ex;
13207   static int p_inited = 0;
13208   static OrcProgram *p = 0;
13209   void (*func) (OrcExecutor *);
13210
13211   if (!p_inited) {
13212     orc_once_mutex_lock ();
13213     if (!p_inited) {
13214       OrcCompileResult result;
13215
13216       p = orc_program_new ();
13217       orc_program_set_constant_n (p, 12);
13218       orc_program_set_2d (p);
13219       orc_program_set_name (p, "orc_combine4_12xn_u8");
13220       orc_program_set_backup_function (p, _backup_orc_combine4_12xn_u8);
13221       orc_program_add_destination (p, 1, "d1");
13222       orc_program_add_source (p, 1, "s1");
13223       orc_program_add_source (p, 1, "s2");
13224       orc_program_add_source (p, 1, "s3");
13225       orc_program_add_source (p, 1, "s4");
13226       orc_program_add_constant (p, 4, 0x00000008, "c1");
13227       orc_program_add_parameter (p, 2, "p1");
13228       orc_program_add_parameter (p, 2, "p2");
13229       orc_program_add_parameter (p, 2, "p3");
13230       orc_program_add_parameter (p, 2, "p4");
13231       orc_program_add_temporary (p, 2, "t1");
13232       orc_program_add_temporary (p, 2, "t2");
13233
13234       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
13235       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1);
13236       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_D1, ORC_VAR_D1);
13237       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P2, ORC_VAR_D1);
13238       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1);
13239       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S3, ORC_VAR_D1, ORC_VAR_D1);
13240       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P3, ORC_VAR_D1);
13241       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1);
13242       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S4, ORC_VAR_D1, ORC_VAR_D1);
13243       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P4, ORC_VAR_D1);
13244       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1);
13245       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_D1);
13246       orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
13247
13248       result = orc_program_compile (p);
13249     }
13250     p_inited = TRUE;
13251     orc_once_mutex_unlock ();
13252   }
13253   ex->program = p;
13254
13255   ex->n = 12;
13256   ORC_EXECUTOR_M(ex) = m;
13257   ex->arrays[ORC_VAR_D1] = d1;
13258   ex->params[ORC_VAR_D1] = d1_stride;
13259   ex->arrays[ORC_VAR_S1] = (void *)s1;
13260   ex->params[ORC_VAR_S1] = s1_stride;
13261   ex->arrays[ORC_VAR_S2] = (void *)s2;
13262   ex->params[ORC_VAR_S2] = s2_stride;
13263   ex->arrays[ORC_VAR_S3] = (void *)s3;
13264   ex->params[ORC_VAR_S3] = s3_stride;
13265   ex->arrays[ORC_VAR_S4] = (void *)s4;
13266   ex->params[ORC_VAR_S4] = s4_stride;
13267   ex->params[ORC_VAR_P1] = p1;
13268   ex->params[ORC_VAR_P2] = p2;
13269   ex->params[ORC_VAR_P3] = p3;
13270   ex->params[ORC_VAR_P4] = p4;
13271
13272   func = p->code_exec;
13273   func (ex);
13274 }
13275 #endif
13276
13277
13278 /* orc_combine4_16xn_u8 */
13279 #ifdef DISABLE_ORC
13280 void
13281 orc_combine4_16xn_u8 (uint8_t * d1, int d1_stride, const uint8_t * s1, int s1_stride, const uint8_t * s2, int s2_stride, const uint8_t * s3, int s3_stride, const uint8_t * s4, int s4_stride, int p1, int p2, int p3, int p4, int m){
13282   int i;
13283   int j;
13284   int n = 16;
13285   orc_int8 * ORC_RESTRICT ptr0;
13286   const orc_int8 * ORC_RESTRICT ptr4;
13287   const orc_int8 * ORC_RESTRICT ptr5;
13288   const orc_int8 * ORC_RESTRICT ptr6;
13289   const orc_int8 * ORC_RESTRICT ptr7;
13290   orc_int8 var34;
13291   orc_union16 var35;
13292   orc_int8 var36;
13293   orc_union16 var37;
13294   orc_int8 var38;
13295   orc_union16 var39;
13296   orc_int8 var40;
13297   orc_union16 var41;
13298   orc_union16 var42;
13299   orc_int8 var43;
13300   orc_union16 var44;
13301   orc_union16 var45;
13302   orc_union16 var46;
13303   orc_union16 var47;
13304   orc_union16 var48;
13305   orc_union16 var49;
13306   orc_union16 var50;
13307   orc_union16 var51;
13308   orc_union16 var52;
13309   orc_union16 var53;
13310   orc_union16 var54;
13311   orc_union16 var55;
13312
13313   for (j = 0; j < m; j++) {
13314     ptr0 = ORC_PTR_OFFSET(d1, d1_stride * j);
13315     ptr4 = ORC_PTR_OFFSET(s1, s1_stride * j);
13316     ptr5 = ORC_PTR_OFFSET(s2, s2_stride * j);
13317     ptr6 = ORC_PTR_OFFSET(s3, s3_stride * j);
13318     ptr7 = ORC_PTR_OFFSET(s4, s4_stride * j);
13319
13320       /* 2: loadpw */
13321         var35.i = p1;
13322       /* 6: loadpw */
13323         var37.i = p2;
13324       /* 11: loadpw */
13325         var39.i = p3;
13326       /* 16: loadpw */
13327         var41.i = p4;
13328       /* 19: loadpw */
13329         var42.i = 0x00000008; /* 8 or 3.95253e-323f */
13330
13331     for (i = 0; i < n; i++) {
13332       /* 0: loadb */
13333       var34 = ptr4[i];
13334       /* 1: convubw */
13335       var44.i = (orc_uint8)var34;
13336       /* 3: mullw */
13337       var45.i = (var44.i * var35.i) & 0xffff;
13338       /* 4: loadb */
13339       var36 = ptr5[i];
13340       /* 5: convubw */
13341       var46.i = (orc_uint8)var36;
13342       /* 7: mullw */
13343       var47.i = (var46.i * var37.i) & 0xffff;
13344       /* 8: addw */
13345       var48.i = var45.i + var47.i;
13346       /* 9: loadb */
13347       var38 = ptr6[i];
13348       /* 10: convubw */
13349       var49.i = (orc_uint8)var38;
13350       /* 12: mullw */
13351       var50.i = (var49.i * var39.i) & 0xffff;
13352       /* 13: addw */
13353       var51.i = var48.i + var50.i;
13354       /* 14: loadb */
13355       var40 = ptr7[i];
13356       /* 15: convubw */
13357       var52.i = (orc_uint8)var40;
13358       /* 17: mullw */
13359       var53.i = (var52.i * var41.i) & 0xffff;
13360       /* 18: addw */
13361       var54.i = var51.i + var53.i;
13362       /* 20: addw */
13363       var55.i = var54.i + var42.i;
13364       /* 21: convsuswb */
13365       var43 = ORC_CLAMP_UB(var55.i);
13366       /* 22: storeb */
13367       ptr0[i] = var43;
13368     }
13369   }
13370
13371 }
13372
13373 #else
13374 static void
13375 _backup_orc_combine4_16xn_u8 (OrcExecutor * ORC_RESTRICT ex)
13376 {
13377   int i;
13378   int j;
13379   int n = 16;
13380   int m = ex->params[ORC_VAR_A1];
13381   orc_int8 * ORC_RESTRICT ptr0;
13382   const orc_int8 * ORC_RESTRICT ptr4;
13383   const orc_int8 * ORC_RESTRICT ptr5;
13384   const orc_int8 * ORC_RESTRICT ptr6;
13385   const orc_int8 * ORC_RESTRICT ptr7;
13386   orc_int8 var34;
13387   orc_union16 var35;
13388   orc_int8 var36;
13389   orc_union16 var37;
13390   orc_int8 var38;
13391   orc_union16 var39;
13392   orc_int8 var40;
13393   orc_union16 var41;
13394   orc_union16 var42;
13395   orc_int8 var43;
13396   orc_union16 var44;
13397   orc_union16 var45;
13398   orc_union16 var46;
13399   orc_union16 var47;
13400   orc_union16 var48;
13401   orc_union16 var49;
13402   orc_union16 var50;
13403   orc_union16 var51;
13404   orc_union16 var52;
13405   orc_union16 var53;
13406   orc_union16 var54;
13407   orc_union16 var55;
13408
13409   for (j = 0; j < m; j++) {
13410     ptr0 = ORC_PTR_OFFSET(ex->arrays[0], ex->params[0] * j);
13411     ptr4 = ORC_PTR_OFFSET(ex->arrays[4], ex->params[4] * j);
13412     ptr5 = ORC_PTR_OFFSET(ex->arrays[5], ex->params[5] * j);
13413     ptr6 = ORC_PTR_OFFSET(ex->arrays[6], ex->params[6] * j);
13414     ptr7 = ORC_PTR_OFFSET(ex->arrays[7], ex->params[7] * j);
13415
13416       /* 2: loadpw */
13417         var35.i = ex->params[24];
13418       /* 6: loadpw */
13419         var37.i = ex->params[25];
13420       /* 11: loadpw */
13421         var39.i = ex->params[26];
13422       /* 16: loadpw */
13423         var41.i = ex->params[27];
13424       /* 19: loadpw */
13425         var42.i = 0x00000008; /* 8 or 3.95253e-323f */
13426
13427     for (i = 0; i < n; i++) {
13428       /* 0: loadb */
13429       var34 = ptr4[i];
13430       /* 1: convubw */
13431       var44.i = (orc_uint8)var34;
13432       /* 3: mullw */
13433       var45.i = (var44.i * var35.i) & 0xffff;
13434       /* 4: loadb */
13435       var36 = ptr5[i];
13436       /* 5: convubw */
13437       var46.i = (orc_uint8)var36;
13438       /* 7: mullw */
13439       var47.i = (var46.i * var37.i) & 0xffff;
13440       /* 8: addw */
13441       var48.i = var45.i + var47.i;
13442       /* 9: loadb */
13443       var38 = ptr6[i];
13444       /* 10: convubw */
13445       var49.i = (orc_uint8)var38;
13446       /* 12: mullw */
13447       var50.i = (var49.i * var39.i) & 0xffff;
13448       /* 13: addw */
13449       var51.i = var48.i + var50.i;
13450       /* 14: loadb */
13451       var40 = ptr7[i];
13452       /* 15: convubw */
13453       var52.i = (orc_uint8)var40;
13454       /* 17: mullw */
13455       var53.i = (var52.i * var41.i) & 0xffff;
13456       /* 18: addw */
13457       var54.i = var51.i + var53.i;
13458       /* 20: addw */
13459       var55.i = var54.i + var42.i;
13460       /* 21: convsuswb */
13461       var43 = ORC_CLAMP_UB(var55.i);
13462       /* 22: storeb */
13463       ptr0[i] = var43;
13464     }
13465   }
13466
13467 }
13468
13469 void
13470 orc_combine4_16xn_u8 (uint8_t * d1, int d1_stride, const uint8_t * s1, int s1_stride, const uint8_t * s2, int s2_stride, const uint8_t * s3, int s3_stride, const uint8_t * s4, int s4_stride, int p1, int p2, int p3, int p4, int m)
13471 {
13472   OrcExecutor _ex, *ex = &_ex;
13473   static int p_inited = 0;
13474   static OrcProgram *p = 0;
13475   void (*func) (OrcExecutor *);
13476
13477   if (!p_inited) {
13478     orc_once_mutex_lock ();
13479     if (!p_inited) {
13480       OrcCompileResult result;
13481
13482       p = orc_program_new ();
13483       orc_program_set_constant_n (p, 16);
13484       orc_program_set_2d (p);
13485       orc_program_set_name (p, "orc_combine4_16xn_u8");
13486       orc_program_set_backup_function (p, _backup_orc_combine4_16xn_u8);
13487       orc_program_add_destination (p, 1, "d1");
13488       orc_program_add_source (p, 1, "s1");
13489       orc_program_add_source (p, 1, "s2");
13490       orc_program_add_source (p, 1, "s3");
13491       orc_program_add_source (p, 1, "s4");
13492       orc_program_add_constant (p, 4, 0x00000008, "c1");
13493       orc_program_add_parameter (p, 2, "p1");
13494       orc_program_add_parameter (p, 2, "p2");
13495       orc_program_add_parameter (p, 2, "p3");
13496       orc_program_add_parameter (p, 2, "p4");
13497       orc_program_add_temporary (p, 2, "t1");
13498       orc_program_add_temporary (p, 2, "t2");
13499
13500       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
13501       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1);
13502       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_D1, ORC_VAR_D1);
13503       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P2, ORC_VAR_D1);
13504       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1);
13505       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S3, ORC_VAR_D1, ORC_VAR_D1);
13506       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P3, ORC_VAR_D1);
13507       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1);
13508       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S4, ORC_VAR_D1, ORC_VAR_D1);
13509       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P4, ORC_VAR_D1);
13510       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1);
13511       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_D1);
13512       orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
13513
13514       result = orc_program_compile (p);
13515     }
13516     p_inited = TRUE;
13517     orc_once_mutex_unlock ();
13518   }
13519   ex->program = p;
13520
13521   ex->n = 16;
13522   ORC_EXECUTOR_M(ex) = m;
13523   ex->arrays[ORC_VAR_D1] = d1;
13524   ex->params[ORC_VAR_D1] = d1_stride;
13525   ex->arrays[ORC_VAR_S1] = (void *)s1;
13526   ex->params[ORC_VAR_S1] = s1_stride;
13527   ex->arrays[ORC_VAR_S2] = (void *)s2;
13528   ex->params[ORC_VAR_S2] = s2_stride;
13529   ex->arrays[ORC_VAR_S3] = (void *)s3;
13530   ex->params[ORC_VAR_S3] = s3_stride;
13531   ex->arrays[ORC_VAR_S4] = (void *)s4;
13532   ex->params[ORC_VAR_S4] = s4_stride;
13533   ex->params[ORC_VAR_P1] = p1;
13534   ex->params[ORC_VAR_P2] = p2;
13535   ex->params[ORC_VAR_P3] = p3;
13536   ex->params[ORC_VAR_P4] = p4;
13537
13538   func = p->code_exec;
13539   func (ex);
13540 }
13541 #endif
13542
13543
13544 /* orc_combine4_24xn_u8 */
13545 #ifdef DISABLE_ORC
13546 void
13547 orc_combine4_24xn_u8 (uint8_t * d1, int d1_stride, const uint8_t * s1, int s1_stride, const uint8_t * s2, int s2_stride, const uint8_t * s3, int s3_stride, const uint8_t * s4, int s4_stride, int p1, int p2, int p3, int p4, int m){
13548   int i;
13549   int j;
13550   int n = 24;
13551   orc_int8 * ORC_RESTRICT ptr0;
13552   const orc_int8 * ORC_RESTRICT ptr4;
13553   const orc_int8 * ORC_RESTRICT ptr5;
13554   const orc_int8 * ORC_RESTRICT ptr6;
13555   const orc_int8 * ORC_RESTRICT ptr7;
13556   orc_int8 var34;
13557   orc_union16 var35;
13558   orc_int8 var36;
13559   orc_union16 var37;
13560   orc_int8 var38;
13561   orc_union16 var39;
13562   orc_int8 var40;
13563   orc_union16 var41;
13564   orc_union16 var42;
13565   orc_int8 var43;
13566   orc_union16 var44;
13567   orc_union16 var45;
13568   orc_union16 var46;
13569   orc_union16 var47;
13570   orc_union16 var48;
13571   orc_union16 var49;
13572   orc_union16 var50;
13573   orc_union16 var51;
13574   orc_union16 var52;
13575   orc_union16 var53;
13576   orc_union16 var54;
13577   orc_union16 var55;
13578
13579   for (j = 0; j < m; j++) {
13580     ptr0 = ORC_PTR_OFFSET(d1, d1_stride * j);
13581     ptr4 = ORC_PTR_OFFSET(s1, s1_stride * j);
13582     ptr5 = ORC_PTR_OFFSET(s2, s2_stride * j);
13583     ptr6 = ORC_PTR_OFFSET(s3, s3_stride * j);
13584     ptr7 = ORC_PTR_OFFSET(s4, s4_stride * j);
13585
13586       /* 2: loadpw */
13587         var35.i = p1;
13588       /* 6: loadpw */
13589         var37.i = p2;
13590       /* 11: loadpw */
13591         var39.i = p3;
13592       /* 16: loadpw */
13593         var41.i = p4;
13594       /* 19: loadpw */
13595         var42.i = 0x00000008; /* 8 or 3.95253e-323f */
13596
13597     for (i = 0; i < n; i++) {
13598       /* 0: loadb */
13599       var34 = ptr4[i];
13600       /* 1: convubw */
13601       var44.i = (orc_uint8)var34;
13602       /* 3: mullw */
13603       var45.i = (var44.i * var35.i) & 0xffff;
13604       /* 4: loadb */
13605       var36 = ptr5[i];
13606       /* 5: convubw */
13607       var46.i = (orc_uint8)var36;
13608       /* 7: mullw */
13609       var47.i = (var46.i * var37.i) & 0xffff;
13610       /* 8: addw */
13611       var48.i = var45.i + var47.i;
13612       /* 9: loadb */
13613       var38 = ptr6[i];
13614       /* 10: convubw */
13615       var49.i = (orc_uint8)var38;
13616       /* 12: mullw */
13617       var50.i = (var49.i * var39.i) & 0xffff;
13618       /* 13: addw */
13619       var51.i = var48.i + var50.i;
13620       /* 14: loadb */
13621       var40 = ptr7[i];
13622       /* 15: convubw */
13623       var52.i = (orc_uint8)var40;
13624       /* 17: mullw */
13625       var53.i = (var52.i * var41.i) & 0xffff;
13626       /* 18: addw */
13627       var54.i = var51.i + var53.i;
13628       /* 20: addw */
13629       var55.i = var54.i + var42.i;
13630       /* 21: convsuswb */
13631       var43 = ORC_CLAMP_UB(var55.i);
13632       /* 22: storeb */
13633       ptr0[i] = var43;
13634     }
13635   }
13636
13637 }
13638
13639 #else
13640 static void
13641 _backup_orc_combine4_24xn_u8 (OrcExecutor * ORC_RESTRICT ex)
13642 {
13643   int i;
13644   int j;
13645   int n = 24;
13646   int m = ex->params[ORC_VAR_A1];
13647   orc_int8 * ORC_RESTRICT ptr0;
13648   const orc_int8 * ORC_RESTRICT ptr4;
13649   const orc_int8 * ORC_RESTRICT ptr5;
13650   const orc_int8 * ORC_RESTRICT ptr6;
13651   const orc_int8 * ORC_RESTRICT ptr7;
13652   orc_int8 var34;
13653   orc_union16 var35;
13654   orc_int8 var36;
13655   orc_union16 var37;
13656   orc_int8 var38;
13657   orc_union16 var39;
13658   orc_int8 var40;
13659   orc_union16 var41;
13660   orc_union16 var42;
13661   orc_int8 var43;
13662   orc_union16 var44;
13663   orc_union16 var45;
13664   orc_union16 var46;
13665   orc_union16 var47;
13666   orc_union16 var48;
13667   orc_union16 var49;
13668   orc_union16 var50;
13669   orc_union16 var51;
13670   orc_union16 var52;
13671   orc_union16 var53;
13672   orc_union16 var54;
13673   orc_union16 var55;
13674
13675   for (j = 0; j < m; j++) {
13676     ptr0 = ORC_PTR_OFFSET(ex->arrays[0], ex->params[0] * j);
13677     ptr4 = ORC_PTR_OFFSET(ex->arrays[4], ex->params[4] * j);
13678     ptr5 = ORC_PTR_OFFSET(ex->arrays[5], ex->params[5] * j);
13679     ptr6 = ORC_PTR_OFFSET(ex->arrays[6], ex->params[6] * j);
13680     ptr7 = ORC_PTR_OFFSET(ex->arrays[7], ex->params[7] * j);
13681
13682       /* 2: loadpw */
13683         var35.i = ex->params[24];
13684       /* 6: loadpw */
13685         var37.i = ex->params[25];
13686       /* 11: loadpw */
13687         var39.i = ex->params[26];
13688       /* 16: loadpw */
13689         var41.i = ex->params[27];
13690       /* 19: loadpw */
13691         var42.i = 0x00000008; /* 8 or 3.95253e-323f */
13692
13693     for (i = 0; i < n; i++) {
13694       /* 0: loadb */
13695       var34 = ptr4[i];
13696       /* 1: convubw */
13697       var44.i = (orc_uint8)var34;
13698       /* 3: mullw */
13699       var45.i = (var44.i * var35.i) & 0xffff;
13700       /* 4: loadb */
13701       var36 = ptr5[i];
13702       /* 5: convubw */
13703       var46.i = (orc_uint8)var36;
13704       /* 7: mullw */
13705       var47.i = (var46.i * var37.i) & 0xffff;
13706       /* 8: addw */
13707       var48.i = var45.i + var47.i;
13708       /* 9: loadb */
13709       var38 = ptr6[i];
13710       /* 10: convubw */
13711       var49.i = (orc_uint8)var38;
13712       /* 12: mullw */
13713       var50.i = (var49.i * var39.i) & 0xffff;
13714       /* 13: addw */
13715       var51.i = var48.i + var50.i;
13716       /* 14: loadb */
13717       var40 = ptr7[i];
13718       /* 15: convubw */
13719       var52.i = (orc_uint8)var40;
13720       /* 17: mullw */
13721       var53.i = (var52.i * var41.i) & 0xffff;
13722       /* 18: addw */
13723       var54.i = var51.i + var53.i;
13724       /* 20: addw */
13725       var55.i = var54.i + var42.i;
13726       /* 21: convsuswb */
13727       var43 = ORC_CLAMP_UB(var55.i);
13728       /* 22: storeb */
13729       ptr0[i] = var43;
13730     }
13731   }
13732
13733 }
13734
13735 void
13736 orc_combine4_24xn_u8 (uint8_t * d1, int d1_stride, const uint8_t * s1, int s1_stride, const uint8_t * s2, int s2_stride, const uint8_t * s3, int s3_stride, const uint8_t * s4, int s4_stride, int p1, int p2, int p3, int p4, int m)
13737 {
13738   OrcExecutor _ex, *ex = &_ex;
13739   static int p_inited = 0;
13740   static OrcProgram *p = 0;
13741   void (*func) (OrcExecutor *);
13742
13743   if (!p_inited) {
13744     orc_once_mutex_lock ();
13745     if (!p_inited) {
13746       OrcCompileResult result;
13747
13748       p = orc_program_new ();
13749       orc_program_set_constant_n (p, 24);
13750       orc_program_set_2d (p);
13751       orc_program_set_name (p, "orc_combine4_24xn_u8");
13752       orc_program_set_backup_function (p, _backup_orc_combine4_24xn_u8);
13753       orc_program_add_destination (p, 1, "d1");
13754       orc_program_add_source (p, 1, "s1");
13755       orc_program_add_source (p, 1, "s2");
13756       orc_program_add_source (p, 1, "s3");
13757       orc_program_add_source (p, 1, "s4");
13758       orc_program_add_constant (p, 4, 0x00000008, "c1");
13759       orc_program_add_parameter (p, 2, "p1");
13760       orc_program_add_parameter (p, 2, "p2");
13761       orc_program_add_parameter (p, 2, "p3");
13762       orc_program_add_parameter (p, 2, "p4");
13763       orc_program_add_temporary (p, 2, "t1");
13764       orc_program_add_temporary (p, 2, "t2");
13765
13766       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
13767       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1);
13768       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_D1, ORC_VAR_D1);
13769       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P2, ORC_VAR_D1);
13770       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1);
13771       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S3, ORC_VAR_D1, ORC_VAR_D1);
13772       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P3, ORC_VAR_D1);
13773       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1);
13774       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S4, ORC_VAR_D1, ORC_VAR_D1);
13775       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P4, ORC_VAR_D1);
13776       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1);
13777       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_D1);
13778       orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
13779
13780       result = orc_program_compile (p);
13781     }
13782     p_inited = TRUE;
13783     orc_once_mutex_unlock ();
13784   }
13785   ex->program = p;
13786
13787   ex->n = 24;
13788   ORC_EXECUTOR_M(ex) = m;
13789   ex->arrays[ORC_VAR_D1] = d1;
13790   ex->params[ORC_VAR_D1] = d1_stride;
13791   ex->arrays[ORC_VAR_S1] = (void *)s1;
13792   ex->params[ORC_VAR_S1] = s1_stride;
13793   ex->arrays[ORC_VAR_S2] = (void *)s2;
13794   ex->params[ORC_VAR_S2] = s2_stride;
13795   ex->arrays[ORC_VAR_S3] = (void *)s3;
13796   ex->params[ORC_VAR_S3] = s3_stride;
13797   ex->arrays[ORC_VAR_S4] = (void *)s4;
13798   ex->params[ORC_VAR_S4] = s4_stride;
13799   ex->params[ORC_VAR_P1] = p1;
13800   ex->params[ORC_VAR_P2] = p2;
13801   ex->params[ORC_VAR_P3] = p3;
13802   ex->params[ORC_VAR_P4] = p4;
13803
13804   func = p->code_exec;
13805   func (ex);
13806 }
13807 #endif
13808
13809
13810 /* orc_combine4_32xn_u8 */
13811 #ifdef DISABLE_ORC
13812 void
13813 orc_combine4_32xn_u8 (uint8_t * d1, int d1_stride, const uint8_t * s1, int s1_stride, const uint8_t * s2, int s2_stride, const uint8_t * s3, int s3_stride, const uint8_t * s4, int s4_stride, int p1, int p2, int p3, int p4, int m){
13814   int i;
13815   int j;
13816   int n = 32;
13817   orc_int8 * ORC_RESTRICT ptr0;
13818   const orc_int8 * ORC_RESTRICT ptr4;
13819   const orc_int8 * ORC_RESTRICT ptr5;
13820   const orc_int8 * ORC_RESTRICT ptr6;
13821   const orc_int8 * ORC_RESTRICT ptr7;
13822   orc_int8 var34;
13823   orc_union16 var35;
13824   orc_int8 var36;
13825   orc_union16 var37;
13826   orc_int8 var38;
13827   orc_union16 var39;
13828   orc_int8 var40;
13829   orc_union16 var41;
13830   orc_union16 var42;
13831   orc_int8 var43;
13832   orc_union16 var44;
13833   orc_union16 var45;
13834   orc_union16 var46;
13835   orc_union16 var47;
13836   orc_union16 var48;
13837   orc_union16 var49;
13838   orc_union16 var50;
13839   orc_union16 var51;
13840   orc_union16 var52;
13841   orc_union16 var53;
13842   orc_union16 var54;
13843   orc_union16 var55;
13844
13845   for (j = 0; j < m; j++) {
13846     ptr0 = ORC_PTR_OFFSET(d1, d1_stride * j);
13847     ptr4 = ORC_PTR_OFFSET(s1, s1_stride * j);
13848     ptr5 = ORC_PTR_OFFSET(s2, s2_stride * j);
13849     ptr6 = ORC_PTR_OFFSET(s3, s3_stride * j);
13850     ptr7 = ORC_PTR_OFFSET(s4, s4_stride * j);
13851
13852       /* 2: loadpw */
13853         var35.i = p1;
13854       /* 6: loadpw */
13855         var37.i = p2;
13856       /* 11: loadpw */
13857         var39.i = p3;
13858       /* 16: loadpw */
13859         var41.i = p4;
13860       /* 19: loadpw */
13861         var42.i = 0x00000008; /* 8 or 3.95253e-323f */
13862
13863     for (i = 0; i < n; i++) {
13864       /* 0: loadb */
13865       var34 = ptr4[i];
13866       /* 1: convubw */
13867       var44.i = (orc_uint8)var34;
13868       /* 3: mullw */
13869       var45.i = (var44.i * var35.i) & 0xffff;
13870       /* 4: loadb */
13871       var36 = ptr5[i];
13872       /* 5: convubw */
13873       var46.i = (orc_uint8)var36;
13874       /* 7: mullw */
13875       var47.i = (var46.i * var37.i) & 0xffff;
13876       /* 8: addw */
13877       var48.i = var45.i + var47.i;
13878       /* 9: loadb */
13879       var38 = ptr6[i];
13880       /* 10: convubw */
13881       var49.i = (orc_uint8)var38;
13882       /* 12: mullw */
13883       var50.i = (var49.i * var39.i) & 0xffff;
13884       /* 13: addw */
13885       var51.i = var48.i + var50.i;
13886       /* 14: loadb */
13887       var40 = ptr7[i];
13888       /* 15: convubw */
13889       var52.i = (orc_uint8)var40;
13890       /* 17: mullw */
13891       var53.i = (var52.i * var41.i) & 0xffff;
13892       /* 18: addw */
13893       var54.i = var51.i + var53.i;
13894       /* 20: addw */
13895       var55.i = var54.i + var42.i;
13896       /* 21: convsuswb */
13897       var43 = ORC_CLAMP_UB(var55.i);
13898       /* 22: storeb */
13899       ptr0[i] = var43;
13900     }
13901   }
13902
13903 }
13904
13905 #else
13906 static void
13907 _backup_orc_combine4_32xn_u8 (OrcExecutor * ORC_RESTRICT ex)
13908 {
13909   int i;
13910   int j;
13911   int n = 32;
13912   int m = ex->params[ORC_VAR_A1];
13913   orc_int8 * ORC_RESTRICT ptr0;
13914   const orc_int8 * ORC_RESTRICT ptr4;
13915   const orc_int8 * ORC_RESTRICT ptr5;
13916   const orc_int8 * ORC_RESTRICT ptr6;
13917   const orc_int8 * ORC_RESTRICT ptr7;
13918   orc_int8 var34;
13919   orc_union16 var35;
13920   orc_int8 var36;
13921   orc_union16 var37;
13922   orc_int8 var38;
13923   orc_union16 var39;
13924   orc_int8 var40;
13925   orc_union16 var41;
13926   orc_union16 var42;
13927   orc_int8 var43;
13928   orc_union16 var44;
13929   orc_union16 var45;
13930   orc_union16 var46;
13931   orc_union16 var47;
13932   orc_union16 var48;
13933   orc_union16 var49;
13934   orc_union16 var50;
13935   orc_union16 var51;
13936   orc_union16 var52;
13937   orc_union16 var53;
13938   orc_union16 var54;
13939   orc_union16 var55;
13940
13941   for (j = 0; j < m; j++) {
13942     ptr0 = ORC_PTR_OFFSET(ex->arrays[0], ex->params[0] * j);
13943     ptr4 = ORC_PTR_OFFSET(ex->arrays[4], ex->params[4] * j);
13944     ptr5 = ORC_PTR_OFFSET(ex->arrays[5], ex->params[5] * j);
13945     ptr6 = ORC_PTR_OFFSET(ex->arrays[6], ex->params[6] * j);
13946     ptr7 = ORC_PTR_OFFSET(ex->arrays[7], ex->params[7] * j);
13947
13948       /* 2: loadpw */
13949         var35.i = ex->params[24];
13950       /* 6: loadpw */
13951         var37.i = ex->params[25];
13952       /* 11: loadpw */
13953         var39.i = ex->params[26];
13954       /* 16: loadpw */
13955         var41.i = ex->params[27];
13956       /* 19: loadpw */
13957         var42.i = 0x00000008; /* 8 or 3.95253e-323f */
13958
13959     for (i = 0; i < n; i++) {
13960       /* 0: loadb */
13961       var34 = ptr4[i];
13962       /* 1: convubw */
13963       var44.i = (orc_uint8)var34;
13964       /* 3: mullw */
13965       var45.i = (var44.i * var35.i) & 0xffff;
13966       /* 4: loadb */
13967       var36 = ptr5[i];
13968       /* 5: convubw */
13969       var46.i = (orc_uint8)var36;
13970       /* 7: mullw */
13971       var47.i = (var46.i * var37.i) & 0xffff;
13972       /* 8: addw */
13973       var48.i = var45.i + var47.i;
13974       /* 9: loadb */
13975       var38 = ptr6[i];
13976       /* 10: convubw */
13977       var49.i = (orc_uint8)var38;
13978       /* 12: mullw */
13979       var50.i = (var49.i * var39.i) & 0xffff;
13980       /* 13: addw */
13981       var51.i = var48.i + var50.i;
13982       /* 14: loadb */
13983       var40 = ptr7[i];
13984       /* 15: convubw */
13985       var52.i = (orc_uint8)var40;
13986       /* 17: mullw */
13987       var53.i = (var52.i * var41.i) & 0xffff;
13988       /* 18: addw */
13989       var54.i = var51.i + var53.i;
13990       /* 20: addw */
13991       var55.i = var54.i + var42.i;
13992       /* 21: convsuswb */
13993       var43 = ORC_CLAMP_UB(var55.i);
13994       /* 22: storeb */
13995       ptr0[i] = var43;
13996     }
13997   }
13998
13999 }
14000
14001 void
14002 orc_combine4_32xn_u8 (uint8_t * d1, int d1_stride, const uint8_t * s1, int s1_stride, const uint8_t * s2, int s2_stride, const uint8_t * s3, int s3_stride, const uint8_t * s4, int s4_stride, int p1, int p2, int p3, int p4, int m)
14003 {
14004   OrcExecutor _ex, *ex = &_ex;
14005   static int p_inited = 0;
14006   static OrcProgram *p = 0;
14007   void (*func) (OrcExecutor *);
14008
14009   if (!p_inited) {
14010     orc_once_mutex_lock ();
14011     if (!p_inited) {
14012       OrcCompileResult result;
14013
14014       p = orc_program_new ();
14015       orc_program_set_constant_n (p, 32);
14016       orc_program_set_2d (p);
14017       orc_program_set_name (p, "orc_combine4_32xn_u8");
14018       orc_program_set_backup_function (p, _backup_orc_combine4_32xn_u8);
14019       orc_program_add_destination (p, 1, "d1");
14020       orc_program_add_source (p, 1, "s1");
14021       orc_program_add_source (p, 1, "s2");
14022       orc_program_add_source (p, 1, "s3");
14023       orc_program_add_source (p, 1, "s4");
14024       orc_program_add_constant (p, 4, 0x00000008, "c1");
14025       orc_program_add_parameter (p, 2, "p1");
14026       orc_program_add_parameter (p, 2, "p2");
14027       orc_program_add_parameter (p, 2, "p3");
14028       orc_program_add_parameter (p, 2, "p4");
14029       orc_program_add_temporary (p, 2, "t1");
14030       orc_program_add_temporary (p, 2, "t2");
14031
14032       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
14033       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1);
14034       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_D1, ORC_VAR_D1);
14035       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P2, ORC_VAR_D1);
14036       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1);
14037       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S3, ORC_VAR_D1, ORC_VAR_D1);
14038       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P3, ORC_VAR_D1);
14039       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1);
14040       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S4, ORC_VAR_D1, ORC_VAR_D1);
14041       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P4, ORC_VAR_D1);
14042       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1);
14043       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_D1);
14044       orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
14045
14046       result = orc_program_compile (p);
14047     }
14048     p_inited = TRUE;
14049     orc_once_mutex_unlock ();
14050   }
14051   ex->program = p;
14052
14053   ex->n = 32;
14054   ORC_EXECUTOR_M(ex) = m;
14055   ex->arrays[ORC_VAR_D1] = d1;
14056   ex->params[ORC_VAR_D1] = d1_stride;
14057   ex->arrays[ORC_VAR_S1] = (void *)s1;
14058   ex->params[ORC_VAR_S1] = s1_stride;
14059   ex->arrays[ORC_VAR_S2] = (void *)s2;
14060   ex->params[ORC_VAR_S2] = s2_stride;
14061   ex->arrays[ORC_VAR_S3] = (void *)s3;
14062   ex->params[ORC_VAR_S3] = s3_stride;
14063   ex->arrays[ORC_VAR_S4] = (void *)s4;
14064   ex->params[ORC_VAR_S4] = s4_stride;
14065   ex->params[ORC_VAR_P1] = p1;
14066   ex->params[ORC_VAR_P2] = p2;
14067   ex->params[ORC_VAR_P3] = p3;
14068   ex->params[ORC_VAR_P4] = p4;
14069
14070   func = p->code_exec;
14071   func (ex);
14072 }
14073 #endif
14074
14075
14076 /* orc_combine4_nxm_u8 */
14077 #ifdef DISABLE_ORC
14078 void
14079 orc_combine4_nxm_u8 (uint8_t * d1, int d1_stride, const uint8_t * s1, int s1_stride, const uint8_t * s2, int s2_stride, const uint8_t * s3, int s3_stride, const uint8_t * s4, int s4_stride, int p1, int p2, int p3, int p4, int n, int m){
14080   int i;
14081   int j;
14082   orc_int8 * ORC_RESTRICT ptr0;
14083   const orc_int8 * ORC_RESTRICT ptr4;
14084   const orc_int8 * ORC_RESTRICT ptr5;
14085   const orc_int8 * ORC_RESTRICT ptr6;
14086   const orc_int8 * ORC_RESTRICT ptr7;
14087   orc_int8 var34;
14088   orc_union16 var35;
14089   orc_int8 var36;
14090   orc_union16 var37;
14091   orc_int8 var38;
14092   orc_union16 var39;
14093   orc_int8 var40;
14094   orc_union16 var41;
14095   orc_union16 var42;
14096   orc_int8 var43;
14097   orc_union16 var44;
14098   orc_union16 var45;
14099   orc_union16 var46;
14100   orc_union16 var47;
14101   orc_union16 var48;
14102   orc_union16 var49;
14103   orc_union16 var50;
14104   orc_union16 var51;
14105   orc_union16 var52;
14106   orc_union16 var53;
14107   orc_union16 var54;
14108   orc_union16 var55;
14109   orc_union16 var56;
14110
14111   for (j = 0; j < m; j++) {
14112     ptr0 = ORC_PTR_OFFSET(d1, d1_stride * j);
14113     ptr4 = ORC_PTR_OFFSET(s1, s1_stride * j);
14114     ptr5 = ORC_PTR_OFFSET(s2, s2_stride * j);
14115     ptr6 = ORC_PTR_OFFSET(s3, s3_stride * j);
14116     ptr7 = ORC_PTR_OFFSET(s4, s4_stride * j);
14117
14118       /* 2: loadpw */
14119         var35.i = p1;
14120       /* 6: loadpw */
14121         var37.i = p2;
14122       /* 11: loadpw */
14123         var39.i = p3;
14124       /* 16: loadpw */
14125         var41.i = p4;
14126       /* 19: loadpw */
14127         var42.i = 0x00000008; /* 8 or 3.95253e-323f */
14128
14129     for (i = 0; i < n; i++) {
14130       /* 0: loadb */
14131       var34 = ptr4[i];
14132       /* 1: convubw */
14133       var44.i = (orc_uint8)var34;
14134       /* 3: mullw */
14135       var45.i = (var44.i * var35.i) & 0xffff;
14136       /* 4: loadb */
14137       var36 = ptr5[i];
14138       /* 5: convubw */
14139       var46.i = (orc_uint8)var36;
14140       /* 7: mullw */
14141       var47.i = (var46.i * var37.i) & 0xffff;
14142       /* 8: addw */
14143       var48.i = var45.i + var47.i;
14144       /* 9: loadb */
14145       var38 = ptr6[i];
14146       /* 10: convubw */
14147       var49.i = (orc_uint8)var38;
14148       /* 12: mullw */
14149       var50.i = (var49.i * var39.i) & 0xffff;
14150       /* 13: addw */
14151       var51.i = var48.i + var50.i;
14152       /* 14: loadb */
14153       var40 = ptr7[i];
14154       /* 15: convubw */
14155       var52.i = (orc_uint8)var40;
14156       /* 17: mullw */
14157       var53.i = (var52.i * var41.i) & 0xffff;
14158       /* 18: addw */
14159       var54.i = var51.i + var53.i;
14160       /* 20: addw */
14161       var55.i = var54.i + var42.i;
14162       /* 21: shrsw */
14163       var56.i = var55.i >> 4;
14164       /* 22: convsuswb */
14165       var43 = ORC_CLAMP_UB(var56.i);
14166       /* 23: storeb */
14167       ptr0[i] = var43;
14168     }
14169   }
14170
14171 }
14172
14173 #else
14174 static void
14175 _backup_orc_combine4_nxm_u8 (OrcExecutor * ORC_RESTRICT ex)
14176 {
14177   int i;
14178   int j;
14179   int n = ex->n;
14180   int m = ex->params[ORC_VAR_A1];
14181   orc_int8 * ORC_RESTRICT ptr0;
14182   const orc_int8 * ORC_RESTRICT ptr4;
14183   const orc_int8 * ORC_RESTRICT ptr5;
14184   const orc_int8 * ORC_RESTRICT ptr6;
14185   const orc_int8 * ORC_RESTRICT ptr7;
14186   orc_int8 var34;
14187   orc_union16 var35;
14188   orc_int8 var36;
14189   orc_union16 var37;
14190   orc_int8 var38;
14191   orc_union16 var39;
14192   orc_int8 var40;
14193   orc_union16 var41;
14194   orc_union16 var42;
14195   orc_int8 var43;
14196   orc_union16 var44;
14197   orc_union16 var45;
14198   orc_union16 var46;
14199   orc_union16 var47;
14200   orc_union16 var48;
14201   orc_union16 var49;
14202   orc_union16 var50;
14203   orc_union16 var51;
14204   orc_union16 var52;
14205   orc_union16 var53;
14206   orc_union16 var54;
14207   orc_union16 var55;
14208   orc_union16 var56;
14209
14210   for (j = 0; j < m; j++) {
14211     ptr0 = ORC_PTR_OFFSET(ex->arrays[0], ex->params[0] * j);
14212     ptr4 = ORC_PTR_OFFSET(ex->arrays[4], ex->params[4] * j);
14213     ptr5 = ORC_PTR_OFFSET(ex->arrays[5], ex->params[5] * j);
14214     ptr6 = ORC_PTR_OFFSET(ex->arrays[6], ex->params[6] * j);
14215     ptr7 = ORC_PTR_OFFSET(ex->arrays[7], ex->params[7] * j);
14216
14217       /* 2: loadpw */
14218         var35.i = ex->params[24];
14219       /* 6: loadpw */
14220         var37.i = ex->params[25];
14221       /* 11: loadpw */
14222         var39.i = ex->params[26];
14223       /* 16: loadpw */
14224         var41.i = ex->params[27];
14225       /* 19: loadpw */
14226         var42.i = 0x00000008; /* 8 or 3.95253e-323f */
14227
14228     for (i = 0; i < n; i++) {
14229       /* 0: loadb */
14230       var34 = ptr4[i];
14231       /* 1: convubw */
14232       var44.i = (orc_uint8)var34;
14233       /* 3: mullw */
14234       var45.i = (var44.i * var35.i) & 0xffff;
14235       /* 4: loadb */
14236       var36 = ptr5[i];
14237       /* 5: convubw */
14238       var46.i = (orc_uint8)var36;
14239       /* 7: mullw */
14240       var47.i = (var46.i * var37.i) & 0xffff;
14241       /* 8: addw */
14242       var48.i = var45.i + var47.i;
14243       /* 9: loadb */
14244       var38 = ptr6[i];
14245       /* 10: convubw */
14246       var49.i = (orc_uint8)var38;
14247       /* 12: mullw */
14248       var50.i = (var49.i * var39.i) & 0xffff;
14249       /* 13: addw */
14250       var51.i = var48.i + var50.i;
14251       /* 14: loadb */
14252       var40 = ptr7[i];
14253       /* 15: convubw */
14254       var52.i = (orc_uint8)var40;
14255       /* 17: mullw */
14256       var53.i = (var52.i * var41.i) & 0xffff;
14257       /* 18: addw */
14258       var54.i = var51.i + var53.i;
14259       /* 20: addw */
14260       var55.i = var54.i + var42.i;
14261       /* 21: shrsw */
14262       var56.i = var55.i >> 4;
14263       /* 22: convsuswb */
14264       var43 = ORC_CLAMP_UB(var56.i);
14265       /* 23: storeb */
14266       ptr0[i] = var43;
14267     }
14268   }
14269
14270 }
14271
14272 void
14273 orc_combine4_nxm_u8 (uint8_t * d1, int d1_stride, const uint8_t * s1, int s1_stride, const uint8_t * s2, int s2_stride, const uint8_t * s3, int s3_stride, const uint8_t * s4, int s4_stride, int p1, int p2, int p3, int p4, int n, int m)
14274 {
14275   OrcExecutor _ex, *ex = &_ex;
14276   static int p_inited = 0;
14277   static OrcProgram *p = 0;
14278   void (*func) (OrcExecutor *);
14279
14280   if (!p_inited) {
14281     orc_once_mutex_lock ();
14282     if (!p_inited) {
14283       OrcCompileResult result;
14284
14285       p = orc_program_new ();
14286       orc_program_set_2d (p);
14287       orc_program_set_name (p, "orc_combine4_nxm_u8");
14288       orc_program_set_backup_function (p, _backup_orc_combine4_nxm_u8);
14289       orc_program_add_destination (p, 1, "d1");
14290       orc_program_add_source (p, 1, "s1");
14291       orc_program_add_source (p, 1, "s2");
14292       orc_program_add_source (p, 1, "s3");
14293       orc_program_add_source (p, 1, "s4");
14294       orc_program_add_constant (p, 4, 0x00000008, "c1");
14295       orc_program_add_constant (p, 4, 0x00000004, "c2");
14296       orc_program_add_parameter (p, 2, "p1");
14297       orc_program_add_parameter (p, 2, "p2");
14298       orc_program_add_parameter (p, 2, "p3");
14299       orc_program_add_parameter (p, 2, "p4");
14300       orc_program_add_temporary (p, 2, "t1");
14301       orc_program_add_temporary (p, 2, "t2");
14302
14303       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
14304       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1);
14305       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_D1, ORC_VAR_D1);
14306       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P2, ORC_VAR_D1);
14307       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1);
14308       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S3, ORC_VAR_D1, ORC_VAR_D1);
14309       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P3, ORC_VAR_D1);
14310       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1);
14311       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S4, ORC_VAR_D1, ORC_VAR_D1);
14312       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P4, ORC_VAR_D1);
14313       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1);
14314       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_D1);
14315       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C2, ORC_VAR_D1);
14316       orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
14317
14318       result = orc_program_compile (p);
14319     }
14320     p_inited = TRUE;
14321     orc_once_mutex_unlock ();
14322   }
14323   ex->program = p;
14324
14325   ex->n = n;
14326   ORC_EXECUTOR_M(ex) = m;
14327   ex->arrays[ORC_VAR_D1] = d1;
14328   ex->params[ORC_VAR_D1] = d1_stride;
14329   ex->arrays[ORC_VAR_S1] = (void *)s1;
14330   ex->params[ORC_VAR_S1] = s1_stride;
14331   ex->arrays[ORC_VAR_S2] = (void *)s2;
14332   ex->params[ORC_VAR_S2] = s2_stride;
14333   ex->arrays[ORC_VAR_S3] = (void *)s3;
14334   ex->params[ORC_VAR_S3] = s3_stride;
14335   ex->arrays[ORC_VAR_S4] = (void *)s4;
14336   ex->params[ORC_VAR_S4] = s4_stride;
14337   ex->params[ORC_VAR_P1] = p1;
14338   ex->params[ORC_VAR_P2] = p2;
14339   ex->params[ORC_VAR_P3] = p3;
14340   ex->params[ORC_VAR_P4] = p4;
14341
14342   func = p->code_exec;
14343   func (ex);
14344 }
14345 #endif
14346
14347
14348 /* orc_combine2_8xn_u8 */
14349 #ifdef DISABLE_ORC
14350 void
14351 orc_combine2_8xn_u8 (uint8_t * d1, int d1_stride, const uint8_t * s1, int s1_stride, const uint8_t * s2, int s2_stride, int p1, int p2, int p3, int p4, int m){
14352   int i;
14353   int j;
14354   int n = 8;
14355   orc_int8 * ORC_RESTRICT ptr0;
14356   const orc_int8 * ORC_RESTRICT ptr4;
14357   const orc_int8 * ORC_RESTRICT ptr5;
14358   orc_int8 var34;
14359   orc_int8 var35;
14360   orc_union16 var36;
14361   orc_union16 var37;
14362   orc_union16 var38;
14363   orc_int8 var39;
14364   orc_union16 var40;
14365   orc_union16 var41;
14366   orc_union16 var42;
14367   orc_union16 var43;
14368   orc_union16 var44;
14369   orc_union16 var45;
14370   orc_union16 var46;
14371
14372   for (j = 0; j < m; j++) {
14373     ptr0 = ORC_PTR_OFFSET(d1, d1_stride * j);
14374     ptr4 = ORC_PTR_OFFSET(s1, s1_stride * j);
14375     ptr5 = ORC_PTR_OFFSET(s2, s2_stride * j);
14376
14377       /* 4: loadpw */
14378         var36.i = p1;
14379       /* 6: loadpw */
14380         var37.i = p2;
14381       /* 9: loadpw */
14382         var38.i = p3;
14383
14384     for (i = 0; i < n; i++) {
14385       /* 0: loadb */
14386       var34 = ptr4[i];
14387       /* 1: convubw */
14388       var40.i = (orc_uint8)var34;
14389       /* 2: loadb */
14390       var35 = ptr5[i];
14391       /* 3: convubw */
14392       var41.i = (orc_uint8)var35;
14393       /* 5: mullw */
14394       var42.i = (var40.i * var36.i) & 0xffff;
14395       /* 7: mullw */
14396       var43.i = (var41.i * var37.i) & 0xffff;
14397       /* 8: addw */
14398       var44.i = var42.i + var43.i;
14399       /* 10: addw */
14400       var45.i = var44.i + var38.i;
14401       /* 11: shrsw */
14402       var46.i = var45.i >> p4;
14403       /* 12: convsuswb */
14404       var39 = ORC_CLAMP_UB(var46.i);
14405       /* 13: storeb */
14406       ptr0[i] = var39;
14407     }
14408   }
14409
14410 }
14411
14412 #else
14413 static void
14414 _backup_orc_combine2_8xn_u8 (OrcExecutor * ORC_RESTRICT ex)
14415 {
14416   int i;
14417   int j;
14418   int n = 8;
14419   int m = ex->params[ORC_VAR_A1];
14420   orc_int8 * ORC_RESTRICT ptr0;
14421   const orc_int8 * ORC_RESTRICT ptr4;
14422   const orc_int8 * ORC_RESTRICT ptr5;
14423   orc_int8 var34;
14424   orc_int8 var35;
14425   orc_union16 var36;
14426   orc_union16 var37;
14427   orc_union16 var38;
14428   orc_int8 var39;
14429   orc_union16 var40;
14430   orc_union16 var41;
14431   orc_union16 var42;
14432   orc_union16 var43;
14433   orc_union16 var44;
14434   orc_union16 var45;
14435   orc_union16 var46;
14436
14437   for (j = 0; j < m; j++) {
14438     ptr0 = ORC_PTR_OFFSET(ex->arrays[0], ex->params[0] * j);
14439     ptr4 = ORC_PTR_OFFSET(ex->arrays[4], ex->params[4] * j);
14440     ptr5 = ORC_PTR_OFFSET(ex->arrays[5], ex->params[5] * j);
14441
14442       /* 4: loadpw */
14443         var36.i = ex->params[24];
14444       /* 6: loadpw */
14445         var37.i = ex->params[25];
14446       /* 9: loadpw */
14447         var38.i = ex->params[26];
14448
14449     for (i = 0; i < n; i++) {
14450       /* 0: loadb */
14451       var34 = ptr4[i];
14452       /* 1: convubw */
14453       var40.i = (orc_uint8)var34;
14454       /* 2: loadb */
14455       var35 = ptr5[i];
14456       /* 3: convubw */
14457       var41.i = (orc_uint8)var35;
14458       /* 5: mullw */
14459       var42.i = (var40.i * var36.i) & 0xffff;
14460       /* 7: mullw */
14461       var43.i = (var41.i * var37.i) & 0xffff;
14462       /* 8: addw */
14463       var44.i = var42.i + var43.i;
14464       /* 10: addw */
14465       var45.i = var44.i + var38.i;
14466       /* 11: shrsw */
14467       var46.i = var45.i >> ex->params[27];
14468       /* 12: convsuswb */
14469       var39 = ORC_CLAMP_UB(var46.i);
14470       /* 13: storeb */
14471       ptr0[i] = var39;
14472     }
14473   }
14474
14475 }
14476
14477 void
14478 orc_combine2_8xn_u8 (uint8_t * d1, int d1_stride, const uint8_t * s1, int s1_stride, const uint8_t * s2, int s2_stride, int p1, int p2, int p3, int p4, int m)
14479 {
14480   OrcExecutor _ex, *ex = &_ex;
14481   static int p_inited = 0;
14482   static OrcProgram *p = 0;
14483   void (*func) (OrcExecutor *);
14484
14485   if (!p_inited) {
14486     orc_once_mutex_lock ();
14487     if (!p_inited) {
14488       OrcCompileResult result;
14489
14490       p = orc_program_new ();
14491       orc_program_set_constant_n (p, 8);
14492       orc_program_set_2d (p);
14493       orc_program_set_name (p, "orc_combine2_8xn_u8");
14494       orc_program_set_backup_function (p, _backup_orc_combine2_8xn_u8);
14495       orc_program_add_destination (p, 1, "d1");
14496       orc_program_add_source (p, 1, "s1");
14497       orc_program_add_source (p, 1, "s2");
14498       orc_program_add_parameter (p, 2, "p1");
14499       orc_program_add_parameter (p, 2, "p2");
14500       orc_program_add_parameter (p, 2, "p3");
14501       orc_program_add_parameter (p, 2, "p4");
14502       orc_program_add_temporary (p, 2, "t1");
14503       orc_program_add_temporary (p, 2, "t2");
14504
14505       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
14506       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, ORC_VAR_D1);
14507       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1);
14508       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P2, ORC_VAR_D1);
14509       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1);
14510       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P3, ORC_VAR_D1);
14511       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P4, ORC_VAR_D1);
14512       orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
14513
14514       result = orc_program_compile (p);
14515     }
14516     p_inited = TRUE;
14517     orc_once_mutex_unlock ();
14518   }
14519   ex->program = p;
14520
14521   ex->n = 8;
14522   ORC_EXECUTOR_M(ex) = m;
14523   ex->arrays[ORC_VAR_D1] = d1;
14524   ex->params[ORC_VAR_D1] = d1_stride;
14525   ex->arrays[ORC_VAR_S1] = (void *)s1;
14526   ex->params[ORC_VAR_S1] = s1_stride;
14527   ex->arrays[ORC_VAR_S2] = (void *)s2;
14528   ex->params[ORC_VAR_S2] = s2_stride;
14529   ex->params[ORC_VAR_P1] = p1;
14530   ex->params[ORC_VAR_P2] = p2;
14531   ex->params[ORC_VAR_P3] = p3;
14532   ex->params[ORC_VAR_P4] = p4;
14533
14534   func = p->code_exec;
14535   func (ex);
14536 }
14537 #endif
14538
14539
14540 /* orc_combine2_12xn_u8 */
14541 #ifdef DISABLE_ORC
14542 void
14543 orc_combine2_12xn_u8 (uint8_t * d1, int d1_stride, const uint8_t * s1, int s1_stride, const uint8_t * s2, int s2_stride, int p1, int p2, int p3, int p4, int m){
14544   int i;
14545   int j;
14546   int n = 12;
14547   orc_int8 * ORC_RESTRICT ptr0;
14548   const orc_int8 * ORC_RESTRICT ptr4;
14549   const orc_int8 * ORC_RESTRICT ptr5;
14550   orc_int8 var34;
14551   orc_int8 var35;
14552   orc_union16 var36;
14553   orc_union16 var37;
14554   orc_union16 var38;
14555   orc_int8 var39;
14556   orc_union16 var40;
14557   orc_union16 var41;
14558   orc_union16 var42;
14559   orc_union16 var43;
14560   orc_union16 var44;
14561   orc_union16 var45;
14562   orc_union16 var46;
14563
14564   for (j = 0; j < m; j++) {
14565     ptr0 = ORC_PTR_OFFSET(d1, d1_stride * j);
14566     ptr4 = ORC_PTR_OFFSET(s1, s1_stride * j);
14567     ptr5 = ORC_PTR_OFFSET(s2, s2_stride * j);
14568
14569       /* 4: loadpw */
14570         var36.i = p1;
14571       /* 6: loadpw */
14572         var37.i = p2;
14573       /* 9: loadpw */
14574         var38.i = p3;
14575
14576     for (i = 0; i < n; i++) {
14577       /* 0: loadb */
14578       var34 = ptr4[i];
14579       /* 1: convubw */
14580       var40.i = (orc_uint8)var34;
14581       /* 2: loadb */
14582       var35 = ptr5[i];
14583       /* 3: convubw */
14584       var41.i = (orc_uint8)var35;
14585       /* 5: mullw */
14586       var42.i = (var40.i * var36.i) & 0xffff;
14587       /* 7: mullw */
14588       var43.i = (var41.i * var37.i) & 0xffff;
14589       /* 8: addw */
14590       var44.i = var42.i + var43.i;
14591       /* 10: addw */
14592       var45.i = var44.i + var38.i;
14593       /* 11: shrsw */
14594       var46.i = var45.i >> p4;
14595       /* 12: convsuswb */
14596       var39 = ORC_CLAMP_UB(var46.i);
14597       /* 13: storeb */
14598       ptr0[i] = var39;
14599     }
14600   }
14601
14602 }
14603
14604 #else
14605 static void
14606 _backup_orc_combine2_12xn_u8 (OrcExecutor * ORC_RESTRICT ex)
14607 {
14608   int i;
14609   int j;
14610   int n = 12;
14611   int m = ex->params[ORC_VAR_A1];
14612   orc_int8 * ORC_RESTRICT ptr0;
14613   const orc_int8 * ORC_RESTRICT ptr4;
14614   const orc_int8 * ORC_RESTRICT ptr5;
14615   orc_int8 var34;
14616   orc_int8 var35;
14617   orc_union16 var36;
14618   orc_union16 var37;
14619   orc_union16 var38;
14620   orc_int8 var39;
14621   orc_union16 var40;
14622   orc_union16 var41;
14623   orc_union16 var42;
14624   orc_union16 var43;
14625   orc_union16 var44;
14626   orc_union16 var45;
14627   orc_union16 var46;
14628
14629   for (j = 0; j < m; j++) {
14630     ptr0 = ORC_PTR_OFFSET(ex->arrays[0], ex->params[0] * j);
14631     ptr4 = ORC_PTR_OFFSET(ex->arrays[4], ex->params[4] * j);
14632     ptr5 = ORC_PTR_OFFSET(ex->arrays[5], ex->params[5] * j);
14633
14634       /* 4: loadpw */
14635         var36.i = ex->params[24];
14636       /* 6: loadpw */
14637         var37.i = ex->params[25];
14638       /* 9: loadpw */
14639         var38.i = ex->params[26];
14640
14641     for (i = 0; i < n; i++) {
14642       /* 0: loadb */
14643       var34 = ptr4[i];
14644       /* 1: convubw */
14645       var40.i = (orc_uint8)var34;
14646       /* 2: loadb */
14647       var35 = ptr5[i];
14648       /* 3: convubw */
14649       var41.i = (orc_uint8)var35;
14650       /* 5: mullw */
14651       var42.i = (var40.i * var36.i) & 0xffff;
14652       /* 7: mullw */
14653       var43.i = (var41.i * var37.i) & 0xffff;
14654       /* 8: addw */
14655       var44.i = var42.i + var43.i;
14656       /* 10: addw */
14657       var45.i = var44.i + var38.i;
14658       /* 11: shrsw */
14659       var46.i = var45.i >> ex->params[27];
14660       /* 12: convsuswb */
14661       var39 = ORC_CLAMP_UB(var46.i);
14662       /* 13: storeb */
14663       ptr0[i] = var39;
14664     }
14665   }
14666
14667 }
14668
14669 void
14670 orc_combine2_12xn_u8 (uint8_t * d1, int d1_stride, const uint8_t * s1, int s1_stride, const uint8_t * s2, int s2_stride, int p1, int p2, int p3, int p4, int m)
14671 {
14672   OrcExecutor _ex, *ex = &_ex;
14673   static int p_inited = 0;
14674   static OrcProgram *p = 0;
14675   void (*func) (OrcExecutor *);
14676
14677   if (!p_inited) {
14678     orc_once_mutex_lock ();
14679     if (!p_inited) {
14680       OrcCompileResult result;
14681
14682       p = orc_program_new ();
14683       orc_program_set_constant_n (p, 12);
14684       orc_program_set_2d (p);
14685       orc_program_set_name (p, "orc_combine2_12xn_u8");
14686       orc_program_set_backup_function (p, _backup_orc_combine2_12xn_u8);
14687       orc_program_add_destination (p, 1, "d1");
14688       orc_program_add_source (p, 1, "s1");
14689       orc_program_add_source (p, 1, "s2");
14690       orc_program_add_parameter (p, 2, "p1");
14691       orc_program_add_parameter (p, 2, "p2");
14692       orc_program_add_parameter (p, 2, "p3");
14693       orc_program_add_parameter (p, 2, "p4");
14694       orc_program_add_temporary (p, 2, "t1");
14695       orc_program_add_temporary (p, 2, "t2");
14696
14697       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
14698       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, ORC_VAR_D1);
14699       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1);
14700       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P2, ORC_VAR_D1);
14701       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1);
14702       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P3, ORC_VAR_D1);
14703       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P4, ORC_VAR_D1);
14704       orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
14705
14706       result = orc_program_compile (p);
14707     }
14708     p_inited = TRUE;
14709     orc_once_mutex_unlock ();
14710   }
14711   ex->program = p;
14712
14713   ex->n = 12;
14714   ORC_EXECUTOR_M(ex) = m;
14715   ex->arrays[ORC_VAR_D1] = d1;
14716   ex->params[ORC_VAR_D1] = d1_stride;
14717   ex->arrays[ORC_VAR_S1] = (void *)s1;
14718   ex->params[ORC_VAR_S1] = s1_stride;
14719   ex->arrays[ORC_VAR_S2] = (void *)s2;
14720   ex->params[ORC_VAR_S2] = s2_stride;
14721   ex->params[ORC_VAR_P1] = p1;
14722   ex->params[ORC_VAR_P2] = p2;
14723   ex->params[ORC_VAR_P3] = p3;
14724   ex->params[ORC_VAR_P4] = p4;
14725
14726   func = p->code_exec;
14727   func (ex);
14728 }
14729 #endif
14730
14731
14732 /* orc_combine2_16xn_u8 */
14733 #ifdef DISABLE_ORC
14734 void
14735 orc_combine2_16xn_u8 (uint8_t * d1, int d1_stride, const uint8_t * s1, int s1_stride, const uint8_t * s2, int s2_stride, int p1, int p2, int p3, int p4, int m){
14736   int i;
14737   int j;
14738   int n = 16;
14739   orc_int8 * ORC_RESTRICT ptr0;
14740   const orc_int8 * ORC_RESTRICT ptr4;
14741   const orc_int8 * ORC_RESTRICT ptr5;
14742   orc_int8 var34;
14743   orc_int8 var35;
14744   orc_union16 var36;
14745   orc_union16 var37;
14746   orc_union16 var38;
14747   orc_int8 var39;
14748   orc_union16 var40;
14749   orc_union16 var41;
14750   orc_union16 var42;
14751   orc_union16 var43;
14752   orc_union16 var44;
14753   orc_union16 var45;
14754   orc_union16 var46;
14755
14756   for (j = 0; j < m; j++) {
14757     ptr0 = ORC_PTR_OFFSET(d1, d1_stride * j);
14758     ptr4 = ORC_PTR_OFFSET(s1, s1_stride * j);
14759     ptr5 = ORC_PTR_OFFSET(s2, s2_stride * j);
14760
14761       /* 4: loadpw */
14762         var36.i = p1;
14763       /* 6: loadpw */
14764         var37.i = p2;
14765       /* 9: loadpw */
14766         var38.i = p3;
14767
14768     for (i = 0; i < n; i++) {
14769       /* 0: loadb */
14770       var34 = ptr4[i];
14771       /* 1: convubw */
14772       var40.i = (orc_uint8)var34;
14773       /* 2: loadb */
14774       var35 = ptr5[i];
14775       /* 3: convubw */
14776       var41.i = (orc_uint8)var35;
14777       /* 5: mullw */
14778       var42.i = (var40.i * var36.i) & 0xffff;
14779       /* 7: mullw */
14780       var43.i = (var41.i * var37.i) & 0xffff;
14781       /* 8: addw */
14782       var44.i = var42.i + var43.i;
14783       /* 10: addw */
14784       var45.i = var44.i + var38.i;
14785       /* 11: shrsw */
14786       var46.i = var45.i >> p4;
14787       /* 12: convsuswb */
14788       var39 = ORC_CLAMP_UB(var46.i);
14789       /* 13: storeb */
14790       ptr0[i] = var39;
14791     }
14792   }
14793
14794 }
14795
14796 #else
14797 static void
14798 _backup_orc_combine2_16xn_u8 (OrcExecutor * ORC_RESTRICT ex)
14799 {
14800   int i;
14801   int j;
14802   int n = 16;
14803   int m = ex->params[ORC_VAR_A1];
14804   orc_int8 * ORC_RESTRICT ptr0;
14805   const orc_int8 * ORC_RESTRICT ptr4;
14806   const orc_int8 * ORC_RESTRICT ptr5;
14807   orc_int8 var34;
14808   orc_int8 var35;
14809   orc_union16 var36;
14810   orc_union16 var37;
14811   orc_union16 var38;
14812   orc_int8 var39;
14813   orc_union16 var40;
14814   orc_union16 var41;
14815   orc_union16 var42;
14816   orc_union16 var43;
14817   orc_union16 var44;
14818   orc_union16 var45;
14819   orc_union16 var46;
14820
14821   for (j = 0; j < m; j++) {
14822     ptr0 = ORC_PTR_OFFSET(ex->arrays[0], ex->params[0] * j);
14823     ptr4 = ORC_PTR_OFFSET(ex->arrays[4], ex->params[4] * j);
14824     ptr5 = ORC_PTR_OFFSET(ex->arrays[5], ex->params[5] * j);
14825
14826       /* 4: loadpw */
14827         var36.i = ex->params[24];
14828       /* 6: loadpw */
14829         var37.i = ex->params[25];
14830       /* 9: loadpw */
14831         var38.i = ex->params[26];
14832
14833     for (i = 0; i < n; i++) {
14834       /* 0: loadb */
14835       var34 = ptr4[i];
14836       /* 1: convubw */
14837       var40.i = (orc_uint8)var34;
14838       /* 2: loadb */
14839       var35 = ptr5[i];
14840       /* 3: convubw */
14841       var41.i = (orc_uint8)var35;
14842       /* 5: mullw */
14843       var42.i = (var40.i * var36.i) & 0xffff;
14844       /* 7: mullw */
14845       var43.i = (var41.i * var37.i) & 0xffff;
14846       /* 8: addw */
14847       var44.i = var42.i + var43.i;
14848       /* 10: addw */
14849       var45.i = var44.i + var38.i;
14850       /* 11: shrsw */
14851       var46.i = var45.i >> ex->params[27];
14852       /* 12: convsuswb */
14853       var39 = ORC_CLAMP_UB(var46.i);
14854       /* 13: storeb */
14855       ptr0[i] = var39;
14856     }
14857   }
14858
14859 }
14860
14861 void
14862 orc_combine2_16xn_u8 (uint8_t * d1, int d1_stride, const uint8_t * s1, int s1_stride, const uint8_t * s2, int s2_stride, int p1, int p2, int p3, int p4, int m)
14863 {
14864   OrcExecutor _ex, *ex = &_ex;
14865   static int p_inited = 0;
14866   static OrcProgram *p = 0;
14867   void (*func) (OrcExecutor *);
14868
14869   if (!p_inited) {
14870     orc_once_mutex_lock ();
14871     if (!p_inited) {
14872       OrcCompileResult result;
14873
14874       p = orc_program_new ();
14875       orc_program_set_constant_n (p, 16);
14876       orc_program_set_2d (p);
14877       orc_program_set_name (p, "orc_combine2_16xn_u8");
14878       orc_program_set_backup_function (p, _backup_orc_combine2_16xn_u8);
14879       orc_program_add_destination (p, 1, "d1");
14880       orc_program_add_source (p, 1, "s1");
14881       orc_program_add_source (p, 1, "s2");
14882       orc_program_add_parameter (p, 2, "p1");
14883       orc_program_add_parameter (p, 2, "p2");
14884       orc_program_add_parameter (p, 2, "p3");
14885       orc_program_add_parameter (p, 2, "p4");
14886       orc_program_add_temporary (p, 2, "t1");
14887       orc_program_add_temporary (p, 2, "t2");
14888
14889       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
14890       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, ORC_VAR_D1);
14891       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1);
14892       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P2, ORC_VAR_D1);
14893       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1);
14894       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P3, ORC_VAR_D1);
14895       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P4, ORC_VAR_D1);
14896       orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
14897
14898       result = orc_program_compile (p);
14899     }
14900     p_inited = TRUE;
14901     orc_once_mutex_unlock ();
14902   }
14903   ex->program = p;
14904
14905   ex->n = 16;
14906   ORC_EXECUTOR_M(ex) = m;
14907   ex->arrays[ORC_VAR_D1] = d1;
14908   ex->params[ORC_VAR_D1] = d1_stride;
14909   ex->arrays[ORC_VAR_S1] = (void *)s1;
14910   ex->params[ORC_VAR_S1] = s1_stride;
14911   ex->arrays[ORC_VAR_S2] = (void *)s2;
14912   ex->params[ORC_VAR_S2] = s2_stride;
14913   ex->params[ORC_VAR_P1] = p1;
14914   ex->params[ORC_VAR_P2] = p2;
14915   ex->params[ORC_VAR_P3] = p3;
14916   ex->params[ORC_VAR_P4] = p4;
14917
14918   func = p->code_exec;
14919   func (ex);
14920 }
14921 #endif
14922
14923
14924 /* orc_combine2_nxm_u8 */
14925 #ifdef DISABLE_ORC
14926 void
14927 orc_combine2_nxm_u8 (uint8_t * d1, int d1_stride, const uint8_t * s1, int s1_stride, const uint8_t * s2, int s2_stride, int p1, int p2, int p3, int p4, int n, int m){
14928   int i;
14929   int j;
14930   orc_int8 * ORC_RESTRICT ptr0;
14931   const orc_int8 * ORC_RESTRICT ptr4;
14932   const orc_int8 * ORC_RESTRICT ptr5;
14933   orc_int8 var34;
14934   orc_int8 var35;
14935   orc_union16 var36;
14936   orc_union16 var37;
14937   orc_union16 var38;
14938   orc_int8 var39;
14939   orc_union16 var40;
14940   orc_union16 var41;
14941   orc_union16 var42;
14942   orc_union16 var43;
14943   orc_union16 var44;
14944   orc_union16 var45;
14945   orc_union16 var46;
14946
14947   for (j = 0; j < m; j++) {
14948     ptr0 = ORC_PTR_OFFSET(d1, d1_stride * j);
14949     ptr4 = ORC_PTR_OFFSET(s1, s1_stride * j);
14950     ptr5 = ORC_PTR_OFFSET(s2, s2_stride * j);
14951
14952       /* 4: loadpw */
14953         var36.i = p1;
14954       /* 6: loadpw */
14955         var37.i = p2;
14956       /* 9: loadpw */
14957         var38.i = p3;
14958
14959     for (i = 0; i < n; i++) {
14960       /* 0: loadb */
14961       var34 = ptr4[i];
14962       /* 1: convubw */
14963       var40.i = (orc_uint8)var34;
14964       /* 2: loadb */
14965       var35 = ptr5[i];
14966       /* 3: convubw */
14967       var41.i = (orc_uint8)var35;
14968       /* 5: mullw */
14969       var42.i = (var40.i * var36.i) & 0xffff;
14970       /* 7: mullw */
14971       var43.i = (var41.i * var37.i) & 0xffff;
14972       /* 8: addw */
14973       var44.i = var42.i + var43.i;
14974       /* 10: addw */
14975       var45.i = var44.i + var38.i;
14976       /* 11: shrsw */
14977       var46.i = var45.i >> p4;
14978       /* 12: convsuswb */
14979       var39 = ORC_CLAMP_UB(var46.i);
14980       /* 13: storeb */
14981       ptr0[i] = var39;
14982     }
14983   }
14984
14985 }
14986
14987 #else
14988 static void
14989 _backup_orc_combine2_nxm_u8 (OrcExecutor * ORC_RESTRICT ex)
14990 {
14991   int i;
14992   int j;
14993   int n = ex->n;
14994   int m = ex->params[ORC_VAR_A1];
14995   orc_int8 * ORC_RESTRICT ptr0;
14996   const orc_int8 * ORC_RESTRICT ptr4;
14997   const orc_int8 * ORC_RESTRICT ptr5;
14998   orc_int8 var34;
14999   orc_int8 var35;
15000   orc_union16 var36;
15001   orc_union16 var37;
15002   orc_union16 var38;
15003   orc_int8 var39;
15004   orc_union16 var40;
15005   orc_union16 var41;
15006   orc_union16 var42;
15007   orc_union16 var43;
15008   orc_union16 var44;
15009   orc_union16 var45;
15010   orc_union16 var46;
15011
15012   for (j = 0; j < m; j++) {
15013     ptr0 = ORC_PTR_OFFSET(ex->arrays[0], ex->params[0] * j);
15014     ptr4 = ORC_PTR_OFFSET(ex->arrays[4], ex->params[4] * j);
15015     ptr5 = ORC_PTR_OFFSET(ex->arrays[5], ex->params[5] * j);
15016
15017       /* 4: loadpw */
15018         var36.i = ex->params[24];
15019       /* 6: loadpw */
15020         var37.i = ex->params[25];
15021       /* 9: loadpw */
15022         var38.i = ex->params[26];
15023
15024     for (i = 0; i < n; i++) {
15025       /* 0: loadb */
15026       var34 = ptr4[i];
15027       /* 1: convubw */
15028       var40.i = (orc_uint8)var34;
15029       /* 2: loadb */
15030       var35 = ptr5[i];
15031       /* 3: convubw */
15032       var41.i = (orc_uint8)var35;
15033       /* 5: mullw */
15034       var42.i = (var40.i * var36.i) & 0xffff;
15035       /* 7: mullw */
15036       var43.i = (var41.i * var37.i) & 0xffff;
15037       /* 8: addw */
15038       var44.i = var42.i + var43.i;
15039       /* 10: addw */
15040       var45.i = var44.i + var38.i;
15041       /* 11: shrsw */
15042       var46.i = var45.i >> ex->params[27];
15043       /* 12: convsuswb */
15044       var39 = ORC_CLAMP_UB(var46.i);
15045       /* 13: storeb */
15046       ptr0[i] = var39;
15047     }
15048   }
15049
15050 }
15051
15052 void
15053 orc_combine2_nxm_u8 (uint8_t * d1, int d1_stride, const uint8_t * s1, int s1_stride, const uint8_t * s2, int s2_stride, int p1, int p2, int p3, int p4, int n, int m)
15054 {
15055   OrcExecutor _ex, *ex = &_ex;
15056   static int p_inited = 0;
15057   static OrcProgram *p = 0;
15058   void (*func) (OrcExecutor *);
15059
15060   if (!p_inited) {
15061     orc_once_mutex_lock ();
15062     if (!p_inited) {
15063       OrcCompileResult result;
15064
15065       p = orc_program_new ();
15066       orc_program_set_2d (p);
15067       orc_program_set_name (p, "orc_combine2_nxm_u8");
15068       orc_program_set_backup_function (p, _backup_orc_combine2_nxm_u8);
15069       orc_program_add_destination (p, 1, "d1");
15070       orc_program_add_source (p, 1, "s1");
15071       orc_program_add_source (p, 1, "s2");
15072       orc_program_add_parameter (p, 2, "p1");
15073       orc_program_add_parameter (p, 2, "p2");
15074       orc_program_add_parameter (p, 2, "p3");
15075       orc_program_add_parameter (p, 2, "p4");
15076       orc_program_add_temporary (p, 2, "t1");
15077       orc_program_add_temporary (p, 2, "t2");
15078
15079       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
15080       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, ORC_VAR_D1);
15081       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1);
15082       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P2, ORC_VAR_D1);
15083       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1);
15084       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P3, ORC_VAR_D1);
15085       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P4, ORC_VAR_D1);
15086       orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
15087
15088       result = orc_program_compile (p);
15089     }
15090     p_inited = TRUE;
15091     orc_once_mutex_unlock ();
15092   }
15093   ex->program = p;
15094
15095   ex->n = n;
15096   ORC_EXECUTOR_M(ex) = m;
15097   ex->arrays[ORC_VAR_D1] = d1;
15098   ex->params[ORC_VAR_D1] = d1_stride;
15099   ex->arrays[ORC_VAR_S1] = (void *)s1;
15100   ex->params[ORC_VAR_S1] = s1_stride;
15101   ex->arrays[ORC_VAR_S2] = (void *)s2;
15102   ex->params[ORC_VAR_S2] = s2_stride;
15103   ex->params[ORC_VAR_P1] = p1;
15104   ex->params[ORC_VAR_P2] = p2;
15105   ex->params[ORC_VAR_P3] = p3;
15106   ex->params[ORC_VAR_P4] = p4;
15107
15108   func = p->code_exec;
15109   func (ex);
15110 }
15111 #endif
15112
15113
15114 /* orc_sad_nxm_u8 */
15115 #ifdef DISABLE_ORC
15116 void
15117 orc_sad_nxm_u8 (uint32_t * a1, const uint8_t * s1, int s1_stride, const uint8_t * s2, int s2_stride, int n, int m){
15118   int i;
15119   int j;
15120   const orc_int8 * ORC_RESTRICT ptr4;
15121   const orc_int8 * ORC_RESTRICT ptr5;
15122   orc_union32 var12 =  { 0 };
15123   orc_int8 var32;
15124   orc_int8 var33;
15125
15126   for (j = 0; j < m; j++) {
15127     ptr4 = ORC_PTR_OFFSET(s1, s1_stride * j);
15128     ptr5 = ORC_PTR_OFFSET(s2, s2_stride * j);
15129
15130
15131     for (i = 0; i < n; i++) {
15132       /* 0: loadb */
15133       var32 = ptr4[i];
15134       /* 1: loadb */
15135       var33 = ptr5[i];
15136       /* 2: accsadubl */
15137       var12.i = var12.i + ORC_ABS((orc_int32)(orc_uint8)var32 - (orc_int32)(orc_uint8)var33);
15138     }
15139   }
15140   *a1 = var12.i;
15141
15142 }
15143
15144 #else
15145 static void
15146 _backup_orc_sad_nxm_u8 (OrcExecutor * ORC_RESTRICT ex)
15147 {
15148   int i;
15149   int j;
15150   int n = ex->n;
15151   int m = ex->params[ORC_VAR_A1];
15152   const orc_int8 * ORC_RESTRICT ptr4;
15153   const orc_int8 * ORC_RESTRICT ptr5;
15154   orc_union32 var12 =  { 0 };
15155   orc_int8 var32;
15156   orc_int8 var33;
15157
15158   for (j = 0; j < m; j++) {
15159     ptr4 = ORC_PTR_OFFSET(ex->arrays[4], ex->params[4] * j);
15160     ptr5 = ORC_PTR_OFFSET(ex->arrays[5], ex->params[5] * j);
15161
15162
15163     for (i = 0; i < n; i++) {
15164       /* 0: loadb */
15165       var32 = ptr4[i];
15166       /* 1: loadb */
15167       var33 = ptr5[i];
15168       /* 2: accsadubl */
15169       var12.i = var12.i + ORC_ABS((orc_int32)(orc_uint8)var32 - (orc_int32)(orc_uint8)var33);
15170     }
15171   }
15172   ex->accumulators[0] = var12.i;
15173
15174 }
15175
15176 void
15177 orc_sad_nxm_u8 (uint32_t * a1, const uint8_t * s1, int s1_stride, const uint8_t * s2, int s2_stride, int n, int m)
15178 {
15179   OrcExecutor _ex, *ex = &_ex;
15180   static int p_inited = 0;
15181   static OrcProgram *p = 0;
15182   void (*func) (OrcExecutor *);
15183
15184   if (!p_inited) {
15185     orc_once_mutex_lock ();
15186     if (!p_inited) {
15187       OrcCompileResult result;
15188
15189       p = orc_program_new ();
15190       orc_program_set_2d (p);
15191       orc_program_set_name (p, "orc_sad_nxm_u8");
15192       orc_program_set_backup_function (p, _backup_orc_sad_nxm_u8);
15193       orc_program_add_source (p, 1, "s1");
15194       orc_program_add_source (p, 1, "s2");
15195       orc_program_add_accumulator (p, 4, "a1");
15196
15197       orc_program_append_2 (p, "accsadubl", 0, ORC_VAR_A1, ORC_VAR_S1, ORC_VAR_S2, ORC_VAR_D1);
15198
15199       result = orc_program_compile (p);
15200     }
15201     p_inited = TRUE;
15202     orc_once_mutex_unlock ();
15203   }
15204   ex->program = p;
15205
15206   ex->n = n;
15207   ORC_EXECUTOR_M(ex) = m;
15208   ex->arrays[ORC_VAR_S1] = (void *)s1;
15209   ex->params[ORC_VAR_S1] = s1_stride;
15210   ex->arrays[ORC_VAR_S2] = (void *)s2;
15211   ex->params[ORC_VAR_S2] = s2_stride;
15212
15213   func = p->code_exec;
15214   func (ex);
15215   *a1 = orc_executor_get_accumulator (ex, ORC_VAR_A1);
15216 }
15217 #endif
15218
15219
15220 /* orc_sad_8x8_u8 */
15221 #ifdef DISABLE_ORC
15222 void
15223 orc_sad_8x8_u8 (uint32_t * a1, const uint8_t * s1, int s1_stride, const uint8_t * s2, int s2_stride){
15224   int i;
15225   int j;
15226   int n = 8;
15227   int m = 8;
15228   const orc_int8 * ORC_RESTRICT ptr4;
15229   const orc_int8 * ORC_RESTRICT ptr5;
15230   orc_union32 var12 =  { 0 };
15231   orc_int8 var32;
15232   orc_int8 var33;
15233
15234   for (j = 0; j < m; j++) {
15235     ptr4 = ORC_PTR_OFFSET(s1, s1_stride * j);
15236     ptr5 = ORC_PTR_OFFSET(s2, s2_stride * j);
15237
15238
15239     for (i = 0; i < n; i++) {
15240       /* 0: loadb */
15241       var32 = ptr4[i];
15242       /* 1: loadb */
15243       var33 = ptr5[i];
15244       /* 2: accsadubl */
15245       var12.i = var12.i + ORC_ABS((orc_int32)(orc_uint8)var32 - (orc_int32)(orc_uint8)var33);
15246     }
15247   }
15248   *a1 = var12.i;
15249
15250 }
15251
15252 #else
15253 static void
15254 _backup_orc_sad_8x8_u8 (OrcExecutor * ORC_RESTRICT ex)
15255 {
15256   int i;
15257   int j;
15258   int n = 8;
15259   int m = 8;
15260   const orc_int8 * ORC_RESTRICT ptr4;
15261   const orc_int8 * ORC_RESTRICT ptr5;
15262   orc_union32 var12 =  { 0 };
15263   orc_int8 var32;
15264   orc_int8 var33;
15265
15266   for (j = 0; j < m; j++) {
15267     ptr4 = ORC_PTR_OFFSET(ex->arrays[4], ex->params[4] * j);
15268     ptr5 = ORC_PTR_OFFSET(ex->arrays[5], ex->params[5] * j);
15269
15270
15271     for (i = 0; i < n; i++) {
15272       /* 0: loadb */
15273       var32 = ptr4[i];
15274       /* 1: loadb */
15275       var33 = ptr5[i];
15276       /* 2: accsadubl */
15277       var12.i = var12.i + ORC_ABS((orc_int32)(orc_uint8)var32 - (orc_int32)(orc_uint8)var33);
15278     }
15279   }
15280   ex->accumulators[0] = var12.i;
15281
15282 }
15283
15284 void
15285 orc_sad_8x8_u8 (uint32_t * a1, const uint8_t * s1, int s1_stride, const uint8_t * s2, int s2_stride)
15286 {
15287   OrcExecutor _ex, *ex = &_ex;
15288   static int p_inited = 0;
15289   static OrcProgram *p = 0;
15290   void (*func) (OrcExecutor *);
15291
15292   if (!p_inited) {
15293     orc_once_mutex_lock ();
15294     if (!p_inited) {
15295       OrcCompileResult result;
15296
15297       p = orc_program_new ();
15298       orc_program_set_constant_n (p, 8);
15299       orc_program_set_2d (p);
15300       orc_program_set_constant_m (p, 8);
15301       orc_program_set_name (p, "orc_sad_8x8_u8");
15302       orc_program_set_backup_function (p, _backup_orc_sad_8x8_u8);
15303       orc_program_add_source (p, 1, "s1");
15304       orc_program_add_source (p, 1, "s2");
15305       orc_program_add_accumulator (p, 4, "a1");
15306
15307       orc_program_append_2 (p, "accsadubl", 0, ORC_VAR_A1, ORC_VAR_S1, ORC_VAR_S2, ORC_VAR_D1);
15308
15309       result = orc_program_compile (p);
15310     }
15311     p_inited = TRUE;
15312     orc_once_mutex_unlock ();
15313   }
15314   ex->program = p;
15315
15316   ex->n = 8;
15317   ORC_EXECUTOR_M(ex) = 8;
15318   ex->arrays[ORC_VAR_S1] = (void *)s1;
15319   ex->params[ORC_VAR_S1] = s1_stride;
15320   ex->arrays[ORC_VAR_S2] = (void *)s2;
15321   ex->params[ORC_VAR_S2] = s2_stride;
15322
15323   func = p->code_exec;
15324   func (ex);
15325   *a1 = orc_executor_get_accumulator (ex, ORC_VAR_A1);
15326 }
15327 #endif
15328
15329
15330 /* orc_sad_12x12_u8 */
15331 #ifdef DISABLE_ORC
15332 void
15333 orc_sad_12x12_u8 (uint32_t * a1, const uint8_t * s1, int s1_stride, const uint8_t * s2, int s2_stride){
15334   int i;
15335   int j;
15336   int n = 12;
15337   int m = 12;
15338   const orc_int8 * ORC_RESTRICT ptr4;
15339   const orc_int8 * ORC_RESTRICT ptr5;
15340   orc_union32 var12 =  { 0 };
15341   orc_int8 var32;
15342   orc_int8 var33;
15343
15344   for (j = 0; j < m; j++) {
15345     ptr4 = ORC_PTR_OFFSET(s1, s1_stride * j);
15346     ptr5 = ORC_PTR_OFFSET(s2, s2_stride * j);
15347
15348
15349     for (i = 0; i < n; i++) {
15350       /* 0: loadb */
15351       var32 = ptr4[i];
15352       /* 1: loadb */
15353       var33 = ptr5[i];
15354       /* 2: accsadubl */
15355       var12.i = var12.i + ORC_ABS((orc_int32)(orc_uint8)var32 - (orc_int32)(orc_uint8)var33);
15356     }
15357   }
15358   *a1 = var12.i;
15359
15360 }
15361
15362 #else
15363 static void
15364 _backup_orc_sad_12x12_u8 (OrcExecutor * ORC_RESTRICT ex)
15365 {
15366   int i;
15367   int j;
15368   int n = 12;
15369   int m = 12;
15370   const orc_int8 * ORC_RESTRICT ptr4;
15371   const orc_int8 * ORC_RESTRICT ptr5;
15372   orc_union32 var12 =  { 0 };
15373   orc_int8 var32;
15374   orc_int8 var33;
15375
15376   for (j = 0; j < m; j++) {
15377     ptr4 = ORC_PTR_OFFSET(ex->arrays[4], ex->params[4] * j);
15378     ptr5 = ORC_PTR_OFFSET(ex->arrays[5], ex->params[5] * j);
15379
15380
15381     for (i = 0; i < n; i++) {
15382       /* 0: loadb */
15383       var32 = ptr4[i];
15384       /* 1: loadb */
15385       var33 = ptr5[i];
15386       /* 2: accsadubl */
15387       var12.i = var12.i + ORC_ABS((orc_int32)(orc_uint8)var32 - (orc_int32)(orc_uint8)var33);
15388     }
15389   }
15390   ex->accumulators[0] = var12.i;
15391
15392 }
15393
15394 void
15395 orc_sad_12x12_u8 (uint32_t * a1, const uint8_t * s1, int s1_stride, const uint8_t * s2, int s2_stride)
15396 {
15397   OrcExecutor _ex, *ex = &_ex;
15398   static int p_inited = 0;
15399   static OrcProgram *p = 0;
15400   void (*func) (OrcExecutor *);
15401
15402   if (!p_inited) {
15403     orc_once_mutex_lock ();
15404     if (!p_inited) {
15405       OrcCompileResult result;
15406
15407       p = orc_program_new ();
15408       orc_program_set_constant_n (p, 12);
15409       orc_program_set_2d (p);
15410       orc_program_set_constant_m (p, 12);
15411       orc_program_set_name (p, "orc_sad_12x12_u8");
15412       orc_program_set_backup_function (p, _backup_orc_sad_12x12_u8);
15413       orc_program_add_source (p, 1, "s1");
15414       orc_program_add_source (p, 1, "s2");
15415       orc_program_add_accumulator (p, 4, "a1");
15416
15417       orc_program_append_2 (p, "accsadubl", 0, ORC_VAR_A1, ORC_VAR_S1, ORC_VAR_S2, ORC_VAR_D1);
15418
15419       result = orc_program_compile (p);
15420     }
15421     p_inited = TRUE;
15422     orc_once_mutex_unlock ();
15423   }
15424   ex->program = p;
15425
15426   ex->n = 12;
15427   ORC_EXECUTOR_M(ex) = 12;
15428   ex->arrays[ORC_VAR_S1] = (void *)s1;
15429   ex->params[ORC_VAR_S1] = s1_stride;
15430   ex->arrays[ORC_VAR_S2] = (void *)s2;
15431   ex->params[ORC_VAR_S2] = s2_stride;
15432
15433   func = p->code_exec;
15434   func (ex);
15435   *a1 = orc_executor_get_accumulator (ex, ORC_VAR_A1);
15436 }
15437 #endif
15438
15439
15440 /* orc_sad_16xn_u8 */
15441 #ifdef DISABLE_ORC
15442 void
15443 orc_sad_16xn_u8 (uint32_t * a1, const uint8_t * s1, int s1_stride, const uint8_t * s2, int s2_stride, int m){
15444   int i;
15445   int j;
15446   int n = 16;
15447   const orc_int8 * ORC_RESTRICT ptr4;
15448   const orc_int8 * ORC_RESTRICT ptr5;
15449   orc_union32 var12 =  { 0 };
15450   orc_int8 var32;
15451   orc_int8 var33;
15452
15453   for (j = 0; j < m; j++) {
15454     ptr4 = ORC_PTR_OFFSET(s1, s1_stride * j);
15455     ptr5 = ORC_PTR_OFFSET(s2, s2_stride * j);
15456
15457
15458     for (i = 0; i < n; i++) {
15459       /* 0: loadb */
15460       var32 = ptr4[i];
15461       /* 1: loadb */
15462       var33 = ptr5[i];
15463       /* 2: accsadubl */
15464       var12.i = var12.i + ORC_ABS((orc_int32)(orc_uint8)var32 - (orc_int32)(orc_uint8)var33);
15465     }
15466   }
15467   *a1 = var12.i;
15468
15469 }
15470
15471 #else
15472 static void
15473 _backup_orc_sad_16xn_u8 (OrcExecutor * ORC_RESTRICT ex)
15474 {
15475   int i;
15476   int j;
15477   int n = 16;
15478   int m = ex->params[ORC_VAR_A1];
15479   const orc_int8 * ORC_RESTRICT ptr4;
15480   const orc_int8 * ORC_RESTRICT ptr5;
15481   orc_union32 var12 =  { 0 };
15482   orc_int8 var32;
15483   orc_int8 var33;
15484
15485   for (j = 0; j < m; j++) {
15486     ptr4 = ORC_PTR_OFFSET(ex->arrays[4], ex->params[4] * j);
15487     ptr5 = ORC_PTR_OFFSET(ex->arrays[5], ex->params[5] * j);
15488
15489
15490     for (i = 0; i < n; i++) {
15491       /* 0: loadb */
15492       var32 = ptr4[i];
15493       /* 1: loadb */
15494       var33 = ptr5[i];
15495       /* 2: accsadubl */
15496       var12.i = var12.i + ORC_ABS((orc_int32)(orc_uint8)var32 - (orc_int32)(orc_uint8)var33);
15497     }
15498   }
15499   ex->accumulators[0] = var12.i;
15500
15501 }
15502
15503 void
15504 orc_sad_16xn_u8 (uint32_t * a1, const uint8_t * s1, int s1_stride, const uint8_t * s2, int s2_stride, int m)
15505 {
15506   OrcExecutor _ex, *ex = &_ex;
15507   static int p_inited = 0;
15508   static OrcProgram *p = 0;
15509   void (*func) (OrcExecutor *);
15510
15511   if (!p_inited) {
15512     orc_once_mutex_lock ();
15513     if (!p_inited) {
15514       OrcCompileResult result;
15515
15516       p = orc_program_new ();
15517       orc_program_set_constant_n (p, 16);
15518       orc_program_set_2d (p);
15519       orc_program_set_name (p, "orc_sad_16xn_u8");
15520       orc_program_set_backup_function (p, _backup_orc_sad_16xn_u8);
15521       orc_program_add_source (p, 1, "s1");
15522       orc_program_add_source (p, 1, "s2");
15523       orc_program_add_accumulator (p, 4, "a1");
15524
15525       orc_program_append_2 (p, "accsadubl", 0, ORC_VAR_A1, ORC_VAR_S1, ORC_VAR_S2, ORC_VAR_D1);
15526
15527       result = orc_program_compile (p);
15528     }
15529     p_inited = TRUE;
15530     orc_once_mutex_unlock ();
15531   }
15532   ex->program = p;
15533
15534   ex->n = 16;
15535   ORC_EXECUTOR_M(ex) = m;
15536   ex->arrays[ORC_VAR_S1] = (void *)s1;
15537   ex->params[ORC_VAR_S1] = s1_stride;
15538   ex->arrays[ORC_VAR_S2] = (void *)s2;
15539   ex->params[ORC_VAR_S2] = s2_stride;
15540
15541   func = p->code_exec;
15542   func (ex);
15543   *a1 = orc_executor_get_accumulator (ex, ORC_VAR_A1);
15544 }
15545 #endif
15546
15547
15548 /* orc_sad_32xn_u8 */
15549 #ifdef DISABLE_ORC
15550 void
15551 orc_sad_32xn_u8 (uint32_t * a1, const uint8_t * s1, int s1_stride, const uint8_t * s2, int s2_stride, int m){
15552   int i;
15553   int j;
15554   int n = 32;
15555   const orc_int8 * ORC_RESTRICT ptr4;
15556   const orc_int8 * ORC_RESTRICT ptr5;
15557   orc_union32 var12 =  { 0 };
15558   orc_int8 var32;
15559   orc_int8 var33;
15560
15561   for (j = 0; j < m; j++) {
15562     ptr4 = ORC_PTR_OFFSET(s1, s1_stride * j);
15563     ptr5 = ORC_PTR_OFFSET(s2, s2_stride * j);
15564
15565
15566     for (i = 0; i < n; i++) {
15567       /* 0: loadb */
15568       var32 = ptr4[i];
15569       /* 1: loadb */
15570       var33 = ptr5[i];
15571       /* 2: accsadubl */
15572       var12.i = var12.i + ORC_ABS((orc_int32)(orc_uint8)var32 - (orc_int32)(orc_uint8)var33);
15573     }
15574   }
15575   *a1 = var12.i;
15576
15577 }
15578
15579 #else
15580 static void
15581 _backup_orc_sad_32xn_u8 (OrcExecutor * ORC_RESTRICT ex)
15582 {
15583   int i;
15584   int j;
15585   int n = 32;
15586   int m = ex->params[ORC_VAR_A1];
15587   const orc_int8 * ORC_RESTRICT ptr4;
15588   const orc_int8 * ORC_RESTRICT ptr5;
15589   orc_union32 var12 =  { 0 };
15590   orc_int8 var32;
15591   orc_int8 var33;
15592
15593   for (j = 0; j < m; j++) {
15594     ptr4 = ORC_PTR_OFFSET(ex->arrays[4], ex->params[4] * j);
15595     ptr5 = ORC_PTR_OFFSET(ex->arrays[5], ex->params[5] * j);
15596
15597
15598     for (i = 0; i < n; i++) {
15599       /* 0: loadb */
15600       var32 = ptr4[i];
15601       /* 1: loadb */
15602       var33 = ptr5[i];
15603       /* 2: accsadubl */
15604       var12.i = var12.i + ORC_ABS((orc_int32)(orc_uint8)var32 - (orc_int32)(orc_uint8)var33);
15605     }
15606   }
15607   ex->accumulators[0] = var12.i;
15608
15609 }
15610
15611 void
15612 orc_sad_32xn_u8 (uint32_t * a1, const uint8_t * s1, int s1_stride, const uint8_t * s2, int s2_stride, int m)
15613 {
15614   OrcExecutor _ex, *ex = &_ex;
15615   static int p_inited = 0;
15616   static OrcProgram *p = 0;
15617   void (*func) (OrcExecutor *);
15618
15619   if (!p_inited) {
15620     orc_once_mutex_lock ();
15621     if (!p_inited) {
15622       OrcCompileResult result;
15623
15624       p = orc_program_new ();
15625       orc_program_set_constant_n (p, 32);
15626       orc_program_set_2d (p);
15627       orc_program_set_name (p, "orc_sad_32xn_u8");
15628       orc_program_set_backup_function (p, _backup_orc_sad_32xn_u8);
15629       orc_program_add_source (p, 1, "s1");
15630       orc_program_add_source (p, 1, "s2");
15631       orc_program_add_accumulator (p, 4, "a1");
15632
15633       orc_program_append_2 (p, "accsadubl", 0, ORC_VAR_A1, ORC_VAR_S1, ORC_VAR_S2, ORC_VAR_D1);
15634
15635       result = orc_program_compile (p);
15636     }
15637     p_inited = TRUE;
15638     orc_once_mutex_unlock ();
15639   }
15640   ex->program = p;
15641
15642   ex->n = 32;
15643   ORC_EXECUTOR_M(ex) = m;
15644   ex->arrays[ORC_VAR_S1] = (void *)s1;
15645   ex->params[ORC_VAR_S1] = s1_stride;
15646   ex->arrays[ORC_VAR_S2] = (void *)s2;
15647   ex->params[ORC_VAR_S2] = s2_stride;
15648
15649   func = p->code_exec;
15650   func (ex);
15651   *a1 = orc_executor_get_accumulator (ex, ORC_VAR_A1);
15652 }
15653 #endif
15654
15655
15656 /* convert_rgb_to_gray */
15657 #ifdef DISABLE_ORC
15658 void
15659 convert_rgb_to_gray (orc_uint8 * d1, const orc_uint32 * s1, int n){
15660   int i;
15661   orc_int8 * ORC_RESTRICT ptr0;
15662   const orc_union32 * ORC_RESTRICT ptr4;
15663   orc_union32 var35;
15664   orc_union16 var36;
15665   orc_union32 var37;
15666   orc_union16 var38;
15667   orc_union32 var39;
15668   orc_union16 var40;
15669   orc_union16 var41;
15670   orc_int8 var42;
15671   orc_union16 var43;
15672   orc_int8 var44;
15673   orc_union16 var45;
15674   orc_union16 var46;
15675   orc_union16 var47;
15676   orc_union16 var48;
15677   orc_int8 var49;
15678   orc_union16 var50;
15679   orc_union16 var51;
15680   orc_union16 var52;
15681   orc_union16 var53;
15682   orc_union16 var54;
15683   orc_int8 var55;
15684   orc_union16 var56;
15685   orc_union16 var57;
15686   orc_union16 var58;
15687   orc_union16 var59;
15688   orc_union16 var60;
15689
15690   ptr0 = (orc_int8 *)d1;
15691   ptr4 = (orc_union32 *)s1;
15692
15693     /* 5: loadpw */
15694     var36.i = 0x00004c8b; /* 19595 or 9.68122e-320f */
15695     /* 12: loadpw */
15696     var38.i = 0x00009646; /* 38470 or 1.90067e-319f */
15697     /* 20: loadpw */
15698     var40.i = 0x00001d2f; /* 7471 or 3.69116e-320f */
15699     /* 23: loadpw */
15700     var41.i = 0x00000080; /* 128 or 6.32404e-322f */
15701
15702   for (i = 0; i < n; i++) {
15703     /* 0: loadl */
15704     var35 = ptr4[i];
15705     /* 1: select0lw */
15706     var43.i = (orc_uint32)var35.i & 0xffff;
15707     /* 2: select0wb */
15708     var44 = (orc_uint16)var43.i & 0xff;
15709     /* 3: convubw */
15710     var45.i = (orc_uint8)var44;
15711     /* 4: swapw */
15712     var46.i = ORC_SWAP_W(var45.i);
15713     /* 6: mulhuw */
15714     var47.i = ((orc_uint32)((orc_uint16)var46.i) * (orc_uint32)((orc_uint16)var36.i)) >> 16;
15715     /* 7: loadl */
15716     var37 = ptr4[i];
15717     /* 8: select0lw */
15718     var48.i = (orc_uint32)var37.i & 0xffff;
15719     /* 9: select1wb */
15720     var49 = ((orc_uint16)var48.i >> 8)&0xff;
15721     /* 10: convubw */
15722     var50.i = (orc_uint8)var49;
15723     /* 11: swapw */
15724     var51.i = ORC_SWAP_W(var50.i);
15725     /* 13: mulhuw */
15726     var52.i = ((orc_uint32)((orc_uint16)var51.i) * (orc_uint32)((orc_uint16)var38.i)) >> 16;
15727     /* 14: addusw */
15728     var53.i = ORC_CLAMP_UW((orc_uint16)var47.i + (orc_uint16)var52.i);
15729     /* 15: loadl */
15730     var39 = ptr4[i];
15731     /* 16: select1lw */
15732     var54.i = ((orc_uint32)var39.i >> 16)&0xffff;
15733     /* 17: select0wb */
15734     var55 = (orc_uint16)var54.i & 0xff;
15735     /* 18: convubw */
15736     var56.i = (orc_uint8)var55;
15737     /* 19: swapw */
15738     var57.i = ORC_SWAP_W(var56.i);
15739     /* 21: mulhuw */
15740     var58.i = ((orc_uint32)((orc_uint16)var57.i) * (orc_uint32)((orc_uint16)var40.i)) >> 16;
15741     /* 22: addusw */
15742     var59.i = ORC_CLAMP_UW((orc_uint16)var53.i + (orc_uint16)var58.i);
15743     /* 24: addusw */
15744     var60.i = ORC_CLAMP_UW((orc_uint16)var59.i + (orc_uint16)var41.i);
15745     /* 25: select1wb */
15746     var42 = ((orc_uint16)var60.i >> 8)&0xff;
15747     /* 26: storeb */
15748     ptr0[i] = var42;
15749   }
15750
15751 }
15752
15753 #else
15754 static void
15755 _backup_convert_rgb_to_gray (OrcExecutor * ORC_RESTRICT ex)
15756 {
15757   int i;
15758   int n = ex->n;
15759   orc_int8 * ORC_RESTRICT ptr0;
15760   const orc_union32 * ORC_RESTRICT ptr4;
15761   orc_union32 var35;
15762   orc_union16 var36;
15763   orc_union32 var37;
15764   orc_union16 var38;
15765   orc_union32 var39;
15766   orc_union16 var40;
15767   orc_union16 var41;
15768   orc_int8 var42;
15769   orc_union16 var43;
15770   orc_int8 var44;
15771   orc_union16 var45;
15772   orc_union16 var46;
15773   orc_union16 var47;
15774   orc_union16 var48;
15775   orc_int8 var49;
15776   orc_union16 var50;
15777   orc_union16 var51;
15778   orc_union16 var52;
15779   orc_union16 var53;
15780   orc_union16 var54;
15781   orc_int8 var55;
15782   orc_union16 var56;
15783   orc_union16 var57;
15784   orc_union16 var58;
15785   orc_union16 var59;
15786   orc_union16 var60;
15787
15788   ptr0 = (orc_int8 *)ex->arrays[0];
15789   ptr4 = (orc_union32 *)ex->arrays[4];
15790
15791     /* 5: loadpw */
15792     var36.i = 0x00004c8b; /* 19595 or 9.68122e-320f */
15793     /* 12: loadpw */
15794     var38.i = 0x00009646; /* 38470 or 1.90067e-319f */
15795     /* 20: loadpw */
15796     var40.i = 0x00001d2f; /* 7471 or 3.69116e-320f */
15797     /* 23: loadpw */
15798     var41.i = 0x00000080; /* 128 or 6.32404e-322f */
15799
15800   for (i = 0; i < n; i++) {
15801     /* 0: loadl */
15802     var35 = ptr4[i];
15803     /* 1: select0lw */
15804     var43.i = (orc_uint32)var35.i & 0xffff;
15805     /* 2: select0wb */
15806     var44 = (orc_uint16)var43.i & 0xff;
15807     /* 3: convubw */
15808     var45.i = (orc_uint8)var44;
15809     /* 4: swapw */
15810     var46.i = ORC_SWAP_W(var45.i);
15811     /* 6: mulhuw */
15812     var47.i = ((orc_uint32)((orc_uint16)var46.i) * (orc_uint32)((orc_uint16)var36.i)) >> 16;
15813     /* 7: loadl */
15814     var37 = ptr4[i];
15815     /* 8: select0lw */
15816     var48.i = (orc_uint32)var37.i & 0xffff;
15817     /* 9: select1wb */
15818     var49 = ((orc_uint16)var48.i >> 8)&0xff;
15819     /* 10: convubw */
15820     var50.i = (orc_uint8)var49;
15821     /* 11: swapw */
15822     var51.i = ORC_SWAP_W(var50.i);
15823     /* 13: mulhuw */
15824     var52.i = ((orc_uint32)((orc_uint16)var51.i) * (orc_uint32)((orc_uint16)var38.i)) >> 16;
15825     /* 14: addusw */
15826     var53.i = ORC_CLAMP_UW((orc_uint16)var47.i + (orc_uint16)var52.i);
15827     /* 15: loadl */
15828     var39 = ptr4[i];
15829     /* 16: select1lw */
15830     var54.i = ((orc_uint32)var39.i >> 16)&0xffff;
15831     /* 17: select0wb */
15832     var55 = (orc_uint16)var54.i & 0xff;
15833     /* 18: convubw */
15834     var56.i = (orc_uint8)var55;
15835     /* 19: swapw */
15836     var57.i = ORC_SWAP_W(var56.i);
15837     /* 21: mulhuw */
15838     var58.i = ((orc_uint32)((orc_uint16)var57.i) * (orc_uint32)((orc_uint16)var40.i)) >> 16;
15839     /* 22: addusw */
15840     var59.i = ORC_CLAMP_UW((orc_uint16)var53.i + (orc_uint16)var58.i);
15841     /* 24: addusw */
15842     var60.i = ORC_CLAMP_UW((orc_uint16)var59.i + (orc_uint16)var41.i);
15843     /* 25: select1wb */
15844     var42 = ((orc_uint16)var60.i >> 8)&0xff;
15845     /* 26: storeb */
15846     ptr0[i] = var42;
15847   }
15848
15849 }
15850
15851 void
15852 convert_rgb_to_gray (orc_uint8 * d1, const orc_uint32 * s1, int n)
15853 {
15854   OrcExecutor _ex, *ex = &_ex;
15855   static int p_inited = 0;
15856   static OrcProgram *p = 0;
15857   void (*func) (OrcExecutor *);
15858
15859   if (!p_inited) {
15860     orc_once_mutex_lock ();
15861     if (!p_inited) {
15862       OrcCompileResult result;
15863
15864       p = orc_program_new ();
15865       orc_program_set_name (p, "convert_rgb_to_gray");
15866       orc_program_set_backup_function (p, _backup_convert_rgb_to_gray);
15867       orc_program_add_destination (p, 1, "d1");
15868       orc_program_add_source (p, 4, "s1");
15869       orc_program_add_constant (p, 4, 0x00004c8b, "c1");
15870       orc_program_add_constant (p, 4, 0x00009646, "c2");
15871       orc_program_add_constant (p, 4, 0x00001d2f, "c3");
15872       orc_program_add_constant (p, 4, 0x00000080, "c4");
15873       orc_program_add_temporary (p, 1, "t1");
15874       orc_program_add_temporary (p, 2, "t2");
15875       orc_program_add_temporary (p, 2, "t3");
15876
15877       orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
15878       orc_program_append_2 (p, "select0wb", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
15879       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
15880       orc_program_append_2 (p, "swapw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_D1, ORC_VAR_D1);
15881       orc_program_append_2 (p, "mulhuw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C1, ORC_VAR_D1);
15882       orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
15883       orc_program_append_2 (p, "select1wb", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
15884       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
15885       orc_program_append_2 (p, "swapw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
15886       orc_program_append_2 (p, "mulhuw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C2, ORC_VAR_D1);
15887       orc_program_append_2 (p, "addusw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1);
15888       orc_program_append_2 (p, "select1lw", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
15889       orc_program_append_2 (p, "select0wb", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
15890       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
15891       orc_program_append_2 (p, "swapw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
15892       orc_program_append_2 (p, "mulhuw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C3, ORC_VAR_D1);
15893       orc_program_append_2 (p, "addusw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1);
15894       orc_program_append_2 (p, "addusw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C4, ORC_VAR_D1);
15895       orc_program_append_2 (p, "select1wb", 0, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_D1, ORC_VAR_D1);
15896
15897       result = orc_program_compile (p);
15898     }
15899     p_inited = TRUE;
15900     orc_once_mutex_unlock ();
15901   }
15902   ex->program = p;
15903
15904   ex->n = n;
15905   ex->arrays[ORC_VAR_D1] = d1;
15906   ex->arrays[ORC_VAR_S1] = (void *)s1;
15907
15908   func = p->code_exec;
15909   func (ex);
15910 }
15911 #endif
15912
15913
15914 /* canny_calc_delta_x */
15915 #ifdef DISABLE_ORC
15916 void
15917 canny_calc_delta_x (int32_t * d1, const uint8_t * s1, const uint8_t * s2, int n){
15918   int i;
15919   orc_union32 * ORC_RESTRICT ptr0;
15920   const orc_union32 * ORC_RESTRICT ptr4;
15921   const orc_union32 * ORC_RESTRICT ptr5;
15922   orc_union32 var40;
15923   orc_union32 var41;
15924   orc_union32 var42;
15925   orc_union32 var43;
15926   orc_union32 var44;
15927   orc_union32 var45;
15928   orc_union32 var46;
15929   orc_union16 var47;
15930   orc_int8 var48;
15931   orc_union16 var49;
15932   orc_int8 var50;
15933   orc_union16 var51;
15934   orc_union16 var52;
15935   orc_union16 var53;
15936   orc_union32 var54;
15937   orc_union32 var55;
15938   orc_union16 var56;
15939   orc_int8 var57;
15940   orc_union16 var58;
15941   orc_int8 var59;
15942   orc_union16 var60;
15943   orc_union16 var61;
15944   orc_union16 var62;
15945   orc_union32 var63;
15946   orc_union32 var64;
15947   orc_union32 var65;
15948   orc_union16 var66;
15949   orc_int8 var67;
15950   orc_union16 var68;
15951   orc_int8 var69;
15952   orc_union16 var70;
15953   orc_union16 var71;
15954   orc_union16 var72;
15955   orc_union32 var73;
15956   orc_union32 var74;
15957
15958   ptr0 = (orc_union32 *)d1;
15959   ptr4 = (orc_union32 *)s1;
15960   ptr5 = (orc_union32 *)s2;
15961
15962
15963   for (i = 0; i < n; i++) {
15964     /* 0: loadl */
15965     var40 = ptr4[i];
15966     /* 1: select0lw */
15967     var47.i = (orc_uint32)var40.i & 0xffff;
15968     /* 2: select1wb */
15969     var48 = ((orc_uint16)var47.i >> 8)&0xff;
15970     /* 3: loadl */
15971     var41 = ptr5[i];
15972     /* 4: select0lw */
15973     var49.i = (orc_uint32)var41.i & 0xffff;
15974     /* 5: select1wb */
15975     var50 = ((orc_uint16)var49.i >> 8)&0xff;
15976     /* 6: convubw */
15977     var51.i = (orc_uint8)var48;
15978     /* 7: convubw */
15979     var52.i = (orc_uint8)var50;
15980     /* 8: subw */
15981     var53.i = var51.i - var52.i;
15982     /* 9: convswl */
15983     var54.i = var53.i;
15984     /* 10: mulll */
15985     var55.i = (var54.i * var54.i) & 0xffffffff;
15986     /* 11: loadl */
15987     var42 = ptr4[i];
15988     /* 12: select1lw */
15989     var56.i = ((orc_uint32)var42.i >> 16)&0xffff;
15990     /* 13: select0wb */
15991     var57 = (orc_uint16)var56.i & 0xff;
15992     /* 14: loadl */
15993     var43 = ptr5[i];
15994     /* 15: select1lw */
15995     var58.i = ((orc_uint32)var43.i >> 16)&0xffff;
15996     /* 16: select0wb */
15997     var59 = (orc_uint16)var58.i & 0xff;
15998     /* 17: convubw */
15999     var60.i = (orc_uint8)var57;
16000     /* 18: convubw */
16001     var61.i = (orc_uint8)var59;
16002     /* 19: subw */
16003     var62.i = var60.i - var61.i;
16004     /* 20: convswl */
16005     var63.i = var62.i;
16006     /* 21: mulll */
16007     var64.i = (var63.i * var63.i) & 0xffffffff;
16008     /* 22: addl */
16009     var65.i = var55.i + var64.i;
16010     /* 23: loadl */
16011     var44 = ptr4[i];
16012     /* 24: select1lw */
16013     var66.i = ((orc_uint32)var44.i >> 16)&0xffff;
16014     /* 25: select1wb */
16015     var67 = ((orc_uint16)var66.i >> 8)&0xff;
16016     /* 26: loadl */
16017     var45 = ptr5[i];
16018     /* 27: select1lw */
16019     var68.i = ((orc_uint32)var45.i >> 16)&0xffff;
16020     /* 28: select1wb */
16021     var69 = ((orc_uint16)var68.i >> 8)&0xff;
16022     /* 29: convubw */
16023     var70.i = (orc_uint8)var67;
16024     /* 30: convubw */
16025     var71.i = (orc_uint8)var69;
16026     /* 31: subw */
16027     var72.i = var70.i - var71.i;
16028     /* 32: convswl */
16029     var73.i = var72.i;
16030     /* 33: mulll */
16031     var74.i = (var73.i * var73.i) & 0xffffffff;
16032     /* 34: addl */
16033     var46.i = var65.i + var74.i;
16034     /* 35: storel */
16035     ptr0[i] = var46;
16036   }
16037
16038 }
16039
16040 #else
16041 static void
16042 _backup_canny_calc_delta_x (OrcExecutor * ORC_RESTRICT ex)
16043 {
16044   int i;
16045   int n = ex->n;
16046   orc_union32 * ORC_RESTRICT ptr0;
16047   const orc_union32 * ORC_RESTRICT ptr4;
16048   const orc_union32 * ORC_RESTRICT ptr5;
16049   orc_union32 var40;
16050   orc_union32 var41;
16051   orc_union32 var42;
16052   orc_union32 var43;
16053   orc_union32 var44;
16054   orc_union32 var45;
16055   orc_union32 var46;
16056   orc_union16 var47;
16057   orc_int8 var48;
16058   orc_union16 var49;
16059   orc_int8 var50;
16060   orc_union16 var51;
16061   orc_union16 var52;
16062   orc_union16 var53;
16063   orc_union32 var54;
16064   orc_union32 var55;
16065   orc_union16 var56;
16066   orc_int8 var57;
16067   orc_union16 var58;
16068   orc_int8 var59;
16069   orc_union16 var60;
16070   orc_union16 var61;
16071   orc_union16 var62;
16072   orc_union32 var63;
16073   orc_union32 var64;
16074   orc_union32 var65;
16075   orc_union16 var66;
16076   orc_int8 var67;
16077   orc_union16 var68;
16078   orc_int8 var69;
16079   orc_union16 var70;
16080   orc_union16 var71;
16081   orc_union16 var72;
16082   orc_union32 var73;
16083   orc_union32 var74;
16084
16085   ptr0 = (orc_union32 *)ex->arrays[0];
16086   ptr4 = (orc_union32 *)ex->arrays[4];
16087   ptr5 = (orc_union32 *)ex->arrays[5];
16088
16089
16090   for (i = 0; i < n; i++) {
16091     /* 0: loadl */
16092     var40 = ptr4[i];
16093     /* 1: select0lw */
16094     var47.i = (orc_uint32)var40.i & 0xffff;
16095     /* 2: select1wb */
16096     var48 = ((orc_uint16)var47.i >> 8)&0xff;
16097     /* 3: loadl */
16098     var41 = ptr5[i];
16099     /* 4: select0lw */
16100     var49.i = (orc_uint32)var41.i & 0xffff;
16101     /* 5: select1wb */
16102     var50 = ((orc_uint16)var49.i >> 8)&0xff;
16103     /* 6: convubw */
16104     var51.i = (orc_uint8)var48;
16105     /* 7: convubw */
16106     var52.i = (orc_uint8)var50;
16107     /* 8: subw */
16108     var53.i = var51.i - var52.i;
16109     /* 9: convswl */
16110     var54.i = var53.i;
16111     /* 10: mulll */
16112     var55.i = (var54.i * var54.i) & 0xffffffff;
16113     /* 11: loadl */
16114     var42 = ptr4[i];
16115     /* 12: select1lw */
16116     var56.i = ((orc_uint32)var42.i >> 16)&0xffff;
16117     /* 13: select0wb */
16118     var57 = (orc_uint16)var56.i & 0xff;
16119     /* 14: loadl */
16120     var43 = ptr5[i];
16121     /* 15: select1lw */
16122     var58.i = ((orc_uint32)var43.i >> 16)&0xffff;
16123     /* 16: select0wb */
16124     var59 = (orc_uint16)var58.i & 0xff;
16125     /* 17: convubw */
16126     var60.i = (orc_uint8)var57;
16127     /* 18: convubw */
16128     var61.i = (orc_uint8)var59;
16129     /* 19: subw */
16130     var62.i = var60.i - var61.i;
16131     /* 20: convswl */
16132     var63.i = var62.i;
16133     /* 21: mulll */
16134     var64.i = (var63.i * var63.i) & 0xffffffff;
16135     /* 22: addl */
16136     var65.i = var55.i + var64.i;
16137     /* 23: loadl */
16138     var44 = ptr4[i];
16139     /* 24: select1lw */
16140     var66.i = ((orc_uint32)var44.i >> 16)&0xffff;
16141     /* 25: select1wb */
16142     var67 = ((orc_uint16)var66.i >> 8)&0xff;
16143     /* 26: loadl */
16144     var45 = ptr5[i];
16145     /* 27: select1lw */
16146     var68.i = ((orc_uint32)var45.i >> 16)&0xffff;
16147     /* 28: select1wb */
16148     var69 = ((orc_uint16)var68.i >> 8)&0xff;
16149     /* 29: convubw */
16150     var70.i = (orc_uint8)var67;
16151     /* 30: convubw */
16152     var71.i = (orc_uint8)var69;
16153     /* 31: subw */
16154     var72.i = var70.i - var71.i;
16155     /* 32: convswl */
16156     var73.i = var72.i;
16157     /* 33: mulll */
16158     var74.i = (var73.i * var73.i) & 0xffffffff;
16159     /* 34: addl */
16160     var46.i = var65.i + var74.i;
16161     /* 35: storel */
16162     ptr0[i] = var46;
16163   }
16164
16165 }
16166
16167 void
16168 canny_calc_delta_x (int32_t * d1, const uint8_t * s1, const uint8_t * s2, int n)
16169 {
16170   OrcExecutor _ex, *ex = &_ex;
16171   static int p_inited = 0;
16172   static OrcProgram *p = 0;
16173   void (*func) (OrcExecutor *);
16174
16175   if (!p_inited) {
16176     orc_once_mutex_lock ();
16177     if (!p_inited) {
16178       OrcCompileResult result;
16179
16180       p = orc_program_new ();
16181       orc_program_set_name (p, "canny_calc_delta_x");
16182       orc_program_set_backup_function (p, _backup_canny_calc_delta_x);
16183       orc_program_add_destination (p, 4, "d1");
16184       orc_program_add_source (p, 4, "s1");
16185       orc_program_add_source (p, 4, "s2");
16186       orc_program_add_temporary (p, 2, "t1");
16187       orc_program_add_temporary (p, 2, "t2");
16188       orc_program_add_temporary (p, 1, "t3");
16189       orc_program_add_temporary (p, 2, "t4");
16190       orc_program_add_temporary (p, 1, "t5");
16191       orc_program_add_temporary (p, 2, "t6");
16192       orc_program_add_temporary (p, 4, "t7");
16193       orc_program_add_temporary (p, 4, "t8");
16194
16195       orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
16196       orc_program_append_2 (p, "select1wb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
16197       orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T4, ORC_VAR_S2, ORC_VAR_D1, ORC_VAR_D1);
16198       orc_program_append_2 (p, "select1wb", 0, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_D1, ORC_VAR_D1);
16199       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1, ORC_VAR_D1);
16200       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T6, ORC_VAR_T5, ORC_VAR_D1, ORC_VAR_D1);
16201       orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_T4, ORC_VAR_T6, ORC_VAR_D1);
16202       orc_program_append_2 (p, "convswl", 0, ORC_VAR_T7, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
16203       orc_program_append_2 (p, "mulll", 0, ORC_VAR_T8, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_D1);
16204       orc_program_append_2 (p, "select1lw", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
16205       orc_program_append_2 (p, "select0wb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
16206       orc_program_append_2 (p, "select1lw", 0, ORC_VAR_T4, ORC_VAR_S2, ORC_VAR_D1, ORC_VAR_D1);
16207       orc_program_append_2 (p, "select0wb", 0, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_D1, ORC_VAR_D1);
16208       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1, ORC_VAR_D1);
16209       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T6, ORC_VAR_T5, ORC_VAR_D1, ORC_VAR_D1);
16210       orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_T4, ORC_VAR_T6, ORC_VAR_D1);
16211       orc_program_append_2 (p, "convswl", 0, ORC_VAR_T7, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
16212       orc_program_append_2 (p, "mulll", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_D1);
16213       orc_program_append_2 (p, "addl", 0, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_T7, ORC_VAR_D1);
16214       orc_program_append_2 (p, "select1lw", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
16215       orc_program_append_2 (p, "select1wb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
16216       orc_program_append_2 (p, "select1lw", 0, ORC_VAR_T4, ORC_VAR_S2, ORC_VAR_D1, ORC_VAR_D1);
16217       orc_program_append_2 (p, "select1wb", 0, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_D1, ORC_VAR_D1);
16218       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1, ORC_VAR_D1);
16219       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T6, ORC_VAR_T5, ORC_VAR_D1, ORC_VAR_D1);
16220       orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_T4, ORC_VAR_T6, ORC_VAR_D1);
16221       orc_program_append_2 (p, "convswl", 0, ORC_VAR_T7, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
16222       orc_program_append_2 (p, "mulll", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_D1);
16223       orc_program_append_2 (p, "addl", 0, ORC_VAR_D1, ORC_VAR_T8, ORC_VAR_T7, ORC_VAR_D1);
16224
16225       result = orc_program_compile (p);
16226     }
16227     p_inited = TRUE;
16228     orc_once_mutex_unlock ();
16229   }
16230   ex->program = p;
16231
16232   ex->n = n;
16233   ex->arrays[ORC_VAR_D1] = d1;
16234   ex->arrays[ORC_VAR_S1] = (void *)s1;
16235   ex->arrays[ORC_VAR_S2] = (void *)s2;
16236
16237   func = p->code_exec;
16238   func (ex);
16239 }
16240 #endif
16241
16242
16243 /* i420_to_ayuv */
16244 #ifdef DISABLE_ORC
16245 void
16246 i420_to_ayuv (orc_uint32 * d1, const orc_uint8 * s1, const orc_uint8 * s2, const orc_uint8 * s3, int p1, int n){
16247   int i;
16248   orc_union32 * ORC_RESTRICT ptr0;
16249   const orc_int8 * ORC_RESTRICT ptr4;
16250   const orc_int8 * ORC_RESTRICT ptr5;
16251   const orc_int8 * ORC_RESTRICT ptr6;
16252   orc_int8 var37;
16253   orc_union32 var38;
16254   orc_int8 var39;
16255   orc_int8 var40;
16256   orc_int8 var41;
16257   orc_union16 var42;
16258   orc_union16 var43;
16259
16260   ptr0 = (orc_union32 *)d1;
16261   ptr4 = (orc_int8 *)s1;
16262   ptr5 = (orc_int8 *)s2;
16263   ptr6 = (orc_int8 *)s3;
16264
16265     /* 3: loadpb */
16266     var37 = p1;
16267
16268   for (i = 0; i < n; i++) {
16269     /* 0: loadupdb */
16270     var39 = ptr5[i>>1];
16271     /* 1: loadupdb */
16272     var40 = ptr6[i>>1];
16273     /* 2: loadb */
16274     var41 = ptr4[i];
16275     /* 4: mergebw */
16276     var42.i = ((orc_uint8)var37 & 0x00ff) | ((orc_uint8)var41 << 8);
16277     /* 5: mergebw */
16278     var43.i = ((orc_uint8)var39 & 0x00ff) | ((orc_uint8)var40 << 8);
16279     /* 6: mergewl */
16280     var38.i = ((orc_uint16)var42.i & 0x0000ffff) | ((orc_uint16)var43.i << 16);
16281     /* 7: storel */
16282     ptr0[i] = var38;
16283   }
16284
16285 }
16286
16287 #else
16288 static void
16289 _backup_i420_to_ayuv (OrcExecutor * ORC_RESTRICT ex)
16290 {
16291   int i;
16292   int n = ex->n;
16293   orc_union32 * ORC_RESTRICT ptr0;
16294   const orc_int8 * ORC_RESTRICT ptr4;
16295   const orc_int8 * ORC_RESTRICT ptr5;
16296   const orc_int8 * ORC_RESTRICT ptr6;
16297   orc_int8 var37;
16298   orc_union32 var38;
16299   orc_int8 var39;
16300   orc_int8 var40;
16301   orc_int8 var41;
16302   orc_union16 var42;
16303   orc_union16 var43;
16304
16305   ptr0 = (orc_union32 *)ex->arrays[0];
16306   ptr4 = (orc_int8 *)ex->arrays[4];
16307   ptr5 = (orc_int8 *)ex->arrays[5];
16308   ptr6 = (orc_int8 *)ex->arrays[6];
16309
16310     /* 3: loadpb */
16311     var37 = ex->params[24];
16312
16313   for (i = 0; i < n; i++) {
16314     /* 0: loadupdb */
16315     var39 = ptr5[i>>1];
16316     /* 1: loadupdb */
16317     var40 = ptr6[i>>1];
16318     /* 2: loadb */
16319     var41 = ptr4[i];
16320     /* 4: mergebw */
16321     var42.i = ((orc_uint8)var37 & 0x00ff) | ((orc_uint8)var41 << 8);
16322     /* 5: mergebw */
16323     var43.i = ((orc_uint8)var39 & 0x00ff) | ((orc_uint8)var40 << 8);
16324     /* 6: mergewl */
16325     var38.i = ((orc_uint16)var42.i & 0x0000ffff) | ((orc_uint16)var43.i << 16);
16326     /* 7: storel */
16327     ptr0[i] = var38;
16328   }
16329
16330 }
16331
16332 void
16333 i420_to_ayuv (orc_uint32 * d1, const orc_uint8 * s1, const orc_uint8 * s2, const orc_uint8 * s3, int p1, int n)
16334 {
16335   OrcExecutor _ex, *ex = &_ex;
16336   static int p_inited = 0;
16337   static OrcProgram *p = 0;
16338   void (*func) (OrcExecutor *);
16339
16340   if (!p_inited) {
16341     orc_once_mutex_lock ();
16342     if (!p_inited) {
16343       OrcCompileResult result;
16344
16345       p = orc_program_new ();
16346       orc_program_set_name (p, "i420_to_ayuv");
16347       orc_program_set_backup_function (p, _backup_i420_to_ayuv);
16348       orc_program_add_destination (p, 4, "d1");
16349       orc_program_add_source (p, 1, "s1");
16350       orc_program_add_source (p, 1, "s2");
16351       orc_program_add_source (p, 1, "s3");
16352       orc_program_add_parameter (p, 1, "p1");
16353       orc_program_add_temporary (p, 1, "t1");
16354       orc_program_add_temporary (p, 1, "t2");
16355       orc_program_add_temporary (p, 1, "t3");
16356       orc_program_add_temporary (p, 2, "t4");
16357       orc_program_add_temporary (p, 2, "t5");
16358
16359       orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_D1, ORC_VAR_D1);
16360       orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T2, ORC_VAR_S3, ORC_VAR_D1, ORC_VAR_D1);
16361       orc_program_append_2 (p, "loadb", 0, ORC_VAR_T3, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
16362       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T4, ORC_VAR_P1, ORC_VAR_T3, ORC_VAR_D1);
16363       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T5, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1);
16364       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T4, ORC_VAR_T5, ORC_VAR_D1);
16365
16366       result = orc_program_compile (p);
16367     }
16368     p_inited = TRUE;
16369     orc_once_mutex_unlock ();
16370   }
16371   ex->program = p;
16372
16373   ex->n = n;
16374   ex->arrays[ORC_VAR_D1] = d1;
16375   ex->arrays[ORC_VAR_S1] = (void *)s1;
16376   ex->arrays[ORC_VAR_S2] = (void *)s2;
16377   ex->arrays[ORC_VAR_S3] = (void *)s3;
16378   ex->params[ORC_VAR_P1] = p1;
16379
16380   func = p->code_exec;
16381   func (ex);
16382 }
16383 #endif
16384
16385
16386 /* test_4x */
16387 #ifdef DISABLE_ORC
16388 void
16389 test_4x (orc_uint32 * d1, const orc_uint32 * s1, const orc_uint32 * s2, int n){
16390   int i;
16391   orc_union32 * ORC_RESTRICT ptr0;
16392   const orc_union32 * ORC_RESTRICT ptr4;
16393   const orc_union32 * ORC_RESTRICT ptr5;
16394   orc_union32 var32;
16395   orc_union32 var33;
16396   orc_union32 var34;
16397
16398   ptr0 = (orc_union32 *)d1;
16399   ptr4 = (orc_union32 *)s1;
16400   ptr5 = (orc_union32 *)s2;
16401
16402
16403   for (i = 0; i < n; i++) {
16404     /* 0: loadl */
16405     var32 = ptr4[i];
16406     /* 1: loadl */
16407     var33 = ptr5[i];
16408     /* 2: addusb */
16409     var34.x4[0] = ORC_CLAMP_UB((orc_uint8)var32.x4[0] + (orc_uint8)var33.x4[0]);
16410     var34.x4[1] = ORC_CLAMP_UB((orc_uint8)var32.x4[1] + (orc_uint8)var33.x4[1]);
16411     var34.x4[2] = ORC_CLAMP_UB((orc_uint8)var32.x4[2] + (orc_uint8)var33.x4[2]);
16412     var34.x4[3] = ORC_CLAMP_UB((orc_uint8)var32.x4[3] + (orc_uint8)var33.x4[3]);
16413     /* 3: storel */
16414     ptr0[i] = var34;
16415   }
16416
16417 }
16418
16419 #else
16420 static void
16421 _backup_test_4x (OrcExecutor * ORC_RESTRICT ex)
16422 {
16423   int i;
16424   int n = ex->n;
16425   orc_union32 * ORC_RESTRICT ptr0;
16426   const orc_union32 * ORC_RESTRICT ptr4;
16427   const orc_union32 * ORC_RESTRICT ptr5;
16428   orc_union32 var32;
16429   orc_union32 var33;
16430   orc_union32 var34;
16431
16432   ptr0 = (orc_union32 *)ex->arrays[0];
16433   ptr4 = (orc_union32 *)ex->arrays[4];
16434   ptr5 = (orc_union32 *)ex->arrays[5];
16435
16436
16437   for (i = 0; i < n; i++) {
16438     /* 0: loadl */
16439     var32 = ptr4[i];
16440     /* 1: loadl */
16441     var33 = ptr5[i];
16442     /* 2: addusb */
16443     var34.x4[0] = ORC_CLAMP_UB((orc_uint8)var32.x4[0] + (orc_uint8)var33.x4[0]);
16444     var34.x4[1] = ORC_CLAMP_UB((orc_uint8)var32.x4[1] + (orc_uint8)var33.x4[1]);
16445     var34.x4[2] = ORC_CLAMP_UB((orc_uint8)var32.x4[2] + (orc_uint8)var33.x4[2]);
16446     var34.x4[3] = ORC_CLAMP_UB((orc_uint8)var32.x4[3] + (orc_uint8)var33.x4[3]);
16447     /* 3: storel */
16448     ptr0[i] = var34;
16449   }
16450
16451 }
16452
16453 void
16454 test_4x (orc_uint32 * d1, const orc_uint32 * s1, const orc_uint32 * s2, int n)
16455 {
16456   OrcExecutor _ex, *ex = &_ex;
16457   static int p_inited = 0;
16458   static OrcProgram *p = 0;
16459   void (*func) (OrcExecutor *);
16460
16461   if (!p_inited) {
16462     orc_once_mutex_lock ();
16463     if (!p_inited) {
16464       OrcCompileResult result;
16465
16466       p = orc_program_new ();
16467       orc_program_set_name (p, "test_4x");
16468       orc_program_set_backup_function (p, _backup_test_4x);
16469       orc_program_add_destination (p, 4, "d1");
16470       orc_program_add_source (p, 4, "s1");
16471       orc_program_add_source (p, 4, "s2");
16472
16473       orc_program_append_2 (p, "addusb", 2, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_S2, ORC_VAR_D1);
16474
16475       result = orc_program_compile (p);
16476     }
16477     p_inited = TRUE;
16478     orc_once_mutex_unlock ();
16479   }
16480   ex->program = p;
16481
16482   ex->n = n;
16483   ex->arrays[ORC_VAR_D1] = d1;
16484   ex->arrays[ORC_VAR_S1] = (void *)s1;
16485   ex->arrays[ORC_VAR_S2] = (void *)s2;
16486
16487   func = p->code_exec;
16488   func (ex);
16489 }
16490 #endif
16491
16492
16493 /* test_4x_2 */
16494 #ifdef DISABLE_ORC
16495 void
16496 test_4x_2 (orc_uint32 * d1, const orc_uint32 * s1, int p1, int n){
16497   int i;
16498   orc_union32 * ORC_RESTRICT ptr0;
16499   const orc_union32 * ORC_RESTRICT ptr4;
16500   orc_union32 var32;
16501   orc_union32 var33;
16502   orc_union32 var34;
16503
16504   ptr0 = (orc_union32 *)d1;
16505   ptr4 = (orc_union32 *)s1;
16506
16507     /* 1: loadpb */
16508     var33.x4[0] = p1;
16509     var33.x4[1] = p1;
16510     var33.x4[2] = p1;
16511     var33.x4[3] = p1;
16512
16513   for (i = 0; i < n; i++) {
16514     /* 0: loadl */
16515     var32 = ptr4[i];
16516     /* 2: addusb */
16517     var34.x4[0] = ORC_CLAMP_UB((orc_uint8)var32.x4[0] + (orc_uint8)var33.x4[0]);
16518     var34.x4[1] = ORC_CLAMP_UB((orc_uint8)var32.x4[1] + (orc_uint8)var33.x4[1]);
16519     var34.x4[2] = ORC_CLAMP_UB((orc_uint8)var32.x4[2] + (orc_uint8)var33.x4[2]);
16520     var34.x4[3] = ORC_CLAMP_UB((orc_uint8)var32.x4[3] + (orc_uint8)var33.x4[3]);
16521     /* 3: storel */
16522     ptr0[i] = var34;
16523   }
16524
16525 }
16526
16527 #else
16528 static void
16529 _backup_test_4x_2 (OrcExecutor * ORC_RESTRICT ex)
16530 {
16531   int i;
16532   int n = ex->n;
16533   orc_union32 * ORC_RESTRICT ptr0;
16534   const orc_union32 * ORC_RESTRICT ptr4;
16535   orc_union32 var32;
16536   orc_union32 var33;
16537   orc_union32 var34;
16538
16539   ptr0 = (orc_union32 *)ex->arrays[0];
16540   ptr4 = (orc_union32 *)ex->arrays[4];
16541
16542     /* 1: loadpb */
16543     var33.x4[0] = ex->params[24];
16544     var33.x4[1] = ex->params[24];
16545     var33.x4[2] = ex->params[24];
16546     var33.x4[3] = ex->params[24];
16547
16548   for (i = 0; i < n; i++) {
16549     /* 0: loadl */
16550     var32 = ptr4[i];
16551     /* 2: addusb */
16552     var34.x4[0] = ORC_CLAMP_UB((orc_uint8)var32.x4[0] + (orc_uint8)var33.x4[0]);
16553     var34.x4[1] = ORC_CLAMP_UB((orc_uint8)var32.x4[1] + (orc_uint8)var33.x4[1]);
16554     var34.x4[2] = ORC_CLAMP_UB((orc_uint8)var32.x4[2] + (orc_uint8)var33.x4[2]);
16555     var34.x4[3] = ORC_CLAMP_UB((orc_uint8)var32.x4[3] + (orc_uint8)var33.x4[3]);
16556     /* 3: storel */
16557     ptr0[i] = var34;
16558   }
16559
16560 }
16561
16562 void
16563 test_4x_2 (orc_uint32 * d1, const orc_uint32 * s1, int p1, int n)
16564 {
16565   OrcExecutor _ex, *ex = &_ex;
16566   static int p_inited = 0;
16567   static OrcProgram *p = 0;
16568   void (*func) (OrcExecutor *);
16569
16570   if (!p_inited) {
16571     orc_once_mutex_lock ();
16572     if (!p_inited) {
16573       OrcCompileResult result;
16574
16575       p = orc_program_new ();
16576       orc_program_set_name (p, "test_4x_2");
16577       orc_program_set_backup_function (p, _backup_test_4x_2);
16578       orc_program_add_destination (p, 4, "d1");
16579       orc_program_add_source (p, 4, "s1");
16580       orc_program_add_parameter (p, 4, "p1");
16581
16582       orc_program_append_2 (p, "addusb", 2, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_P1, ORC_VAR_D1);
16583
16584       result = orc_program_compile (p);
16585     }
16586     p_inited = TRUE;
16587     orc_once_mutex_unlock ();
16588   }
16589   ex->program = p;
16590
16591   ex->n = n;
16592   ex->arrays[ORC_VAR_D1] = d1;
16593   ex->arrays[ORC_VAR_S1] = (void *)s1;
16594   ex->params[ORC_VAR_P1] = p1;
16595
16596   func = p->code_exec;
16597   func (ex);
16598 }
16599 #endif
16600
16601
16602 /* orc_splat_u16 */
16603 #ifdef DISABLE_ORC
16604 void
16605 orc_splat_u16 (uint16_t * d1, int p1, int n){
16606   int i;
16607   orc_union16 * ORC_RESTRICT ptr0;
16608   orc_union16 var32;
16609   orc_union16 var33;
16610
16611   ptr0 = (orc_union16 *)d1;
16612
16613     /* 0: loadpw */
16614     var32.i = p1;
16615
16616   for (i = 0; i < n; i++) {
16617     /* 1: copyw */
16618     var33.i = var32.i;
16619     /* 2: storew */
16620     ptr0[i] = var33;
16621   }
16622
16623 }
16624
16625 #else
16626 static void
16627 _backup_orc_splat_u16 (OrcExecutor * ORC_RESTRICT ex)
16628 {
16629   int i;
16630   int n = ex->n;
16631   orc_union16 * ORC_RESTRICT ptr0;
16632   orc_union16 var32;
16633   orc_union16 var33;
16634
16635   ptr0 = (orc_union16 *)ex->arrays[0];
16636
16637     /* 0: loadpw */
16638     var32.i = ex->params[24];
16639
16640   for (i = 0; i < n; i++) {
16641     /* 1: copyw */
16642     var33.i = var32.i;
16643     /* 2: storew */
16644     ptr0[i] = var33;
16645   }
16646
16647 }
16648
16649 void
16650 orc_splat_u16 (uint16_t * d1, int p1, int n)
16651 {
16652   OrcExecutor _ex, *ex = &_ex;
16653   static int p_inited = 0;
16654   static OrcProgram *p = 0;
16655   void (*func) (OrcExecutor *);
16656
16657   if (!p_inited) {
16658     orc_once_mutex_lock ();
16659     if (!p_inited) {
16660       OrcCompileResult result;
16661
16662       p = orc_program_new ();
16663       orc_program_set_name (p, "orc_splat_u16");
16664       orc_program_set_backup_function (p, _backup_orc_splat_u16);
16665       orc_program_add_destination (p, 2, "d1");
16666       orc_program_add_parameter (p, 2, "p1");
16667
16668       orc_program_append_2 (p, "copyw", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1, ORC_VAR_D1);
16669
16670       result = orc_program_compile (p);
16671     }
16672     p_inited = TRUE;
16673     orc_once_mutex_unlock ();
16674   }
16675   ex->program = p;
16676
16677   ex->n = n;
16678   ex->arrays[ORC_VAR_D1] = d1;
16679   ex->params[ORC_VAR_P1] = p1;
16680
16681   func = p->code_exec;
16682   func (ex);
16683 }
16684 #endif
16685
16686
16687 /* orc_splat_u32 */
16688 #ifdef DISABLE_ORC
16689 void
16690 orc_splat_u32 (uint32_t * d1, int p1, int n){
16691   int i;
16692   orc_union32 * ORC_RESTRICT ptr0;
16693   orc_union32 var32;
16694   orc_union32 var33;
16695
16696   ptr0 = (orc_union32 *)d1;
16697
16698     /* 0: loadpl */
16699     var32.i = p1;
16700
16701   for (i = 0; i < n; i++) {
16702     /* 1: copyl */
16703     var33.i = var32.i;
16704     /* 2: storel */
16705     ptr0[i] = var33;
16706   }
16707
16708 }
16709
16710 #else
16711 static void
16712 _backup_orc_splat_u32 (OrcExecutor * ORC_RESTRICT ex)
16713 {
16714   int i;
16715   int n = ex->n;
16716   orc_union32 * ORC_RESTRICT ptr0;
16717   orc_union32 var32;
16718   orc_union32 var33;
16719
16720   ptr0 = (orc_union32 *)ex->arrays[0];
16721
16722     /* 0: loadpl */
16723     var32.i = ex->params[24];
16724
16725   for (i = 0; i < n; i++) {
16726     /* 1: copyl */
16727     var33.i = var32.i;
16728     /* 2: storel */
16729     ptr0[i] = var33;
16730   }
16731
16732 }
16733
16734 void
16735 orc_splat_u32 (uint32_t * d1, int p1, int n)
16736 {
16737   OrcExecutor _ex, *ex = &_ex;
16738   static int p_inited = 0;
16739   static OrcProgram *p = 0;
16740   void (*func) (OrcExecutor *);
16741
16742   if (!p_inited) {
16743     orc_once_mutex_lock ();
16744     if (!p_inited) {
16745       OrcCompileResult result;
16746
16747       p = orc_program_new ();
16748       orc_program_set_name (p, "orc_splat_u32");
16749       orc_program_set_backup_function (p, _backup_orc_splat_u32);
16750       orc_program_add_destination (p, 4, "d1");
16751       orc_program_add_parameter (p, 4, "p1");
16752
16753       orc_program_append_2 (p, "copyl", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1, ORC_VAR_D1);
16754
16755       result = orc_program_compile (p);
16756     }
16757     p_inited = TRUE;
16758     orc_once_mutex_unlock ();
16759   }
16760   ex->program = p;
16761
16762   ex->n = n;
16763   ex->arrays[ORC_VAR_D1] = d1;
16764   ex->params[ORC_VAR_P1] = p1;
16765
16766   func = p->code_exec;
16767   func (ex);
16768 }
16769 #endif
16770
16771
16772 /* orc_splat_u16_2d */
16773 #ifdef DISABLE_ORC
16774 void
16775 orc_splat_u16_2d (uint16_t * d1, int d1_stride, int p1, int n, int m){
16776   int i;
16777   int j;
16778   orc_union16 * ORC_RESTRICT ptr0;
16779   orc_union16 var32;
16780   orc_union16 var33;
16781
16782   for (j = 0; j < m; j++) {
16783     ptr0 = ORC_PTR_OFFSET(d1, d1_stride * j);
16784
16785       /* 0: loadpw */
16786         var32.i = p1;
16787
16788     for (i = 0; i < n; i++) {
16789       /* 1: copyw */
16790       var33.i = var32.i;
16791       /* 2: storew */
16792       ptr0[i] = var33;
16793     }
16794   }
16795
16796 }
16797
16798 #else
16799 static void
16800 _backup_orc_splat_u16_2d (OrcExecutor * ORC_RESTRICT ex)
16801 {
16802   int i;
16803   int j;
16804   int n = ex->n;
16805   int m = ex->params[ORC_VAR_A1];
16806   orc_union16 * ORC_RESTRICT ptr0;
16807   orc_union16 var32;
16808   orc_union16 var33;
16809
16810   for (j = 0; j < m; j++) {
16811     ptr0 = ORC_PTR_OFFSET(ex->arrays[0], ex->params[0] * j);
16812
16813       /* 0: loadpw */
16814         var32.i = ex->params[24];
16815
16816     for (i = 0; i < n; i++) {
16817       /* 1: copyw */
16818       var33.i = var32.i;
16819       /* 2: storew */
16820       ptr0[i] = var33;
16821     }
16822   }
16823
16824 }
16825
16826 void
16827 orc_splat_u16_2d (uint16_t * d1, int d1_stride, int p1, int n, int m)
16828 {
16829   OrcExecutor _ex, *ex = &_ex;
16830   static int p_inited = 0;
16831   static OrcProgram *p = 0;
16832   void (*func) (OrcExecutor *);
16833
16834   if (!p_inited) {
16835     orc_once_mutex_lock ();
16836     if (!p_inited) {
16837       OrcCompileResult result;
16838
16839       p = orc_program_new ();
16840       orc_program_set_2d (p);
16841       orc_program_set_name (p, "orc_splat_u16_2d");
16842       orc_program_set_backup_function (p, _backup_orc_splat_u16_2d);
16843       orc_program_add_destination (p, 2, "d1");
16844       orc_program_add_parameter (p, 2, "p1");
16845
16846       orc_program_append_2 (p, "copyw", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1, ORC_VAR_D1);
16847
16848       result = orc_program_compile (p);
16849     }
16850     p_inited = TRUE;
16851     orc_once_mutex_unlock ();
16852   }
16853   ex->program = p;
16854
16855   ex->n = n;
16856   ORC_EXECUTOR_M(ex) = m;
16857   ex->arrays[ORC_VAR_D1] = d1;
16858   ex->params[ORC_VAR_D1] = d1_stride;
16859   ex->params[ORC_VAR_P1] = p1;
16860
16861   func = p->code_exec;
16862   func (ex);
16863 }
16864 #endif
16865
16866
16867 /* orc_splat_u32_2d */
16868 #ifdef DISABLE_ORC
16869 void
16870 orc_splat_u32_2d (uint32_t * d1, int d1_stride, int p1, int n, int m){
16871   int i;
16872   int j;
16873   orc_union32 * ORC_RESTRICT ptr0;
16874   orc_union32 var32;
16875   orc_union32 var33;
16876
16877   for (j = 0; j < m; j++) {
16878     ptr0 = ORC_PTR_OFFSET(d1, d1_stride * j);
16879
16880       /* 0: loadpl */
16881         var32.i = p1;
16882
16883     for (i = 0; i < n; i++) {
16884       /* 1: copyl */
16885       var33.i = var32.i;
16886       /* 2: storel */
16887       ptr0[i] = var33;
16888     }
16889   }
16890
16891 }
16892
16893 #else
16894 static void
16895 _backup_orc_splat_u32_2d (OrcExecutor * ORC_RESTRICT ex)
16896 {
16897   int i;
16898   int j;
16899   int n = ex->n;
16900   int m = ex->params[ORC_VAR_A1];
16901   orc_union32 * ORC_RESTRICT ptr0;
16902   orc_union32 var32;
16903   orc_union32 var33;
16904
16905   for (j = 0; j < m; j++) {
16906     ptr0 = ORC_PTR_OFFSET(ex->arrays[0], ex->params[0] * j);
16907
16908       /* 0: loadpl */
16909         var32.i = ex->params[24];
16910
16911     for (i = 0; i < n; i++) {
16912       /* 1: copyl */
16913       var33.i = var32.i;
16914       /* 2: storel */
16915       ptr0[i] = var33;
16916     }
16917   }
16918
16919 }
16920
16921 void
16922 orc_splat_u32_2d (uint32_t * d1, int d1_stride, int p1, int n, int m)
16923 {
16924   OrcExecutor _ex, *ex = &_ex;
16925   static int p_inited = 0;
16926   static OrcProgram *p = 0;
16927   void (*func) (OrcExecutor *);
16928
16929   if (!p_inited) {
16930     orc_once_mutex_lock ();
16931     if (!p_inited) {
16932       OrcCompileResult result;
16933
16934       p = orc_program_new ();
16935       orc_program_set_2d (p);
16936       orc_program_set_name (p, "orc_splat_u32_2d");
16937       orc_program_set_backup_function (p, _backup_orc_splat_u32_2d);
16938       orc_program_add_destination (p, 4, "d1");
16939       orc_program_add_parameter (p, 4, "p1");
16940
16941       orc_program_append_2 (p, "copyl", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1, ORC_VAR_D1);
16942
16943       result = orc_program_compile (p);
16944     }
16945     p_inited = TRUE;
16946     orc_once_mutex_unlock ();
16947   }
16948   ex->program = p;
16949
16950   ex->n = n;
16951   ORC_EXECUTOR_M(ex) = m;
16952   ex->arrays[ORC_VAR_D1] = d1;
16953   ex->params[ORC_VAR_D1] = d1_stride;
16954   ex->params[ORC_VAR_P1] = p1;
16955
16956   func = p->code_exec;
16957   func (ex);
16958 }
16959 #endif
16960
16961
16962 /* orc_copy_u16_2d */
16963 #ifdef DISABLE_ORC
16964 void
16965 orc_copy_u16_2d (orc_uint16 * d1, int d1_stride, const orc_uint16 * s1, int s1_stride, int n, int m){
16966   int i;
16967   int j;
16968   orc_union16 * ORC_RESTRICT ptr0;
16969   const orc_union16 * ORC_RESTRICT ptr4;
16970   orc_union16 var32;
16971   orc_union16 var33;
16972
16973   for (j = 0; j < m; j++) {
16974     ptr0 = ORC_PTR_OFFSET(d1, d1_stride * j);
16975     ptr4 = ORC_PTR_OFFSET(s1, s1_stride * j);
16976
16977
16978     for (i = 0; i < n; i++) {
16979       /* 0: loadw */
16980       var32 = ptr4[i];
16981       /* 1: copyw */
16982       var33.i = var32.i;
16983       /* 2: storew */
16984       ptr0[i] = var33;
16985     }
16986   }
16987
16988 }
16989
16990 #else
16991 static void
16992 _backup_orc_copy_u16_2d (OrcExecutor * ORC_RESTRICT ex)
16993 {
16994   int i;
16995   int j;
16996   int n = ex->n;
16997   int m = ex->params[ORC_VAR_A1];
16998   orc_union16 * ORC_RESTRICT ptr0;
16999   const orc_union16 * ORC_RESTRICT ptr4;
17000   orc_union16 var32;
17001   orc_union16 var33;
17002
17003   for (j = 0; j < m; j++) {
17004     ptr0 = ORC_PTR_OFFSET(ex->arrays[0], ex->params[0] * j);
17005     ptr4 = ORC_PTR_OFFSET(ex->arrays[4], ex->params[4] * j);
17006
17007
17008     for (i = 0; i < n; i++) {
17009       /* 0: loadw */
17010       var32 = ptr4[i];
17011       /* 1: copyw */
17012       var33.i = var32.i;
17013       /* 2: storew */
17014       ptr0[i] = var33;
17015     }
17016   }
17017
17018 }
17019
17020 void
17021 orc_copy_u16_2d (orc_uint16 * d1, int d1_stride, const orc_uint16 * s1, int s1_stride, int n, int m)
17022 {
17023   OrcExecutor _ex, *ex = &_ex;
17024   static int p_inited = 0;
17025   static OrcProgram *p = 0;
17026   void (*func) (OrcExecutor *);
17027
17028   if (!p_inited) {
17029     orc_once_mutex_lock ();
17030     if (!p_inited) {
17031       OrcCompileResult result;
17032
17033       p = orc_program_new ();
17034       orc_program_set_2d (p);
17035       orc_program_set_name (p, "orc_copy_u16_2d");
17036       orc_program_set_backup_function (p, _backup_orc_copy_u16_2d);
17037       orc_program_add_destination (p, 2, "d1");
17038       orc_program_add_source (p, 2, "s1");
17039
17040       orc_program_append_2 (p, "copyw", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
17041
17042       result = orc_program_compile (p);
17043     }
17044     p_inited = TRUE;
17045     orc_once_mutex_unlock ();
17046   }
17047   ex->program = p;
17048
17049   ex->n = n;
17050   ORC_EXECUTOR_M(ex) = m;
17051   ex->arrays[ORC_VAR_D1] = d1;
17052   ex->params[ORC_VAR_D1] = d1_stride;
17053   ex->arrays[ORC_VAR_S1] = (void *)s1;
17054   ex->params[ORC_VAR_S1] = s1_stride;
17055
17056   func = p->code_exec;
17057   func (ex);
17058 }
17059 #endif
17060
17061
17062 /* orc_copy_u32_2d */
17063 #ifdef DISABLE_ORC
17064 void
17065 orc_copy_u32_2d (orc_uint32 * d1, int d1_stride, const orc_uint32 * s1, int s1_stride, int n, int m){
17066   int i;
17067   int j;
17068   orc_union32 * ORC_RESTRICT ptr0;
17069   const orc_union32 * ORC_RESTRICT ptr4;
17070   orc_union32 var32;
17071   orc_union32 var33;
17072
17073   for (j = 0; j < m; j++) {
17074     ptr0 = ORC_PTR_OFFSET(d1, d1_stride * j);
17075     ptr4 = ORC_PTR_OFFSET(s1, s1_stride * j);
17076
17077
17078     for (i = 0; i < n; i++) {
17079       /* 0: loadl */
17080       var32 = ptr4[i];
17081       /* 1: copyl */
17082       var33.i = var32.i;
17083       /* 2: storel */
17084       ptr0[i] = var33;
17085     }
17086   }
17087
17088 }
17089
17090 #else
17091 static void
17092 _backup_orc_copy_u32_2d (OrcExecutor * ORC_RESTRICT ex)
17093 {
17094   int i;
17095   int j;
17096   int n = ex->n;
17097   int m = ex->params[ORC_VAR_A1];
17098   orc_union32 * ORC_RESTRICT ptr0;
17099   const orc_union32 * ORC_RESTRICT ptr4;
17100   orc_union32 var32;
17101   orc_union32 var33;
17102
17103   for (j = 0; j < m; j++) {
17104     ptr0 = ORC_PTR_OFFSET(ex->arrays[0], ex->params[0] * j);
17105     ptr4 = ORC_PTR_OFFSET(ex->arrays[4], ex->params[4] * j);
17106
17107
17108     for (i = 0; i < n; i++) {
17109       /* 0: loadl */
17110       var32 = ptr4[i];
17111       /* 1: copyl */
17112       var33.i = var32.i;
17113       /* 2: storel */
17114       ptr0[i] = var33;
17115     }
17116   }
17117
17118 }
17119
17120 void
17121 orc_copy_u32_2d (orc_uint32 * d1, int d1_stride, const orc_uint32 * s1, int s1_stride, int n, int m)
17122 {
17123   OrcExecutor _ex, *ex = &_ex;
17124   static int p_inited = 0;
17125   static OrcProgram *p = 0;
17126   void (*func) (OrcExecutor *);
17127
17128   if (!p_inited) {
17129     orc_once_mutex_lock ();
17130     if (!p_inited) {
17131       OrcCompileResult result;
17132
17133       p = orc_program_new ();
17134       orc_program_set_2d (p);
17135       orc_program_set_name (p, "orc_copy_u32_2d");
17136       orc_program_set_backup_function (p, _backup_orc_copy_u32_2d);
17137       orc_program_add_destination (p, 4, "d1");
17138       orc_program_add_source (p, 4, "s1");
17139
17140       orc_program_append_2 (p, "copyl", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
17141
17142       result = orc_program_compile (p);
17143     }
17144     p_inited = TRUE;
17145     orc_once_mutex_unlock ();
17146   }
17147   ex->program = p;
17148
17149   ex->n = n;
17150   ORC_EXECUTOR_M(ex) = m;
17151   ex->arrays[ORC_VAR_D1] = d1;
17152   ex->params[ORC_VAR_D1] = d1_stride;
17153   ex->arrays[ORC_VAR_S1] = (void *)s1;
17154   ex->params[ORC_VAR_S1] = s1_stride;
17155
17156   func = p->code_exec;
17157   func (ex);
17158 }
17159 #endif
17160
17161
17162 /* orc_composite_add_8888_8888_2d */
17163 #ifdef DISABLE_ORC
17164 void
17165 orc_composite_add_8888_8888_2d (orc_uint32 * d1, int d1_stride, const orc_uint32 * s1, int s1_stride, int n, int m){
17166   int i;
17167   int j;
17168   orc_union32 * ORC_RESTRICT ptr0;
17169   const orc_union32 * ORC_RESTRICT ptr4;
17170   orc_union32 var32;
17171   orc_union32 var33;
17172   orc_union32 var34;
17173
17174   for (j = 0; j < m; j++) {
17175     ptr0 = ORC_PTR_OFFSET(d1, d1_stride * j);
17176     ptr4 = ORC_PTR_OFFSET(s1, s1_stride * j);
17177
17178
17179     for (i = 0; i < n; i++) {
17180       /* 0: loadl */
17181       var32 = ptr0[i];
17182       /* 1: loadl */
17183       var33 = ptr4[i];
17184       /* 2: addusb */
17185       var34.x4[0] = ORC_CLAMP_UB((orc_uint8)var32.x4[0] + (orc_uint8)var33.x4[0]);
17186       var34.x4[1] = ORC_CLAMP_UB((orc_uint8)var32.x4[1] + (orc_uint8)var33.x4[1]);
17187       var34.x4[2] = ORC_CLAMP_UB((orc_uint8)var32.x4[2] + (orc_uint8)var33.x4[2]);
17188       var34.x4[3] = ORC_CLAMP_UB((orc_uint8)var32.x4[3] + (orc_uint8)var33.x4[3]);
17189       /* 3: storel */
17190       ptr0[i] = var34;
17191     }
17192   }
17193
17194 }
17195
17196 #else
17197 static void
17198 _backup_orc_composite_add_8888_8888_2d (OrcExecutor * ORC_RESTRICT ex)
17199 {
17200   int i;
17201   int j;
17202   int n = ex->n;
17203   int m = ex->params[ORC_VAR_A1];
17204   orc_union32 * ORC_RESTRICT ptr0;
17205   const orc_union32 * ORC_RESTRICT ptr4;
17206   orc_union32 var32;
17207   orc_union32 var33;
17208   orc_union32 var34;
17209
17210   for (j = 0; j < m; j++) {
17211     ptr0 = ORC_PTR_OFFSET(ex->arrays[0], ex->params[0] * j);
17212     ptr4 = ORC_PTR_OFFSET(ex->arrays[4], ex->params[4] * j);
17213
17214
17215     for (i = 0; i < n; i++) {
17216       /* 0: loadl */
17217       var32 = ptr0[i];
17218       /* 1: loadl */
17219       var33 = ptr4[i];
17220       /* 2: addusb */
17221       var34.x4[0] = ORC_CLAMP_UB((orc_uint8)var32.x4[0] + (orc_uint8)var33.x4[0]);
17222       var34.x4[1] = ORC_CLAMP_UB((orc_uint8)var32.x4[1] + (orc_uint8)var33.x4[1]);
17223       var34.x4[2] = ORC_CLAMP_UB((orc_uint8)var32.x4[2] + (orc_uint8)var33.x4[2]);
17224       var34.x4[3] = ORC_CLAMP_UB((orc_uint8)var32.x4[3] + (orc_uint8)var33.x4[3]);
17225       /* 3: storel */
17226       ptr0[i] = var34;
17227     }
17228   }
17229
17230 }
17231
17232 void
17233 orc_composite_add_8888_8888_2d (orc_uint32 * d1, int d1_stride, const orc_uint32 * s1, int s1_stride, int n, int m)
17234 {
17235   OrcExecutor _ex, *ex = &_ex;
17236   static int p_inited = 0;
17237   static OrcProgram *p = 0;
17238   void (*func) (OrcExecutor *);
17239
17240   if (!p_inited) {
17241     orc_once_mutex_lock ();
17242     if (!p_inited) {
17243       OrcCompileResult result;
17244
17245       p = orc_program_new ();
17246       orc_program_set_2d (p);
17247       orc_program_set_name (p, "orc_composite_add_8888_8888_2d");
17248       orc_program_set_backup_function (p, _backup_orc_composite_add_8888_8888_2d);
17249       orc_program_add_destination (p, 4, "d1");
17250       orc_program_add_source (p, 4, "s1");
17251
17252       orc_program_append_2 (p, "addusb", 2, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1);
17253
17254       result = orc_program_compile (p);
17255     }
17256     p_inited = TRUE;
17257     orc_once_mutex_unlock ();
17258   }
17259   ex->program = p;
17260
17261   ex->n = n;
17262   ORC_EXECUTOR_M(ex) = m;
17263   ex->arrays[ORC_VAR_D1] = d1;
17264   ex->params[ORC_VAR_D1] = d1_stride;
17265   ex->arrays[ORC_VAR_S1] = (void *)s1;
17266   ex->params[ORC_VAR_S1] = s1_stride;
17267
17268   func = p->code_exec;
17269   func (ex);
17270 }
17271 #endif
17272
17273
17274 /* orc_composite_add_8_8_line */
17275 #ifdef DISABLE_ORC
17276 void
17277 orc_composite_add_8_8_line (orc_uint8 * d1, const orc_uint8 * s1, int n){
17278   int i;
17279   orc_int8 * ORC_RESTRICT ptr0;
17280   const orc_int8 * ORC_RESTRICT ptr4;
17281   orc_int8 var32;
17282   orc_int8 var33;
17283   orc_int8 var34;
17284
17285   ptr0 = (orc_int8 *)d1;
17286   ptr4 = (orc_int8 *)s1;
17287
17288
17289   for (i = 0; i < n; i++) {
17290     /* 0: loadb */
17291     var32 = ptr0[i];
17292     /* 1: loadb */
17293     var33 = ptr4[i];
17294     /* 2: addusb */
17295     var34 = ORC_CLAMP_UB((orc_uint8)var32 + (orc_uint8)var33);
17296     /* 3: storeb */
17297     ptr0[i] = var34;
17298   }
17299
17300 }
17301
17302 #else
17303 static void
17304 _backup_orc_composite_add_8_8_line (OrcExecutor * ORC_RESTRICT ex)
17305 {
17306   int i;
17307   int n = ex->n;
17308   orc_int8 * ORC_RESTRICT ptr0;
17309   const orc_int8 * ORC_RESTRICT ptr4;
17310   orc_int8 var32;
17311   orc_int8 var33;
17312   orc_int8 var34;
17313
17314   ptr0 = (orc_int8 *)ex->arrays[0];
17315   ptr4 = (orc_int8 *)ex->arrays[4];
17316
17317
17318   for (i = 0; i < n; i++) {
17319     /* 0: loadb */
17320     var32 = ptr0[i];
17321     /* 1: loadb */
17322     var33 = ptr4[i];
17323     /* 2: addusb */
17324     var34 = ORC_CLAMP_UB((orc_uint8)var32 + (orc_uint8)var33);
17325     /* 3: storeb */
17326     ptr0[i] = var34;
17327   }
17328
17329 }
17330
17331 void
17332 orc_composite_add_8_8_line (orc_uint8 * d1, const orc_uint8 * s1, int n)
17333 {
17334   OrcExecutor _ex, *ex = &_ex;
17335   static int p_inited = 0;
17336   static OrcProgram *p = 0;
17337   void (*func) (OrcExecutor *);
17338
17339   if (!p_inited) {
17340     orc_once_mutex_lock ();
17341     if (!p_inited) {
17342       OrcCompileResult result;
17343
17344       p = orc_program_new ();
17345       orc_program_set_name (p, "orc_composite_add_8_8_line");
17346       orc_program_set_backup_function (p, _backup_orc_composite_add_8_8_line);
17347       orc_program_add_destination (p, 1, "d1");
17348       orc_program_add_source (p, 1, "s1");
17349
17350       orc_program_append_2 (p, "addusb", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1);
17351
17352       result = orc_program_compile (p);
17353     }
17354     p_inited = TRUE;
17355     orc_once_mutex_unlock ();
17356   }
17357   ex->program = p;
17358
17359   ex->n = n;
17360   ex->arrays[ORC_VAR_D1] = d1;
17361   ex->arrays[ORC_VAR_S1] = (void *)s1;
17362
17363   func = p->code_exec;
17364   func (ex);
17365 }
17366 #endif
17367
17368
17369 /* orc_composite_add_n_8_8_line */
17370 #ifdef DISABLE_ORC
17371 void
17372 orc_composite_add_n_8_8_line (orc_uint8 * d1, const orc_uint8 * s1, int p1, int n){
17373   int i;
17374   orc_int8 * ORC_RESTRICT ptr0;
17375   const orc_int8 * ORC_RESTRICT ptr4;
17376   orc_int8 var34;
17377   orc_union16 var35;
17378   orc_int8 var36;
17379   orc_int8 var37;
17380   orc_union16 var38;
17381   orc_union16 var39;
17382   orc_union16 var40;
17383   orc_int8 var41;
17384
17385   ptr0 = (orc_int8 *)d1;
17386   ptr4 = (orc_int8 *)s1;
17387
17388     /* 2: loadpw */
17389     var35.i = p1;
17390
17391   for (i = 0; i < n; i++) {
17392     /* 0: loadb */
17393     var34 = ptr4[i];
17394     /* 1: convubw */
17395     var38.i = (orc_uint8)var34;
17396     /* 3: mullw */
17397     var39.i = (var38.i * var35.i) & 0xffff;
17398     /* 4: div255w */
17399     var40.i = ((uint16_t)(((orc_uint16)(var39.i+128)) + (((orc_uint16)(var39.i+128))>>8)))>>8;
17400     /* 5: convwb */
17401     var41 = var40.i;
17402     /* 6: loadb */
17403     var36 = ptr0[i];
17404     /* 7: addusb */
17405     var37 = ORC_CLAMP_UB((orc_uint8)var36 + (orc_uint8)var41);
17406     /* 8: storeb */
17407     ptr0[i] = var37;
17408   }
17409
17410 }
17411
17412 #else
17413 static void
17414 _backup_orc_composite_add_n_8_8_line (OrcExecutor * ORC_RESTRICT ex)
17415 {
17416   int i;
17417   int n = ex->n;
17418   orc_int8 * ORC_RESTRICT ptr0;
17419   const orc_int8 * ORC_RESTRICT ptr4;
17420   orc_int8 var34;
17421   orc_union16 var35;
17422   orc_int8 var36;
17423   orc_int8 var37;
17424   orc_union16 var38;
17425   orc_union16 var39;
17426   orc_union16 var40;
17427   orc_int8 var41;
17428
17429   ptr0 = (orc_int8 *)ex->arrays[0];
17430   ptr4 = (orc_int8 *)ex->arrays[4];
17431
17432     /* 2: loadpw */
17433     var35.i = ex->params[24];
17434
17435   for (i = 0; i < n; i++) {
17436     /* 0: loadb */
17437     var34 = ptr4[i];
17438     /* 1: convubw */
17439     var38.i = (orc_uint8)var34;
17440     /* 3: mullw */
17441     var39.i = (var38.i * var35.i) & 0xffff;
17442     /* 4: div255w */
17443     var40.i = ((uint16_t)(((orc_uint16)(var39.i+128)) + (((orc_uint16)(var39.i+128))>>8)))>>8;
17444     /* 5: convwb */
17445     var41 = var40.i;
17446     /* 6: loadb */
17447     var36 = ptr0[i];
17448     /* 7: addusb */
17449     var37 = ORC_CLAMP_UB((orc_uint8)var36 + (orc_uint8)var41);
17450     /* 8: storeb */
17451     ptr0[i] = var37;
17452   }
17453
17454 }
17455
17456 void
17457 orc_composite_add_n_8_8_line (orc_uint8 * d1, const orc_uint8 * s1, int p1, int n)
17458 {
17459   OrcExecutor _ex, *ex = &_ex;
17460   static int p_inited = 0;
17461   static OrcProgram *p = 0;
17462   void (*func) (OrcExecutor *);
17463
17464   if (!p_inited) {
17465     orc_once_mutex_lock ();
17466     if (!p_inited) {
17467       OrcCompileResult result;
17468
17469       p = orc_program_new ();
17470       orc_program_set_name (p, "orc_composite_add_n_8_8_line");
17471       orc_program_set_backup_function (p, _backup_orc_composite_add_n_8_8_line);
17472       orc_program_add_destination (p, 1, "d1");
17473       orc_program_add_source (p, 1, "s1");
17474       orc_program_add_parameter (p, 2, "p1");
17475       orc_program_add_temporary (p, 2, "t1");
17476       orc_program_add_temporary (p, 1, "t2");
17477
17478       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
17479       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1);
17480       orc_program_append_2 (p, "div255w", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
17481       orc_program_append_2 (p, "convwb", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
17482       orc_program_append_2 (p, "addusb", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_D1);
17483
17484       result = orc_program_compile (p);
17485     }
17486     p_inited = TRUE;
17487     orc_once_mutex_unlock ();
17488   }
17489   ex->program = p;
17490
17491   ex->n = n;
17492   ex->arrays[ORC_VAR_D1] = d1;
17493   ex->arrays[ORC_VAR_S1] = (void *)s1;
17494   ex->params[ORC_VAR_P1] = p1;
17495
17496   func = p->code_exec;
17497   func (ex);
17498 }
17499 #endif
17500
17501
17502 /* orc_code_combine_add_u */
17503 #ifdef DISABLE_ORC
17504 void
17505 orc_code_combine_add_u (orc_uint32 * d1, const orc_uint32 * s1, const orc_uint32 * s2, int n){
17506   int i;
17507   orc_union32 * ORC_RESTRICT ptr0;
17508   const orc_union32 * ORC_RESTRICT ptr4;
17509   const orc_union32 * ORC_RESTRICT ptr5;
17510   orc_union32 var35;
17511   orc_union32 var36;
17512   orc_union32 var37;
17513   orc_union32 var38;
17514   orc_union64 var39;
17515   orc_union64 var40;
17516   orc_union64 var41;
17517   orc_union64 var42;
17518   orc_union64 var43;
17519   orc_union32 var44;
17520
17521   ptr0 = (orc_union32 *)d1;
17522   ptr4 = (orc_union32 *)s1;
17523   ptr5 = (orc_union32 *)s2;
17524
17525
17526   for (i = 0; i < n; i++) {
17527     /* 0: loadl */
17528     var35 = ptr4[i];
17529     /* 1: convubw */
17530     var39.x4[0] = (orc_uint8)var35.x4[0];
17531     var39.x4[1] = (orc_uint8)var35.x4[1];
17532     var39.x4[2] = (orc_uint8)var35.x4[2];
17533     var39.x4[3] = (orc_uint8)var35.x4[3];
17534     /* 2: loadl */
17535     var36 = ptr5[i];
17536     /* 3: convubw */
17537     var40.x4[0] = (orc_uint8)var36.x4[0];
17538     var40.x4[1] = (orc_uint8)var36.x4[1];
17539     var40.x4[2] = (orc_uint8)var36.x4[2];
17540     var40.x4[3] = (orc_uint8)var36.x4[3];
17541     /* 4: splatw3q */
17542     var41.i = ((((orc_uint64)var40.i)>>48) << 48) | ((((orc_uint64)var40.i)>>48)<<32) | ((((orc_uint64)var40.i)>>48) << 16) | ((((orc_uint64)var40.i)>>48));
17543     /* 5: mullw */
17544     var42.x4[0] = (var39.x4[0] * var41.x4[0]) & 0xffff;
17545     var42.x4[1] = (var39.x4[1] * var41.x4[1]) & 0xffff;
17546     var42.x4[2] = (var39.x4[2] * var41.x4[2]) & 0xffff;
17547     var42.x4[3] = (var39.x4[3] * var41.x4[3]) & 0xffff;
17548     /* 6: div255w */
17549     var43.x4[0] = ((uint16_t)(((orc_uint16)(var42.x4[0]+128)) + (((orc_uint16)(var42.x4[0]+128))>>8)))>>8;
17550     var43.x4[1] = ((uint16_t)(((orc_uint16)(var42.x4[1]+128)) + (((orc_uint16)(var42.x4[1]+128))>>8)))>>8;
17551     var43.x4[2] = ((uint16_t)(((orc_uint16)(var42.x4[2]+128)) + (((orc_uint16)(var42.x4[2]+128))>>8)))>>8;
17552     var43.x4[3] = ((uint16_t)(((orc_uint16)(var42.x4[3]+128)) + (((orc_uint16)(var42.x4[3]+128))>>8)))>>8;
17553     /* 7: convwb */
17554     var44.x4[0] = var43.x4[0];
17555     var44.x4[1] = var43.x4[1];
17556     var44.x4[2] = var43.x4[2];
17557     var44.x4[3] = var43.x4[3];
17558     /* 8: loadl */
17559     var37 = ptr0[i];
17560     /* 9: addusb */
17561     var38.x4[0] = ORC_CLAMP_UB((orc_uint8)var37.x4[0] + (orc_uint8)var44.x4[0]);
17562     var38.x4[1] = ORC_CLAMP_UB((orc_uint8)var37.x4[1] + (orc_uint8)var44.x4[1]);
17563     var38.x4[2] = ORC_CLAMP_UB((orc_uint8)var37.x4[2] + (orc_uint8)var44.x4[2]);
17564     var38.x4[3] = ORC_CLAMP_UB((orc_uint8)var37.x4[3] + (orc_uint8)var44.x4[3]);
17565     /* 10: storel */
17566     ptr0[i] = var38;
17567   }
17568
17569 }
17570
17571 #else
17572 static void
17573 _backup_orc_code_combine_add_u (OrcExecutor * ORC_RESTRICT ex)
17574 {
17575   int i;
17576   int n = ex->n;
17577   orc_union32 * ORC_RESTRICT ptr0;
17578   const orc_union32 * ORC_RESTRICT ptr4;
17579   const orc_union32 * ORC_RESTRICT ptr5;
17580   orc_union32 var35;
17581   orc_union32 var36;
17582   orc_union32 var37;
17583   orc_union32 var38;
17584   orc_union64 var39;
17585   orc_union64 var40;
17586   orc_union64 var41;
17587   orc_union64 var42;
17588   orc_union64 var43;
17589   orc_union32 var44;
17590
17591   ptr0 = (orc_union32 *)ex->arrays[0];
17592   ptr4 = (orc_union32 *)ex->arrays[4];
17593   ptr5 = (orc_union32 *)ex->arrays[5];
17594
17595
17596   for (i = 0; i < n; i++) {
17597     /* 0: loadl */
17598     var35 = ptr4[i];
17599     /* 1: convubw */
17600     var39.x4[0] = (orc_uint8)var35.x4[0];
17601     var39.x4[1] = (orc_uint8)var35.x4[1];
17602     var39.x4[2] = (orc_uint8)var35.x4[2];
17603     var39.x4[3] = (orc_uint8)var35.x4[3];
17604     /* 2: loadl */
17605     var36 = ptr5[i];
17606     /* 3: convubw */
17607     var40.x4[0] = (orc_uint8)var36.x4[0];
17608     var40.x4[1] = (orc_uint8)var36.x4[1];
17609     var40.x4[2] = (orc_uint8)var36.x4[2];
17610     var40.x4[3] = (orc_uint8)var36.x4[3];
17611     /* 4: splatw3q */
17612     var41.i = ((((orc_uint64)var40.i)>>48) << 48) | ((((orc_uint64)var40.i)>>48)<<32) | ((((orc_uint64)var40.i)>>48) << 16) | ((((orc_uint64)var40.i)>>48));
17613     /* 5: mullw */
17614     var42.x4[0] = (var39.x4[0] * var41.x4[0]) & 0xffff;
17615     var42.x4[1] = (var39.x4[1] * var41.x4[1]) & 0xffff;
17616     var42.x4[2] = (var39.x4[2] * var41.x4[2]) & 0xffff;
17617     var42.x4[3] = (var39.x4[3] * var41.x4[3]) & 0xffff;
17618     /* 6: div255w */
17619     var43.x4[0] = ((uint16_t)(((orc_uint16)(var42.x4[0]+128)) + (((orc_uint16)(var42.x4[0]+128))>>8)))>>8;
17620     var43.x4[1] = ((uint16_t)(((orc_uint16)(var42.x4[1]+128)) + (((orc_uint16)(var42.x4[1]+128))>>8)))>>8;
17621     var43.x4[2] = ((uint16_t)(((orc_uint16)(var42.x4[2]+128)) + (((orc_uint16)(var42.x4[2]+128))>>8)))>>8;
17622     var43.x4[3] = ((uint16_t)(((orc_uint16)(var42.x4[3]+128)) + (((orc_uint16)(var42.x4[3]+128))>>8)))>>8;
17623     /* 7: convwb */
17624     var44.x4[0] = var43.x4[0];
17625     var44.x4[1] = var43.x4[1];
17626     var44.x4[2] = var43.x4[2];
17627     var44.x4[3] = var43.x4[3];
17628     /* 8: loadl */
17629     var37 = ptr0[i];
17630     /* 9: addusb */
17631     var38.x4[0] = ORC_CLAMP_UB((orc_uint8)var37.x4[0] + (orc_uint8)var44.x4[0]);
17632     var38.x4[1] = ORC_CLAMP_UB((orc_uint8)var37.x4[1] + (orc_uint8)var44.x4[1]);
17633     var38.x4[2] = ORC_CLAMP_UB((orc_uint8)var37.x4[2] + (orc_uint8)var44.x4[2]);
17634     var38.x4[3] = ORC_CLAMP_UB((orc_uint8)var37.x4[3] + (orc_uint8)var44.x4[3]);
17635     /* 10: storel */
17636     ptr0[i] = var38;
17637   }
17638
17639 }
17640
17641 void
17642 orc_code_combine_add_u (orc_uint32 * d1, const orc_uint32 * s1, const orc_uint32 * s2, int n)
17643 {
17644   OrcExecutor _ex, *ex = &_ex;
17645   static int p_inited = 0;
17646   static OrcProgram *p = 0;
17647   void (*func) (OrcExecutor *);
17648
17649   if (!p_inited) {
17650     orc_once_mutex_lock ();
17651     if (!p_inited) {
17652       OrcCompileResult result;
17653
17654       p = orc_program_new ();
17655       orc_program_set_name (p, "orc_code_combine_add_u");
17656       orc_program_set_backup_function (p, _backup_orc_code_combine_add_u);
17657       orc_program_add_destination (p, 4, "d1");
17658       orc_program_add_source (p, 4, "s1");
17659       orc_program_add_source (p, 4, "s2");
17660       orc_program_add_temporary (p, 8, "t1");
17661       orc_program_add_temporary (p, 8, "t2");
17662       orc_program_add_temporary (p, 4, "t3");
17663
17664       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
17665       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, ORC_VAR_D1);
17666       orc_program_append_2 (p, "splatw3q", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
17667       orc_program_append_2 (p, "mullw", 2, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1);
17668       orc_program_append_2 (p, "div255w", 2, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
17669       orc_program_append_2 (p, "convwb", 2, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
17670       orc_program_append_2 (p, "addusb", 2, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_D1);
17671
17672       result = orc_program_compile (p);
17673     }
17674     p_inited = TRUE;
17675     orc_once_mutex_unlock ();
17676   }
17677   ex->program = p;
17678
17679   ex->n = n;
17680   ex->arrays[ORC_VAR_D1] = d1;
17681   ex->arrays[ORC_VAR_S1] = (void *)s1;
17682   ex->arrays[ORC_VAR_S2] = (void *)s2;
17683
17684   func = p->code_exec;
17685   func (ex);
17686 }
17687 #endif
17688
17689
17690 /* orc_code_combine_add_u_n */
17691 #ifdef DISABLE_ORC
17692 void
17693 orc_code_combine_add_u_n (orc_uint32 * d1, const orc_uint32 * s1, int n){
17694   int i;
17695   orc_union32 * ORC_RESTRICT ptr0;
17696   const orc_union32 * ORC_RESTRICT ptr4;
17697   orc_union32 var32;
17698   orc_union32 var33;
17699   orc_union32 var34;
17700
17701   ptr0 = (orc_union32 *)d1;
17702   ptr4 = (orc_union32 *)s1;
17703
17704
17705   for (i = 0; i < n; i++) {
17706     /* 0: loadl */
17707     var32 = ptr0[i];
17708     /* 1: loadl */
17709     var33 = ptr4[i];
17710     /* 2: addusb */
17711     var34.x4[0] = ORC_CLAMP_UB((orc_uint8)var32.x4[0] + (orc_uint8)var33.x4[0]);
17712     var34.x4[1] = ORC_CLAMP_UB((orc_uint8)var32.x4[1] + (orc_uint8)var33.x4[1]);
17713     var34.x4[2] = ORC_CLAMP_UB((orc_uint8)var32.x4[2] + (orc_uint8)var33.x4[2]);
17714     var34.x4[3] = ORC_CLAMP_UB((orc_uint8)var32.x4[3] + (orc_uint8)var33.x4[3]);
17715     /* 3: storel */
17716     ptr0[i] = var34;
17717   }
17718
17719 }
17720
17721 #else
17722 static void
17723 _backup_orc_code_combine_add_u_n (OrcExecutor * ORC_RESTRICT ex)
17724 {
17725   int i;
17726   int n = ex->n;
17727   orc_union32 * ORC_RESTRICT ptr0;
17728   const orc_union32 * ORC_RESTRICT ptr4;
17729   orc_union32 var32;
17730   orc_union32 var33;
17731   orc_union32 var34;
17732
17733   ptr0 = (orc_union32 *)ex->arrays[0];
17734   ptr4 = (orc_union32 *)ex->arrays[4];
17735
17736
17737   for (i = 0; i < n; i++) {
17738     /* 0: loadl */
17739     var32 = ptr0[i];
17740     /* 1: loadl */
17741     var33 = ptr4[i];
17742     /* 2: addusb */
17743     var34.x4[0] = ORC_CLAMP_UB((orc_uint8)var32.x4[0] + (orc_uint8)var33.x4[0]);
17744     var34.x4[1] = ORC_CLAMP_UB((orc_uint8)var32.x4[1] + (orc_uint8)var33.x4[1]);
17745     var34.x4[2] = ORC_CLAMP_UB((orc_uint8)var32.x4[2] + (orc_uint8)var33.x4[2]);
17746     var34.x4[3] = ORC_CLAMP_UB((orc_uint8)var32.x4[3] + (orc_uint8)var33.x4[3]);
17747     /* 3: storel */
17748     ptr0[i] = var34;
17749   }
17750
17751 }
17752
17753 void
17754 orc_code_combine_add_u_n (orc_uint32 * d1, const orc_uint32 * s1, int n)
17755 {
17756   OrcExecutor _ex, *ex = &_ex;
17757   static int p_inited = 0;
17758   static OrcProgram *p = 0;
17759   void (*func) (OrcExecutor *);
17760
17761   if (!p_inited) {
17762     orc_once_mutex_lock ();
17763     if (!p_inited) {
17764       OrcCompileResult result;
17765
17766       p = orc_program_new ();
17767       orc_program_set_name (p, "orc_code_combine_add_u_n");
17768       orc_program_set_backup_function (p, _backup_orc_code_combine_add_u_n);
17769       orc_program_add_destination (p, 4, "d1");
17770       orc_program_add_source (p, 4, "s1");
17771
17772       orc_program_append_2 (p, "addusb", 2, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1);
17773
17774       result = orc_program_compile (p);
17775     }
17776     p_inited = TRUE;
17777     orc_once_mutex_unlock ();
17778   }
17779   ex->program = p;
17780
17781   ex->n = n;
17782   ex->arrays[ORC_VAR_D1] = d1;
17783   ex->arrays[ORC_VAR_S1] = (void *)s1;
17784
17785   func = p->code_exec;
17786   func (ex);
17787 }
17788 #endif
17789
17790
17791 /* orc_code_combine_over_u */
17792 #ifdef DISABLE_ORC
17793 void
17794 orc_code_combine_over_u (orc_uint32 * d1, const orc_uint32 * s1, const orc_uint32 * s2, int n){
17795   int i;
17796   orc_union32 * ORC_RESTRICT ptr0;
17797   const orc_union32 * ORC_RESTRICT ptr4;
17798   const orc_union32 * ORC_RESTRICT ptr5;
17799   orc_union32 var37;
17800   orc_union32 var38;
17801   orc_union64 var39;
17802   orc_union32 var40;
17803   orc_union64 var41;
17804   orc_union64 var42;
17805   orc_union64 var43;
17806   orc_union64 var44;
17807   orc_union64 var45;
17808   orc_union32 var46;
17809   orc_union32 var47;
17810   orc_union64 var48;
17811   orc_union64 var49;
17812   orc_union64 var50;
17813   orc_union64 var51;
17814   orc_union64 var52;
17815   orc_union32 var53;
17816
17817   ptr0 = (orc_union32 *)d1;
17818   ptr4 = (orc_union32 *)s1;
17819   ptr5 = (orc_union32 *)s2;
17820
17821     /* 10: loadpw */
17822     var39.x4[0] = 0x000000ff; /* 255 or 1.25987e-321f */
17823     var39.x4[1] = 0x000000ff; /* 255 or 1.25987e-321f */
17824     var39.x4[2] = 0x000000ff; /* 255 or 1.25987e-321f */
17825     var39.x4[3] = 0x000000ff; /* 255 or 1.25987e-321f */
17826
17827   for (i = 0; i < n; i++) {
17828     /* 0: loadl */
17829     var37 = ptr4[i];
17830     /* 1: convubw */
17831     var41.x4[0] = (orc_uint8)var37.x4[0];
17832     var41.x4[1] = (orc_uint8)var37.x4[1];
17833     var41.x4[2] = (orc_uint8)var37.x4[2];
17834     var41.x4[3] = (orc_uint8)var37.x4[3];
17835     /* 2: loadl */
17836     var38 = ptr5[i];
17837     /* 3: convubw */
17838     var42.x4[0] = (orc_uint8)var38.x4[0];
17839     var42.x4[1] = (orc_uint8)var38.x4[1];
17840     var42.x4[2] = (orc_uint8)var38.x4[2];
17841     var42.x4[3] = (orc_uint8)var38.x4[3];
17842     /* 4: splatw3q */
17843     var43.i = ((((orc_uint64)var42.i)>>48) << 48) | ((((orc_uint64)var42.i)>>48)<<32) | ((((orc_uint64)var42.i)>>48) << 16) | ((((orc_uint64)var42.i)>>48));
17844     /* 5: mullw */
17845     var44.x4[0] = (var41.x4[0] * var43.x4[0]) & 0xffff;
17846     var44.x4[1] = (var41.x4[1] * var43.x4[1]) & 0xffff;
17847     var44.x4[2] = (var41.x4[2] * var43.x4[2]) & 0xffff;
17848     var44.x4[3] = (var41.x4[3] * var43.x4[3]) & 0xffff;
17849     /* 6: div255w */
17850     var45.x4[0] = ((uint16_t)(((orc_uint16)(var44.x4[0]+128)) + (((orc_uint16)(var44.x4[0]+128))>>8)))>>8;
17851     var45.x4[1] = ((uint16_t)(((orc_uint16)(var44.x4[1]+128)) + (((orc_uint16)(var44.x4[1]+128))>>8)))>>8;
17852     var45.x4[2] = ((uint16_t)(((orc_uint16)(var44.x4[2]+128)) + (((orc_uint16)(var44.x4[2]+128))>>8)))>>8;
17853     var45.x4[3] = ((uint16_t)(((orc_uint16)(var44.x4[3]+128)) + (((orc_uint16)(var44.x4[3]+128))>>8)))>>8;
17854     /* 7: convwb */
17855     var46.x4[0] = var45.x4[0];
17856     var46.x4[1] = var45.x4[1];
17857     var46.x4[2] = var45.x4[2];
17858     var46.x4[3] = var45.x4[3];
17859     /* 8: loadl */
17860     var47 = ptr0[i];
17861     /* 9: convubw */
17862     var48.x4[0] = (orc_uint8)var47.x4[0];
17863     var48.x4[1] = (orc_uint8)var47.x4[1];
17864     var48.x4[2] = (orc_uint8)var47.x4[2];
17865     var48.x4[3] = (orc_uint8)var47.x4[3];
17866     /* 11: xorw */
17867     var49.x4[0] = var45.x4[0] ^ var39.x4[0];
17868     var49.x4[1] = var45.x4[1] ^ var39.x4[1];
17869     var49.x4[2] = var45.x4[2] ^ var39.x4[2];
17870     var49.x4[3] = var45.x4[3] ^ var39.x4[3];
17871     /* 12: splatw3q */
17872     var50.i = ((((orc_uint64)var49.i)>>48) << 48) | ((((orc_uint64)var49.i)>>48)<<32) | ((((orc_uint64)var49.i)>>48) << 16) | ((((orc_uint64)var49.i)>>48));
17873     /* 13: mullw */
17874     var51.x4[0] = (var48.x4[0] * var50.x4[0]) & 0xffff;
17875     var51.x4[1] = (var48.x4[1] * var50.x4[1]) & 0xffff;
17876     var51.x4[2] = (var48.x4[2] * var50.x4[2]) & 0xffff;
17877     var51.x4[3] = (var48.x4[3] * var50.x4[3]) & 0xffff;
17878     /* 14: div255w */
17879     var52.x4[0] = ((uint16_t)(((orc_uint16)(var51.x4[0]+128)) + (((orc_uint16)(var51.x4[0]+128))>>8)))>>8;
17880     var52.x4[1] = ((uint16_t)(((orc_uint16)(var51.x4[1]+128)) + (((orc_uint16)(var51.x4[1]+128))>>8)))>>8;
17881     var52.x4[2] = ((uint16_t)(((orc_uint16)(var51.x4[2]+128)) + (((orc_uint16)(var51.x4[2]+128))>>8)))>>8;
17882     var52.x4[3] = ((uint16_t)(((orc_uint16)(var51.x4[3]+128)) + (((orc_uint16)(var51.x4[3]+128))>>8)))>>8;
17883     /* 15: convwb */
17884     var53.x4[0] = var52.x4[0];
17885     var53.x4[1] = var52.x4[1];
17886     var53.x4[2] = var52.x4[2];
17887     var53.x4[3] = var52.x4[3];
17888     /* 16: addusb */
17889     var40.x4[0] = ORC_CLAMP_UB((orc_uint8)var53.x4[0] + (orc_uint8)var46.x4[0]);
17890     var40.x4[1] = ORC_CLAMP_UB((orc_uint8)var53.x4[1] + (orc_uint8)var46.x4[1]);
17891     var40.x4[2] = ORC_CLAMP_UB((orc_uint8)var53.x4[2] + (orc_uint8)var46.x4[2]);
17892     var40.x4[3] = ORC_CLAMP_UB((orc_uint8)var53.x4[3] + (orc_uint8)var46.x4[3]);
17893     /* 17: storel */
17894     ptr0[i] = var40;
17895   }
17896
17897 }
17898
17899 #else
17900 static void
17901 _backup_orc_code_combine_over_u (OrcExecutor * ORC_RESTRICT ex)
17902 {
17903   int i;
17904   int n = ex->n;
17905   orc_union32 * ORC_RESTRICT ptr0;
17906   const orc_union32 * ORC_RESTRICT ptr4;
17907   const orc_union32 * ORC_RESTRICT ptr5;
17908   orc_union32 var37;
17909   orc_union32 var38;
17910   orc_union64 var39;
17911   orc_union32 var40;
17912   orc_union64 var41;
17913   orc_union64 var42;
17914   orc_union64 var43;
17915   orc_union64 var44;
17916   orc_union64 var45;
17917   orc_union32 var46;
17918   orc_union32 var47;
17919   orc_union64 var48;
17920   orc_union64 var49;
17921   orc_union64 var50;
17922   orc_union64 var51;
17923   orc_union64 var52;
17924   orc_union32 var53;
17925
17926   ptr0 = (orc_union32 *)ex->arrays[0];
17927   ptr4 = (orc_union32 *)ex->arrays[4];
17928   ptr5 = (orc_union32 *)ex->arrays[5];
17929
17930     /* 10: loadpw */
17931     var39.x4[0] = 0x000000ff; /* 255 or 1.25987e-321f */
17932     var39.x4[1] = 0x000000ff; /* 255 or 1.25987e-321f */
17933     var39.x4[2] = 0x000000ff; /* 255 or 1.25987e-321f */
17934     var39.x4[3] = 0x000000ff; /* 255 or 1.25987e-321f */
17935
17936   for (i = 0; i < n; i++) {
17937     /* 0: loadl */
17938     var37 = ptr4[i];
17939     /* 1: convubw */
17940     var41.x4[0] = (orc_uint8)var37.x4[0];
17941     var41.x4[1] = (orc_uint8)var37.x4[1];
17942     var41.x4[2] = (orc_uint8)var37.x4[2];
17943     var41.x4[3] = (orc_uint8)var37.x4[3];
17944     /* 2: loadl */
17945     var38 = ptr5[i];
17946     /* 3: convubw */
17947     var42.x4[0] = (orc_uint8)var38.x4[0];
17948     var42.x4[1] = (orc_uint8)var38.x4[1];
17949     var42.x4[2] = (orc_uint8)var38.x4[2];
17950     var42.x4[3] = (orc_uint8)var38.x4[3];
17951     /* 4: splatw3q */
17952     var43.i = ((((orc_uint64)var42.i)>>48) << 48) | ((((orc_uint64)var42.i)>>48)<<32) | ((((orc_uint64)var42.i)>>48) << 16) | ((((orc_uint64)var42.i)>>48));
17953     /* 5: mullw */
17954     var44.x4[0] = (var41.x4[0] * var43.x4[0]) & 0xffff;
17955     var44.x4[1] = (var41.x4[1] * var43.x4[1]) & 0xffff;
17956     var44.x4[2] = (var41.x4[2] * var43.x4[2]) & 0xffff;
17957     var44.x4[3] = (var41.x4[3] * var43.x4[3]) & 0xffff;
17958     /* 6: div255w */
17959     var45.x4[0] = ((uint16_t)(((orc_uint16)(var44.x4[0]+128)) + (((orc_uint16)(var44.x4[0]+128))>>8)))>>8;
17960     var45.x4[1] = ((uint16_t)(((orc_uint16)(var44.x4[1]+128)) + (((orc_uint16)(var44.x4[1]+128))>>8)))>>8;
17961     var45.x4[2] = ((uint16_t)(((orc_uint16)(var44.x4[2]+128)) + (((orc_uint16)(var44.x4[2]+128))>>8)))>>8;
17962     var45.x4[3] = ((uint16_t)(((orc_uint16)(var44.x4[3]+128)) + (((orc_uint16)(var44.x4[3]+128))>>8)))>>8;
17963     /* 7: convwb */
17964     var46.x4[0] = var45.x4[0];
17965     var46.x4[1] = var45.x4[1];
17966     var46.x4[2] = var45.x4[2];
17967     var46.x4[3] = var45.x4[3];
17968     /* 8: loadl */
17969     var47 = ptr0[i];
17970     /* 9: convubw */
17971     var48.x4[0] = (orc_uint8)var47.x4[0];
17972     var48.x4[1] = (orc_uint8)var47.x4[1];
17973     var48.x4[2] = (orc_uint8)var47.x4[2];
17974     var48.x4[3] = (orc_uint8)var47.x4[3];
17975     /* 11: xorw */
17976     var49.x4[0] = var45.x4[0] ^ var39.x4[0];
17977     var49.x4[1] = var45.x4[1] ^ var39.x4[1];
17978     var49.x4[2] = var45.x4[2] ^ var39.x4[2];
17979     var49.x4[3] = var45.x4[3] ^ var39.x4[3];
17980     /* 12: splatw3q */
17981     var50.i = ((((orc_uint64)var49.i)>>48) << 48) | ((((orc_uint64)var49.i)>>48)<<32) | ((((orc_uint64)var49.i)>>48) << 16) | ((((orc_uint64)var49.i)>>48));
17982     /* 13: mullw */
17983     var51.x4[0] = (var48.x4[0] * var50.x4[0]) & 0xffff;
17984     var51.x4[1] = (var48.x4[1] * var50.x4[1]) & 0xffff;
17985     var51.x4[2] = (var48.x4[2] * var50.x4[2]) & 0xffff;
17986     var51.x4[3] = (var48.x4[3] * var50.x4[3]) & 0xffff;
17987     /* 14: div255w */
17988     var52.x4[0] = ((uint16_t)(((orc_uint16)(var51.x4[0]+128)) + (((orc_uint16)(var51.x4[0]+128))>>8)))>>8;
17989     var52.x4[1] = ((uint16_t)(((orc_uint16)(var51.x4[1]+128)) + (((orc_uint16)(var51.x4[1]+128))>>8)))>>8;
17990     var52.x4[2] = ((uint16_t)(((orc_uint16)(var51.x4[2]+128)) + (((orc_uint16)(var51.x4[2]+128))>>8)))>>8;
17991     var52.x4[3] = ((uint16_t)(((orc_uint16)(var51.x4[3]+128)) + (((orc_uint16)(var51.x4[3]+128))>>8)))>>8;
17992     /* 15: convwb */
17993     var53.x4[0] = var52.x4[0];
17994     var53.x4[1] = var52.x4[1];
17995     var53.x4[2] = var52.x4[2];
17996     var53.x4[3] = var52.x4[3];
17997     /* 16: addusb */
17998     var40.x4[0] = ORC_CLAMP_UB((orc_uint8)var53.x4[0] + (orc_uint8)var46.x4[0]);
17999     var40.x4[1] = ORC_CLAMP_UB((orc_uint8)var53.x4[1] + (orc_uint8)var46.x4[1]);
18000     var40.x4[2] = ORC_CLAMP_UB((orc_uint8)var53.x4[2] + (orc_uint8)var46.x4[2]);
18001     var40.x4[3] = ORC_CLAMP_UB((orc_uint8)var53.x4[3] + (orc_uint8)var46.x4[3]);
18002     /* 17: storel */
18003     ptr0[i] = var40;
18004   }
18005
18006 }
18007
18008 void
18009 orc_code_combine_over_u (orc_uint32 * d1, const orc_uint32 * s1, const orc_uint32 * s2, int n)
18010 {
18011   OrcExecutor _ex, *ex = &_ex;
18012   static int p_inited = 0;
18013   static OrcProgram *p = 0;
18014   void (*func) (OrcExecutor *);
18015
18016   if (!p_inited) {
18017     orc_once_mutex_lock ();
18018     if (!p_inited) {
18019       OrcCompileResult result;
18020
18021       p = orc_program_new ();
18022       orc_program_set_name (p, "orc_code_combine_over_u");
18023       orc_program_set_backup_function (p, _backup_orc_code_combine_over_u);
18024       orc_program_add_destination (p, 4, "d1");
18025       orc_program_add_source (p, 4, "s1");
18026       orc_program_add_source (p, 4, "s2");
18027       orc_program_add_constant (p, 4, 0x000000ff, "c1");
18028       orc_program_add_temporary (p, 8, "t1");
18029       orc_program_add_temporary (p, 8, "t2");
18030       orc_program_add_temporary (p, 4, "t3");
18031       orc_program_add_temporary (p, 4, "t4");
18032       orc_program_add_temporary (p, 8, "t5");
18033
18034       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
18035       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, ORC_VAR_D1);
18036       orc_program_append_2 (p, "splatw3q", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
18037       orc_program_append_2 (p, "mullw", 2, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1);
18038       orc_program_append_2 (p, "div255w", 2, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
18039       orc_program_append_2 (p, "convwb", 2, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
18040       orc_program_append_2 (p, "loadl", 0, ORC_VAR_T4, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_D1);
18041       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_D1, ORC_VAR_D1);
18042       orc_program_append_2 (p, "xorw", 2, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
18043       orc_program_append_2 (p, "splatw3q", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
18044       orc_program_append_2 (p, "mullw", 2, ORC_VAR_T1, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_D1);
18045       orc_program_append_2 (p, "div255w", 2, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
18046       orc_program_append_2 (p, "convwb", 2, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
18047       orc_program_append_2 (p, "addusb", 2, ORC_VAR_D1, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1);
18048
18049       result = orc_program_compile (p);
18050     }
18051     p_inited = TRUE;
18052     orc_once_mutex_unlock ();
18053   }
18054   ex->program = p;
18055
18056   ex->n = n;
18057   ex->arrays[ORC_VAR_D1] = d1;
18058   ex->arrays[ORC_VAR_S1] = (void *)s1;
18059   ex->arrays[ORC_VAR_S2] = (void *)s2;
18060
18061   func = p->code_exec;
18062   func (ex);
18063 }
18064 #endif
18065
18066
18067 /* orc_code_combine_over_u_n */
18068 #ifdef DISABLE_ORC
18069 void
18070 orc_code_combine_over_u_n (orc_uint32 * d1, const orc_uint32 * s1, int n){
18071   int i;
18072   orc_union32 * ORC_RESTRICT ptr0;
18073   const orc_union32 * ORC_RESTRICT ptr4;
18074   orc_union64 var37;
18075   orc_union32 var38;
18076   orc_union32 var39;
18077   orc_union64 var40;
18078   orc_union32 var41;
18079   orc_union64 var42;
18080   orc_union64 var43;
18081   orc_union64 var44;
18082   orc_union64 var45;
18083   orc_union64 var46;
18084   orc_union32 var47;
18085
18086   ptr0 = (orc_union32 *)d1;
18087   ptr4 = (orc_union32 *)s1;
18088
18089     /* 4: loadpw */
18090     var37.x4[0] = 0x000000ff; /* 255 or 1.25987e-321f */
18091     var37.x4[1] = 0x000000ff; /* 255 or 1.25987e-321f */
18092     var37.x4[2] = 0x000000ff; /* 255 or 1.25987e-321f */
18093     var37.x4[3] = 0x000000ff; /* 255 or 1.25987e-321f */
18094
18095   for (i = 0; i < n; i++) {
18096     /* 0: loadl */
18097     var39 = ptr4[i];
18098     /* 1: convubw */
18099     var40.x4[0] = (orc_uint8)var39.x4[0];
18100     var40.x4[1] = (orc_uint8)var39.x4[1];
18101     var40.x4[2] = (orc_uint8)var39.x4[2];
18102     var40.x4[3] = (orc_uint8)var39.x4[3];
18103     /* 2: loadl */
18104     var41 = ptr0[i];
18105     /* 3: convubw */
18106     var42.x4[0] = (orc_uint8)var41.x4[0];
18107     var42.x4[1] = (orc_uint8)var41.x4[1];
18108     var42.x4[2] = (orc_uint8)var41.x4[2];
18109     var42.x4[3] = (orc_uint8)var41.x4[3];
18110     /* 5: xorw */
18111     var43.x4[0] = var40.x4[0] ^ var37.x4[0];
18112     var43.x4[1] = var40.x4[1] ^ var37.x4[1];
18113     var43.x4[2] = var40.x4[2] ^ var37.x4[2];
18114     var43.x4[3] = var40.x4[3] ^ var37.x4[3];
18115     /* 6: splatw3q */
18116     var44.i = ((((orc_uint64)var43.i)>>48) << 48) | ((((orc_uint64)var43.i)>>48)<<32) | ((((orc_uint64)var43.i)>>48) << 16) | ((((orc_uint64)var43.i)>>48));
18117     /* 7: mullw */
18118     var45.x4[0] = (var42.x4[0] * var44.x4[0]) & 0xffff;
18119     var45.x4[1] = (var42.x4[1] * var44.x4[1]) & 0xffff;
18120     var45.x4[2] = (var42.x4[2] * var44.x4[2]) & 0xffff;
18121     var45.x4[3] = (var42.x4[3] * var44.x4[3]) & 0xffff;
18122     /* 8: div255w */
18123     var46.x4[0] = ((uint16_t)(((orc_uint16)(var45.x4[0]+128)) + (((orc_uint16)(var45.x4[0]+128))>>8)))>>8;
18124     var46.x4[1] = ((uint16_t)(((orc_uint16)(var45.x4[1]+128)) + (((orc_uint16)(var45.x4[1]+128))>>8)))>>8;
18125     var46.x4[2] = ((uint16_t)(((orc_uint16)(var45.x4[2]+128)) + (((orc_uint16)(var45.x4[2]+128))>>8)))>>8;
18126     var46.x4[3] = ((uint16_t)(((orc_uint16)(var45.x4[3]+128)) + (((orc_uint16)(var45.x4[3]+128))>>8)))>>8;
18127     /* 9: convwb */
18128     var47.x4[0] = var46.x4[0];
18129     var47.x4[1] = var46.x4[1];
18130     var47.x4[2] = var46.x4[2];
18131     var47.x4[3] = var46.x4[3];
18132     /* 10: addusb */
18133     var38.x4[0] = ORC_CLAMP_UB((orc_uint8)var47.x4[0] + (orc_uint8)var39.x4[0]);
18134     var38.x4[1] = ORC_CLAMP_UB((orc_uint8)var47.x4[1] + (orc_uint8)var39.x4[1]);
18135     var38.x4[2] = ORC_CLAMP_UB((orc_uint8)var47.x4[2] + (orc_uint8)var39.x4[2]);
18136     var38.x4[3] = ORC_CLAMP_UB((orc_uint8)var47.x4[3] + (orc_uint8)var39.x4[3]);
18137     /* 11: storel */
18138     ptr0[i] = var38;
18139   }
18140
18141 }
18142
18143 #else
18144 static void
18145 _backup_orc_code_combine_over_u_n (OrcExecutor * ORC_RESTRICT ex)
18146 {
18147   int i;
18148   int n = ex->n;
18149   orc_union32 * ORC_RESTRICT ptr0;
18150   const orc_union32 * ORC_RESTRICT ptr4;
18151   orc_union64 var37;
18152   orc_union32 var38;
18153   orc_union32 var39;
18154   orc_union64 var40;
18155   orc_union32 var41;
18156   orc_union64 var42;
18157   orc_union64 var43;
18158   orc_union64 var44;
18159   orc_union64 var45;
18160   orc_union64 var46;
18161   orc_union32 var47;
18162
18163   ptr0 = (orc_union32 *)ex->arrays[0];
18164   ptr4 = (orc_union32 *)ex->arrays[4];
18165
18166     /* 4: loadpw */
18167     var37.x4[0] = 0x000000ff; /* 255 or 1.25987e-321f */
18168     var37.x4[1] = 0x000000ff; /* 255 or 1.25987e-321f */
18169     var37.x4[2] = 0x000000ff; /* 255 or 1.25987e-321f */
18170     var37.x4[3] = 0x000000ff; /* 255 or 1.25987e-321f */
18171
18172   for (i = 0; i < n; i++) {
18173     /* 0: loadl */
18174     var39 = ptr4[i];
18175     /* 1: convubw */
18176     var40.x4[0] = (orc_uint8)var39.x4[0];
18177     var40.x4[1] = (orc_uint8)var39.x4[1];
18178     var40.x4[2] = (orc_uint8)var39.x4[2];
18179     var40.x4[3] = (orc_uint8)var39.x4[3];
18180     /* 2: loadl */
18181     var41 = ptr0[i];
18182     /* 3: convubw */
18183     var42.x4[0] = (orc_uint8)var41.x4[0];
18184     var42.x4[1] = (orc_uint8)var41.x4[1];
18185     var42.x4[2] = (orc_uint8)var41.x4[2];
18186     var42.x4[3] = (orc_uint8)var41.x4[3];
18187     /* 5: xorw */
18188     var43.x4[0] = var40.x4[0] ^ var37.x4[0];
18189     var43.x4[1] = var40.x4[1] ^ var37.x4[1];
18190     var43.x4[2] = var40.x4[2] ^ var37.x4[2];
18191     var43.x4[3] = var40.x4[3] ^ var37.x4[3];
18192     /* 6: splatw3q */
18193     var44.i = ((((orc_uint64)var43.i)>>48) << 48) | ((((orc_uint64)var43.i)>>48)<<32) | ((((orc_uint64)var43.i)>>48) << 16) | ((((orc_uint64)var43.i)>>48));
18194     /* 7: mullw */
18195     var45.x4[0] = (var42.x4[0] * var44.x4[0]) & 0xffff;
18196     var45.x4[1] = (var42.x4[1] * var44.x4[1]) & 0xffff;
18197     var45.x4[2] = (var42.x4[2] * var44.x4[2]) & 0xffff;
18198     var45.x4[3] = (var42.x4[3] * var44.x4[3]) & 0xffff;
18199     /* 8: div255w */
18200     var46.x4[0] = ((uint16_t)(((orc_uint16)(var45.x4[0]+128)) + (((orc_uint16)(var45.x4[0]+128))>>8)))>>8;
18201     var46.x4[1] = ((uint16_t)(((orc_uint16)(var45.x4[1]+128)) + (((orc_uint16)(var45.x4[1]+128))>>8)))>>8;
18202     var46.x4[2] = ((uint16_t)(((orc_uint16)(var45.x4[2]+128)) + (((orc_uint16)(var45.x4[2]+128))>>8)))>>8;
18203     var46.x4[3] = ((uint16_t)(((orc_uint16)(var45.x4[3]+128)) + (((orc_uint16)(var45.x4[3]+128))>>8)))>>8;
18204     /* 9: convwb */
18205     var47.x4[0] = var46.x4[0];
18206     var47.x4[1] = var46.x4[1];
18207     var47.x4[2] = var46.x4[2];
18208     var47.x4[3] = var46.x4[3];
18209     /* 10: addusb */
18210     var38.x4[0] = ORC_CLAMP_UB((orc_uint8)var47.x4[0] + (orc_uint8)var39.x4[0]);
18211     var38.x4[1] = ORC_CLAMP_UB((orc_uint8)var47.x4[1] + (orc_uint8)var39.x4[1]);
18212     var38.x4[2] = ORC_CLAMP_UB((orc_uint8)var47.x4[2] + (orc_uint8)var39.x4[2]);
18213     var38.x4[3] = ORC_CLAMP_UB((orc_uint8)var47.x4[3] + (orc_uint8)var39.x4[3]);
18214     /* 11: storel */
18215     ptr0[i] = var38;
18216   }
18217
18218 }
18219
18220 void
18221 orc_code_combine_over_u_n (orc_uint32 * d1, const orc_uint32 * s1, int n)
18222 {
18223   OrcExecutor _ex, *ex = &_ex;
18224   static int p_inited = 0;
18225   static OrcProgram *p = 0;
18226   void (*func) (OrcExecutor *);
18227
18228   if (!p_inited) {
18229     orc_once_mutex_lock ();
18230     if (!p_inited) {
18231       OrcCompileResult result;
18232
18233       p = orc_program_new ();
18234       orc_program_set_name (p, "orc_code_combine_over_u_n");
18235       orc_program_set_backup_function (p, _backup_orc_code_combine_over_u_n);
18236       orc_program_add_destination (p, 4, "d1");
18237       orc_program_add_source (p, 4, "s1");
18238       orc_program_add_constant (p, 4, 0x000000ff, "c1");
18239       orc_program_add_temporary (p, 8, "t1");
18240       orc_program_add_temporary (p, 8, "t2");
18241       orc_program_add_temporary (p, 4, "t3");
18242       orc_program_add_temporary (p, 4, "t4");
18243       orc_program_add_temporary (p, 8, "t5");
18244
18245       orc_program_append_2 (p, "loadl", 0, ORC_VAR_T4, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
18246       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T1, ORC_VAR_T4, ORC_VAR_D1, ORC_VAR_D1);
18247       orc_program_append_2 (p, "loadl", 0, ORC_VAR_T3, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_D1);
18248       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T5, ORC_VAR_T3, ORC_VAR_D1, ORC_VAR_D1);
18249       orc_program_append_2 (p, "xorw", 2, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
18250       orc_program_append_2 (p, "splatw3q", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
18251       orc_program_append_2 (p, "mullw", 2, ORC_VAR_T1, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_D1);
18252       orc_program_append_2 (p, "div255w", 2, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
18253       orc_program_append_2 (p, "convwb", 2, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
18254       orc_program_append_2 (p, "addusb", 2, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T4, ORC_VAR_D1);
18255
18256       result = orc_program_compile (p);
18257     }
18258     p_inited = TRUE;
18259     orc_once_mutex_unlock ();
18260   }
18261   ex->program = p;
18262
18263   ex->n = n;
18264   ex->arrays[ORC_VAR_D1] = d1;
18265   ex->arrays[ORC_VAR_S1] = (void *)s1;
18266
18267   func = p->code_exec;
18268   func (ex);
18269 }
18270 #endif
18271
18272
18273 /* orc_code_combine_in_u */
18274 #ifdef DISABLE_ORC
18275 void
18276 orc_code_combine_in_u (orc_uint32 * d1, const orc_uint32 * s1, const orc_uint32 * s2, int n){
18277   int i;
18278   orc_union32 * ORC_RESTRICT ptr0;
18279   const orc_union32 * ORC_RESTRICT ptr4;
18280   const orc_union32 * ORC_RESTRICT ptr5;
18281   orc_union32 var37;
18282   orc_union32 var38;
18283   orc_union32 var39;
18284   orc_union32 var40;
18285   orc_union64 var41;
18286   orc_union64 var42;
18287   orc_union64 var43;
18288   orc_union64 var44;
18289   orc_union64 var45;
18290   orc_union64 var46;
18291   orc_union64 var47;
18292   orc_union64 var48;
18293   orc_union64 var49;
18294
18295   ptr0 = (orc_union32 *)d1;
18296   ptr4 = (orc_union32 *)s1;
18297   ptr5 = (orc_union32 *)s2;
18298
18299
18300   for (i = 0; i < n; i++) {
18301     /* 0: loadl */
18302     var37 = ptr4[i];
18303     /* 1: convubw */
18304     var41.x4[0] = (orc_uint8)var37.x4[0];
18305     var41.x4[1] = (orc_uint8)var37.x4[1];
18306     var41.x4[2] = (orc_uint8)var37.x4[2];
18307     var41.x4[3] = (orc_uint8)var37.x4[3];
18308     /* 2: loadl */
18309     var38 = ptr5[i];
18310     /* 3: convubw */
18311     var42.x4[0] = (orc_uint8)var38.x4[0];
18312     var42.x4[1] = (orc_uint8)var38.x4[1];
18313     var42.x4[2] = (orc_uint8)var38.x4[2];
18314     var42.x4[3] = (orc_uint8)var38.x4[3];
18315     /* 4: splatw3q */
18316     var43.i = ((((orc_uint64)var42.i)>>48) << 48) | ((((orc_uint64)var42.i)>>48)<<32) | ((((orc_uint64)var42.i)>>48) << 16) | ((((orc_uint64)var42.i)>>48));
18317     /* 5: mullw */
18318     var44.x4[0] = (var41.x4[0] * var43.x4[0]) & 0xffff;
18319     var44.x4[1] = (var41.x4[1] * var43.x4[1]) & 0xffff;
18320     var44.x4[2] = (var41.x4[2] * var43.x4[2]) & 0xffff;
18321     var44.x4[3] = (var41.x4[3] * var43.x4[3]) & 0xffff;
18322     /* 6: div255w */
18323     var45.x4[0] = ((uint16_t)(((orc_uint16)(var44.x4[0]+128)) + (((orc_uint16)(var44.x4[0]+128))>>8)))>>8;
18324     var45.x4[1] = ((uint16_t)(((orc_uint16)(var44.x4[1]+128)) + (((orc_uint16)(var44.x4[1]+128))>>8)))>>8;
18325     var45.x4[2] = ((uint16_t)(((orc_uint16)(var44.x4[2]+128)) + (((orc_uint16)(var44.x4[2]+128))>>8)))>>8;
18326     var45.x4[3] = ((uint16_t)(((orc_uint16)(var44.x4[3]+128)) + (((orc_uint16)(var44.x4[3]+128))>>8)))>>8;
18327     /* 7: loadl */
18328     var39 = ptr0[i];
18329     /* 8: convubw */
18330     var46.x4[0] = (orc_uint8)var39.x4[0];
18331     var46.x4[1] = (orc_uint8)var39.x4[1];
18332     var46.x4[2] = (orc_uint8)var39.x4[2];
18333     var46.x4[3] = (orc_uint8)var39.x4[3];
18334     /* 9: splatw3q */
18335     var47.i = ((((orc_uint64)var46.i)>>48) << 48) | ((((orc_uint64)var46.i)>>48)<<32) | ((((orc_uint64)var46.i)>>48) << 16) | ((((orc_uint64)var46.i)>>48));
18336     /* 10: mullw */
18337     var48.x4[0] = (var45.x4[0] * var47.x4[0]) & 0xffff;
18338     var48.x4[1] = (var45.x4[1] * var47.x4[1]) & 0xffff;
18339     var48.x4[2] = (var45.x4[2] * var47.x4[2]) & 0xffff;
18340     var48.x4[3] = (var45.x4[3] * var47.x4[3]) & 0xffff;
18341     /* 11: div255w */
18342     var49.x4[0] = ((uint16_t)(((orc_uint16)(var48.x4[0]+128)) + (((orc_uint16)(var48.x4[0]+128))>>8)))>>8;
18343     var49.x4[1] = ((uint16_t)(((orc_uint16)(var48.x4[1]+128)) + (((orc_uint16)(var48.x4[1]+128))>>8)))>>8;
18344     var49.x4[2] = ((uint16_t)(((orc_uint16)(var48.x4[2]+128)) + (((orc_uint16)(var48.x4[2]+128))>>8)))>>8;
18345     var49.x4[3] = ((uint16_t)(((orc_uint16)(var48.x4[3]+128)) + (((orc_uint16)(var48.x4[3]+128))>>8)))>>8;
18346     /* 12: convwb */
18347     var40.x4[0] = var49.x4[0];
18348     var40.x4[1] = var49.x4[1];
18349     var40.x4[2] = var49.x4[2];
18350     var40.x4[3] = var49.x4[3];
18351     /* 13: storel */
18352     ptr0[i] = var40;
18353   }
18354
18355 }
18356
18357 #else
18358 static void
18359 _backup_orc_code_combine_in_u (OrcExecutor * ORC_RESTRICT ex)
18360 {
18361   int i;
18362   int n = ex->n;
18363   orc_union32 * ORC_RESTRICT ptr0;
18364   const orc_union32 * ORC_RESTRICT ptr4;
18365   const orc_union32 * ORC_RESTRICT ptr5;
18366   orc_union32 var37;
18367   orc_union32 var38;
18368   orc_union32 var39;
18369   orc_union32 var40;
18370   orc_union64 var41;
18371   orc_union64 var42;
18372   orc_union64 var43;
18373   orc_union64 var44;
18374   orc_union64 var45;
18375   orc_union64 var46;
18376   orc_union64 var47;
18377   orc_union64 var48;
18378   orc_union64 var49;
18379
18380   ptr0 = (orc_union32 *)ex->arrays[0];
18381   ptr4 = (orc_union32 *)ex->arrays[4];
18382   ptr5 = (orc_union32 *)ex->arrays[5];
18383
18384
18385   for (i = 0; i < n; i++) {
18386     /* 0: loadl */
18387     var37 = ptr4[i];
18388     /* 1: convubw */
18389     var41.x4[0] = (orc_uint8)var37.x4[0];
18390     var41.x4[1] = (orc_uint8)var37.x4[1];
18391     var41.x4[2] = (orc_uint8)var37.x4[2];
18392     var41.x4[3] = (orc_uint8)var37.x4[3];
18393     /* 2: loadl */
18394     var38 = ptr5[i];
18395     /* 3: convubw */
18396     var42.x4[0] = (orc_uint8)var38.x4[0];
18397     var42.x4[1] = (orc_uint8)var38.x4[1];
18398     var42.x4[2] = (orc_uint8)var38.x4[2];
18399     var42.x4[3] = (orc_uint8)var38.x4[3];
18400     /* 4: splatw3q */
18401     var43.i = ((((orc_uint64)var42.i)>>48) << 48) | ((((orc_uint64)var42.i)>>48)<<32) | ((((orc_uint64)var42.i)>>48) << 16) | ((((orc_uint64)var42.i)>>48));
18402     /* 5: mullw */
18403     var44.x4[0] = (var41.x4[0] * var43.x4[0]) & 0xffff;
18404     var44.x4[1] = (var41.x4[1] * var43.x4[1]) & 0xffff;
18405     var44.x4[2] = (var41.x4[2] * var43.x4[2]) & 0xffff;
18406     var44.x4[3] = (var41.x4[3] * var43.x4[3]) & 0xffff;
18407     /* 6: div255w */
18408     var45.x4[0] = ((uint16_t)(((orc_uint16)(var44.x4[0]+128)) + (((orc_uint16)(var44.x4[0]+128))>>8)))>>8;
18409     var45.x4[1] = ((uint16_t)(((orc_uint16)(var44.x4[1]+128)) + (((orc_uint16)(var44.x4[1]+128))>>8)))>>8;
18410     var45.x4[2] = ((uint16_t)(((orc_uint16)(var44.x4[2]+128)) + (((orc_uint16)(var44.x4[2]+128))>>8)))>>8;
18411     var45.x4[3] = ((uint16_t)(((orc_uint16)(var44.x4[3]+128)) + (((orc_uint16)(var44.x4[3]+128))>>8)))>>8;
18412     /* 7: loadl */
18413     var39 = ptr0[i];
18414     /* 8: convubw */
18415     var46.x4[0] = (orc_uint8)var39.x4[0];
18416     var46.x4[1] = (orc_uint8)var39.x4[1];
18417     var46.x4[2] = (orc_uint8)var39.x4[2];
18418     var46.x4[3] = (orc_uint8)var39.x4[3];
18419     /* 9: splatw3q */
18420     var47.i = ((((orc_uint64)var46.i)>>48) << 48) | ((((orc_uint64)var46.i)>>48)<<32) | ((((orc_uint64)var46.i)>>48) << 16) | ((((orc_uint64)var46.i)>>48));
18421     /* 10: mullw */
18422     var48.x4[0] = (var45.x4[0] * var47.x4[0]) & 0xffff;
18423     var48.x4[1] = (var45.x4[1] * var47.x4[1]) & 0xffff;
18424     var48.x4[2] = (var45.x4[2] * var47.x4[2]) & 0xffff;
18425     var48.x4[3] = (var45.x4[3] * var47.x4[3]) & 0xffff;
18426     /* 11: div255w */
18427     var49.x4[0] = ((uint16_t)(((orc_uint16)(var48.x4[0]+128)) + (((orc_uint16)(var48.x4[0]+128))>>8)))>>8;
18428     var49.x4[1] = ((uint16_t)(((orc_uint16)(var48.x4[1]+128)) + (((orc_uint16)(var48.x4[1]+128))>>8)))>>8;
18429     var49.x4[2] = ((uint16_t)(((orc_uint16)(var48.x4[2]+128)) + (((orc_uint16)(var48.x4[2]+128))>>8)))>>8;
18430     var49.x4[3] = ((uint16_t)(((orc_uint16)(var48.x4[3]+128)) + (((orc_uint16)(var48.x4[3]+128))>>8)))>>8;
18431     /* 12: convwb */
18432     var40.x4[0] = var49.x4[0];
18433     var40.x4[1] = var49.x4[1];
18434     var40.x4[2] = var49.x4[2];
18435     var40.x4[3] = var49.x4[3];
18436     /* 13: storel */
18437     ptr0[i] = var40;
18438   }
18439
18440 }
18441
18442 void
18443 orc_code_combine_in_u (orc_uint32 * d1, const orc_uint32 * s1, const orc_uint32 * s2, int n)
18444 {
18445   OrcExecutor _ex, *ex = &_ex;
18446   static int p_inited = 0;
18447   static OrcProgram *p = 0;
18448   void (*func) (OrcExecutor *);
18449
18450   if (!p_inited) {
18451     orc_once_mutex_lock ();
18452     if (!p_inited) {
18453       OrcCompileResult result;
18454
18455       p = orc_program_new ();
18456       orc_program_set_name (p, "orc_code_combine_in_u");
18457       orc_program_set_backup_function (p, _backup_orc_code_combine_in_u);
18458       orc_program_add_destination (p, 4, "d1");
18459       orc_program_add_source (p, 4, "s1");
18460       orc_program_add_source (p, 4, "s2");
18461       orc_program_add_temporary (p, 8, "t1");
18462       orc_program_add_temporary (p, 8, "t2");
18463       orc_program_add_temporary (p, 8, "t3");
18464       orc_program_add_temporary (p, 8, "t4");
18465       orc_program_add_temporary (p, 8, "t5");
18466
18467       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T4, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
18468       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T5, ORC_VAR_S2, ORC_VAR_D1, ORC_VAR_D1);
18469       orc_program_append_2 (p, "splatw3q", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_D1, ORC_VAR_D1);
18470       orc_program_append_2 (p, "mullw", 2, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_T5, ORC_VAR_D1);
18471       orc_program_append_2 (p, "div255w", 2, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_D1, ORC_VAR_D1);
18472       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_D1);
18473       orc_program_append_2 (p, "splatw3q", 0, ORC_VAR_T5, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
18474       orc_program_append_2 (p, "mullw", 2, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_T5, ORC_VAR_D1);
18475       orc_program_append_2 (p, "div255w", 2, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_D1, ORC_VAR_D1);
18476       orc_program_append_2 (p, "convwb", 2, ORC_VAR_D1, ORC_VAR_T4, ORC_VAR_D1, ORC_VAR_D1);
18477
18478       result = orc_program_compile (p);
18479     }
18480     p_inited = TRUE;
18481     orc_once_mutex_unlock ();
18482   }
18483   ex->program = p;
18484
18485   ex->n = n;
18486   ex->arrays[ORC_VAR_D1] = d1;
18487   ex->arrays[ORC_VAR_S1] = (void *)s1;
18488   ex->arrays[ORC_VAR_S2] = (void *)s2;
18489
18490   func = p->code_exec;
18491   func (ex);
18492 }
18493 #endif
18494
18495
18496 /* orc_code_combine_in_u_n */
18497 #ifdef DISABLE_ORC
18498 void
18499 orc_code_combine_in_u_n (orc_uint32 * d1, const orc_uint32 * s1, int n){
18500   int i;
18501   orc_union32 * ORC_RESTRICT ptr0;
18502   const orc_union32 * ORC_RESTRICT ptr4;
18503   orc_union32 var37;
18504   orc_union32 var38;
18505   orc_union32 var39;
18506   orc_union64 var40;
18507   orc_union64 var41;
18508   orc_union64 var42;
18509   orc_union64 var43;
18510   orc_union64 var44;
18511
18512   ptr0 = (orc_union32 *)d1;
18513   ptr4 = (orc_union32 *)s1;
18514
18515
18516   for (i = 0; i < n; i++) {
18517     /* 0: loadl */
18518     var37 = ptr4[i];
18519     /* 1: convubw */
18520     var40.x4[0] = (orc_uint8)var37.x4[0];
18521     var40.x4[1] = (orc_uint8)var37.x4[1];
18522     var40.x4[2] = (orc_uint8)var37.x4[2];
18523     var40.x4[3] = (orc_uint8)var37.x4[3];
18524     /* 2: loadl */
18525     var38 = ptr0[i];
18526     /* 3: convubw */
18527     var41.x4[0] = (orc_uint8)var38.x4[0];
18528     var41.x4[1] = (orc_uint8)var38.x4[1];
18529     var41.x4[2] = (orc_uint8)var38.x4[2];
18530     var41.x4[3] = (orc_uint8)var38.x4[3];
18531     /* 4: splatw3q */
18532     var42.i = ((((orc_uint64)var41.i)>>48) << 48) | ((((orc_uint64)var41.i)>>48)<<32) | ((((orc_uint64)var41.i)>>48) << 16) | ((((orc_uint64)var41.i)>>48));
18533     /* 5: mullw */
18534     var43.x4[0] = (var40.x4[0] * var42.x4[0]) & 0xffff;
18535     var43.x4[1] = (var40.x4[1] * var42.x4[1]) & 0xffff;
18536     var43.x4[2] = (var40.x4[2] * var42.x4[2]) & 0xffff;
18537     var43.x4[3] = (var40.x4[3] * var42.x4[3]) & 0xffff;
18538     /* 6: div255w */
18539     var44.x4[0] = ((uint16_t)(((orc_uint16)(var43.x4[0]+128)) + (((orc_uint16)(var43.x4[0]+128))>>8)))>>8;
18540     var44.x4[1] = ((uint16_t)(((orc_uint16)(var43.x4[1]+128)) + (((orc_uint16)(var43.x4[1]+128))>>8)))>>8;
18541     var44.x4[2] = ((uint16_t)(((orc_uint16)(var43.x4[2]+128)) + (((orc_uint16)(var43.x4[2]+128))>>8)))>>8;
18542     var44.x4[3] = ((uint16_t)(((orc_uint16)(var43.x4[3]+128)) + (((orc_uint16)(var43.x4[3]+128))>>8)))>>8;
18543     /* 7: convwb */
18544     var39.x4[0] = var44.x4[0];
18545     var39.x4[1] = var44.x4[1];
18546     var39.x4[2] = var44.x4[2];
18547     var39.x4[3] = var44.x4[3];
18548     /* 8: storel */
18549     ptr0[i] = var39;
18550   }
18551
18552 }
18553
18554 #else
18555 static void
18556 _backup_orc_code_combine_in_u_n (OrcExecutor * ORC_RESTRICT ex)
18557 {
18558   int i;
18559   int n = ex->n;
18560   orc_union32 * ORC_RESTRICT ptr0;
18561   const orc_union32 * ORC_RESTRICT ptr4;
18562   orc_union32 var37;
18563   orc_union32 var38;
18564   orc_union32 var39;
18565   orc_union64 var40;
18566   orc_union64 var41;
18567   orc_union64 var42;
18568   orc_union64 var43;
18569   orc_union64 var44;
18570
18571   ptr0 = (orc_union32 *)ex->arrays[0];
18572   ptr4 = (orc_union32 *)ex->arrays[4];
18573
18574
18575   for (i = 0; i < n; i++) {
18576     /* 0: loadl */
18577     var37 = ptr4[i];
18578     /* 1: convubw */
18579     var40.x4[0] = (orc_uint8)var37.x4[0];
18580     var40.x4[1] = (orc_uint8)var37.x4[1];
18581     var40.x4[2] = (orc_uint8)var37.x4[2];
18582     var40.x4[3] = (orc_uint8)var37.x4[3];
18583     /* 2: loadl */
18584     var38 = ptr0[i];
18585     /* 3: convubw */
18586     var41.x4[0] = (orc_uint8)var38.x4[0];
18587     var41.x4[1] = (orc_uint8)var38.x4[1];
18588     var41.x4[2] = (orc_uint8)var38.x4[2];
18589     var41.x4[3] = (orc_uint8)var38.x4[3];
18590     /* 4: splatw3q */
18591     var42.i = ((((orc_uint64)var41.i)>>48) << 48) | ((((orc_uint64)var41.i)>>48)<<32) | ((((orc_uint64)var41.i)>>48) << 16) | ((((orc_uint64)var41.i)>>48));
18592     /* 5: mullw */
18593     var43.x4[0] = (var40.x4[0] * var42.x4[0]) & 0xffff;
18594     var43.x4[1] = (var40.x4[1] * var42.x4[1]) & 0xffff;
18595     var43.x4[2] = (var40.x4[2] * var42.x4[2]) & 0xffff;
18596     var43.x4[3] = (var40.x4[3] * var42.x4[3]) & 0xffff;
18597     /* 6: div255w */
18598     var44.x4[0] = ((uint16_t)(((orc_uint16)(var43.x4[0]+128)) + (((orc_uint16)(var43.x4[0]+128))>>8)))>>8;
18599     var44.x4[1] = ((uint16_t)(((orc_uint16)(var43.x4[1]+128)) + (((orc_uint16)(var43.x4[1]+128))>>8)))>>8;
18600     var44.x4[2] = ((uint16_t)(((orc_uint16)(var43.x4[2]+128)) + (((orc_uint16)(var43.x4[2]+128))>>8)))>>8;
18601     var44.x4[3] = ((uint16_t)(((orc_uint16)(var43.x4[3]+128)) + (((orc_uint16)(var43.x4[3]+128))>>8)))>>8;
18602     /* 7: convwb */
18603     var39.x4[0] = var44.x4[0];
18604     var39.x4[1] = var44.x4[1];
18605     var39.x4[2] = var44.x4[2];
18606     var39.x4[3] = var44.x4[3];
18607     /* 8: storel */
18608     ptr0[i] = var39;
18609   }
18610
18611 }
18612
18613 void
18614 orc_code_combine_in_u_n (orc_uint32 * d1, const orc_uint32 * s1, int n)
18615 {
18616   OrcExecutor _ex, *ex = &_ex;
18617   static int p_inited = 0;
18618   static OrcProgram *p = 0;
18619   void (*func) (OrcExecutor *);
18620
18621   if (!p_inited) {
18622     orc_once_mutex_lock ();
18623     if (!p_inited) {
18624       OrcCompileResult result;
18625
18626       p = orc_program_new ();
18627       orc_program_set_name (p, "orc_code_combine_in_u_n");
18628       orc_program_set_backup_function (p, _backup_orc_code_combine_in_u_n);
18629       orc_program_add_destination (p, 4, "d1");
18630       orc_program_add_source (p, 4, "s1");
18631       orc_program_add_temporary (p, 8, "t1");
18632       orc_program_add_temporary (p, 8, "t2");
18633       orc_program_add_temporary (p, 8, "t3");
18634       orc_program_add_temporary (p, 8, "t4");
18635       orc_program_add_temporary (p, 8, "t5");
18636
18637       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T4, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
18638       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_D1);
18639       orc_program_append_2 (p, "splatw3q", 0, ORC_VAR_T5, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
18640       orc_program_append_2 (p, "mullw", 2, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_T5, ORC_VAR_D1);
18641       orc_program_append_2 (p, "div255w", 2, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_D1, ORC_VAR_D1);
18642       orc_program_append_2 (p, "convwb", 2, ORC_VAR_D1, ORC_VAR_T4, ORC_VAR_D1, ORC_VAR_D1);
18643
18644       result = orc_program_compile (p);
18645     }
18646     p_inited = TRUE;
18647     orc_once_mutex_unlock ();
18648   }
18649   ex->program = p;
18650
18651   ex->n = n;
18652   ex->arrays[ORC_VAR_D1] = d1;
18653   ex->arrays[ORC_VAR_S1] = (void *)s1;
18654
18655   func = p->code_exec;
18656   func (ex);
18657 }
18658 #endif
18659
18660
18661 /* orc_code_combine_out_u */
18662 #ifdef DISABLE_ORC
18663 void
18664 orc_code_combine_out_u (orc_uint32 * d1, const orc_uint32 * s1, const orc_uint32 * s2, int n){
18665   int i;
18666   orc_union32 * ORC_RESTRICT ptr0;
18667   const orc_union32 * ORC_RESTRICT ptr4;
18668   const orc_union32 * ORC_RESTRICT ptr5;
18669   orc_union32 var37;
18670   orc_union32 var38;
18671   orc_union32 var39;
18672   orc_union64 var40;
18673   orc_union32 var41;
18674   orc_union64 var42;
18675   orc_union64 var43;
18676   orc_union64 var44;
18677   orc_union64 var45;
18678   orc_union64 var46;
18679   orc_union64 var47;
18680   orc_union64 var48;
18681   orc_union64 var49;
18682   orc_union64 var50;
18683   orc_union64 var51;
18684
18685   ptr0 = (orc_union32 *)d1;
18686   ptr4 = (orc_union32 *)s1;
18687   ptr5 = (orc_union32 *)s2;
18688
18689     /* 10: loadpw */
18690     var40.x4[0] = 0x000000ff; /* 255 or 1.25987e-321f */
18691     var40.x4[1] = 0x000000ff; /* 255 or 1.25987e-321f */
18692     var40.x4[2] = 0x000000ff; /* 255 or 1.25987e-321f */
18693     var40.x4[3] = 0x000000ff; /* 255 or 1.25987e-321f */
18694
18695   for (i = 0; i < n; i++) {
18696     /* 0: loadl */
18697     var37 = ptr4[i];
18698     /* 1: convubw */
18699     var42.x4[0] = (orc_uint8)var37.x4[0];
18700     var42.x4[1] = (orc_uint8)var37.x4[1];
18701     var42.x4[2] = (orc_uint8)var37.x4[2];
18702     var42.x4[3] = (orc_uint8)var37.x4[3];
18703     /* 2: loadl */
18704     var38 = ptr5[i];
18705     /* 3: convubw */
18706     var43.x4[0] = (orc_uint8)var38.x4[0];
18707     var43.x4[1] = (orc_uint8)var38.x4[1];
18708     var43.x4[2] = (orc_uint8)var38.x4[2];
18709     var43.x4[3] = (orc_uint8)var38.x4[3];
18710     /* 4: splatw3q */
18711     var44.i = ((((orc_uint64)var43.i)>>48) << 48) | ((((orc_uint64)var43.i)>>48)<<32) | ((((orc_uint64)var43.i)>>48) << 16) | ((((orc_uint64)var43.i)>>48));
18712     /* 5: mullw */
18713     var45.x4[0] = (var42.x4[0] * var44.x4[0]) & 0xffff;
18714     var45.x4[1] = (var42.x4[1] * var44.x4[1]) & 0xffff;
18715     var45.x4[2] = (var42.x4[2] * var44.x4[2]) & 0xffff;
18716     var45.x4[3] = (var42.x4[3] * var44.x4[3]) & 0xffff;
18717     /* 6: div255w */
18718     var46.x4[0] = ((uint16_t)(((orc_uint16)(var45.x4[0]+128)) + (((orc_uint16)(var45.x4[0]+128))>>8)))>>8;
18719     var46.x4[1] = ((uint16_t)(((orc_uint16)(var45.x4[1]+128)) + (((orc_uint16)(var45.x4[1]+128))>>8)))>>8;
18720     var46.x4[2] = ((uint16_t)(((orc_uint16)(var45.x4[2]+128)) + (((orc_uint16)(var45.x4[2]+128))>>8)))>>8;
18721     var46.x4[3] = ((uint16_t)(((orc_uint16)(var45.x4[3]+128)) + (((orc_uint16)(var45.x4[3]+128))>>8)))>>8;
18722     /* 7: loadl */
18723     var39 = ptr0[i];
18724     /* 8: convubw */
18725     var47.x4[0] = (orc_uint8)var39.x4[0];
18726     var47.x4[1] = (orc_uint8)var39.x4[1];
18727     var47.x4[2] = (orc_uint8)var39.x4[2];
18728     var47.x4[3] = (orc_uint8)var39.x4[3];
18729     /* 9: splatw3q */
18730     var48.i = ((((orc_uint64)var47.i)>>48) << 48) | ((((orc_uint64)var47.i)>>48)<<32) | ((((orc_uint64)var47.i)>>48) << 16) | ((((orc_uint64)var47.i)>>48));
18731     /* 11: xorw */
18732     var49.x4[0] = var48.x4[0] ^ var40.x4[0];
18733     var49.x4[1] = var48.x4[1] ^ var40.x4[1];
18734     var49.x4[2] = var48.x4[2] ^ var40.x4[2];
18735     var49.x4[3] = var48.x4[3] ^ var40.x4[3];
18736     /* 12: mullw */
18737     var50.x4[0] = (var46.x4[0] * var49.x4[0]) & 0xffff;
18738     var50.x4[1] = (var46.x4[1] * var49.x4[1]) & 0xffff;
18739     var50.x4[2] = (var46.x4[2] * var49.x4[2]) & 0xffff;
18740     var50.x4[3] = (var46.x4[3] * var49.x4[3]) & 0xffff;
18741     /* 13: div255w */
18742     var51.x4[0] = ((uint16_t)(((orc_uint16)(var50.x4[0]+128)) + (((orc_uint16)(var50.x4[0]+128))>>8)))>>8;
18743     var51.x4[1] = ((uint16_t)(((orc_uint16)(var50.x4[1]+128)) + (((orc_uint16)(var50.x4[1]+128))>>8)))>>8;
18744     var51.x4[2] = ((uint16_t)(((orc_uint16)(var50.x4[2]+128)) + (((orc_uint16)(var50.x4[2]+128))>>8)))>>8;
18745     var51.x4[3] = ((uint16_t)(((orc_uint16)(var50.x4[3]+128)) + (((orc_uint16)(var50.x4[3]+128))>>8)))>>8;
18746     /* 14: convwb */
18747     var41.x4[0] = var51.x4[0];
18748     var41.x4[1] = var51.x4[1];
18749     var41.x4[2] = var51.x4[2];
18750     var41.x4[3] = var51.x4[3];
18751     /* 15: storel */
18752     ptr0[i] = var41;
18753   }
18754
18755 }
18756
18757 #else
18758 static void
18759 _backup_orc_code_combine_out_u (OrcExecutor * ORC_RESTRICT ex)
18760 {
18761   int i;
18762   int n = ex->n;
18763   orc_union32 * ORC_RESTRICT ptr0;
18764   const orc_union32 * ORC_RESTRICT ptr4;
18765   const orc_union32 * ORC_RESTRICT ptr5;
18766   orc_union32 var37;
18767   orc_union32 var38;
18768   orc_union32 var39;
18769   orc_union64 var40;
18770   orc_union32 var41;
18771   orc_union64 var42;
18772   orc_union64 var43;
18773   orc_union64 var44;
18774   orc_union64 var45;
18775   orc_union64 var46;
18776   orc_union64 var47;
18777   orc_union64 var48;
18778   orc_union64 var49;
18779   orc_union64 var50;
18780   orc_union64 var51;
18781
18782   ptr0 = (orc_union32 *)ex->arrays[0];
18783   ptr4 = (orc_union32 *)ex->arrays[4];
18784   ptr5 = (orc_union32 *)ex->arrays[5];
18785
18786     /* 10: loadpw */
18787     var40.x4[0] = 0x000000ff; /* 255 or 1.25987e-321f */
18788     var40.x4[1] = 0x000000ff; /* 255 or 1.25987e-321f */
18789     var40.x4[2] = 0x000000ff; /* 255 or 1.25987e-321f */
18790     var40.x4[3] = 0x000000ff; /* 255 or 1.25987e-321f */
18791
18792   for (i = 0; i < n; i++) {
18793     /* 0: loadl */
18794     var37 = ptr4[i];
18795     /* 1: convubw */
18796     var42.x4[0] = (orc_uint8)var37.x4[0];
18797     var42.x4[1] = (orc_uint8)var37.x4[1];
18798     var42.x4[2] = (orc_uint8)var37.x4[2];
18799     var42.x4[3] = (orc_uint8)var37.x4[3];
18800     /* 2: loadl */
18801     var38 = ptr5[i];
18802     /* 3: convubw */
18803     var43.x4[0] = (orc_uint8)var38.x4[0];
18804     var43.x4[1] = (orc_uint8)var38.x4[1];
18805     var43.x4[2] = (orc_uint8)var38.x4[2];
18806     var43.x4[3] = (orc_uint8)var38.x4[3];
18807     /* 4: splatw3q */
18808     var44.i = ((((orc_uint64)var43.i)>>48) << 48) | ((((orc_uint64)var43.i)>>48)<<32) | ((((orc_uint64)var43.i)>>48) << 16) | ((((orc_uint64)var43.i)>>48));
18809     /* 5: mullw */
18810     var45.x4[0] = (var42.x4[0] * var44.x4[0]) & 0xffff;
18811     var45.x4[1] = (var42.x4[1] * var44.x4[1]) & 0xffff;
18812     var45.x4[2] = (var42.x4[2] * var44.x4[2]) & 0xffff;
18813     var45.x4[3] = (var42.x4[3] * var44.x4[3]) & 0xffff;
18814     /* 6: div255w */
18815     var46.x4[0] = ((uint16_t)(((orc_uint16)(var45.x4[0]+128)) + (((orc_uint16)(var45.x4[0]+128))>>8)))>>8;
18816     var46.x4[1] = ((uint16_t)(((orc_uint16)(var45.x4[1]+128)) + (((orc_uint16)(var45.x4[1]+128))>>8)))>>8;
18817     var46.x4[2] = ((uint16_t)(((orc_uint16)(var45.x4[2]+128)) + (((orc_uint16)(var45.x4[2]+128))>>8)))>>8;
18818     var46.x4[3] = ((uint16_t)(((orc_uint16)(var45.x4[3]+128)) + (((orc_uint16)(var45.x4[3]+128))>>8)))>>8;
18819     /* 7: loadl */
18820     var39 = ptr0[i];
18821     /* 8: convubw */
18822     var47.x4[0] = (orc_uint8)var39.x4[0];
18823     var47.x4[1] = (orc_uint8)var39.x4[1];
18824     var47.x4[2] = (orc_uint8)var39.x4[2];
18825     var47.x4[3] = (orc_uint8)var39.x4[3];
18826     /* 9: splatw3q */
18827     var48.i = ((((orc_uint64)var47.i)>>48) << 48) | ((((orc_uint64)var47.i)>>48)<<32) | ((((orc_uint64)var47.i)>>48) << 16) | ((((orc_uint64)var47.i)>>48));
18828     /* 11: xorw */
18829     var49.x4[0] = var48.x4[0] ^ var40.x4[0];
18830     var49.x4[1] = var48.x4[1] ^ var40.x4[1];
18831     var49.x4[2] = var48.x4[2] ^ var40.x4[2];
18832     var49.x4[3] = var48.x4[3] ^ var40.x4[3];
18833     /* 12: mullw */
18834     var50.x4[0] = (var46.x4[0] * var49.x4[0]) & 0xffff;
18835     var50.x4[1] = (var46.x4[1] * var49.x4[1]) & 0xffff;
18836     var50.x4[2] = (var46.x4[2] * var49.x4[2]) & 0xffff;
18837     var50.x4[3] = (var46.x4[3] * var49.x4[3]) & 0xffff;
18838     /* 13: div255w */
18839     var51.x4[0] = ((uint16_t)(((orc_uint16)(var50.x4[0]+128)) + (((orc_uint16)(var50.x4[0]+128))>>8)))>>8;
18840     var51.x4[1] = ((uint16_t)(((orc_uint16)(var50.x4[1]+128)) + (((orc_uint16)(var50.x4[1]+128))>>8)))>>8;
18841     var51.x4[2] = ((uint16_t)(((orc_uint16)(var50.x4[2]+128)) + (((orc_uint16)(var50.x4[2]+128))>>8)))>>8;
18842     var51.x4[3] = ((uint16_t)(((orc_uint16)(var50.x4[3]+128)) + (((orc_uint16)(var50.x4[3]+128))>>8)))>>8;
18843     /* 14: convwb */
18844     var41.x4[0] = var51.x4[0];
18845     var41.x4[1] = var51.x4[1];
18846     var41.x4[2] = var51.x4[2];
18847     var41.x4[3] = var51.x4[3];
18848     /* 15: storel */
18849     ptr0[i] = var41;
18850   }
18851
18852 }
18853
18854 void
18855 orc_code_combine_out_u (orc_uint32 * d1, const orc_uint32 * s1, const orc_uint32 * s2, int n)
18856 {
18857   OrcExecutor _ex, *ex = &_ex;
18858   static int p_inited = 0;
18859   static OrcProgram *p = 0;
18860   void (*func) (OrcExecutor *);
18861
18862   if (!p_inited) {
18863     orc_once_mutex_lock ();
18864     if (!p_inited) {
18865       OrcCompileResult result;
18866
18867       p = orc_program_new ();
18868       orc_program_set_name (p, "orc_code_combine_out_u");
18869       orc_program_set_backup_function (p, _backup_orc_code_combine_out_u);
18870       orc_program_add_destination (p, 4, "d1");
18871       orc_program_add_source (p, 4, "s1");
18872       orc_program_add_source (p, 4, "s2");
18873       orc_program_add_constant (p, 4, 0x000000ff, "c1");
18874       orc_program_add_temporary (p, 8, "t1");
18875       orc_program_add_temporary (p, 8, "t2");
18876       orc_program_add_temporary (p, 8, "t3");
18877       orc_program_add_temporary (p, 8, "t4");
18878       orc_program_add_temporary (p, 8, "t5");
18879
18880       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T4, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
18881       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T5, ORC_VAR_S2, ORC_VAR_D1, ORC_VAR_D1);
18882       orc_program_append_2 (p, "splatw3q", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_D1, ORC_VAR_D1);
18883       orc_program_append_2 (p, "mullw", 2, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_T5, ORC_VAR_D1);
18884       orc_program_append_2 (p, "div255w", 2, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_D1, ORC_VAR_D1);
18885       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_D1);
18886       orc_program_append_2 (p, "splatw3q", 0, ORC_VAR_T5, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
18887       orc_program_append_2 (p, "xorw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C1, ORC_VAR_D1);
18888       orc_program_append_2 (p, "mullw", 2, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_T5, ORC_VAR_D1);
18889       orc_program_append_2 (p, "div255w", 2, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_D1, ORC_VAR_D1);
18890       orc_program_append_2 (p, "convwb", 2, ORC_VAR_D1, ORC_VAR_T4, ORC_VAR_D1, ORC_VAR_D1);
18891
18892       result = orc_program_compile (p);
18893     }
18894     p_inited = TRUE;
18895     orc_once_mutex_unlock ();
18896   }
18897   ex->program = p;
18898
18899   ex->n = n;
18900   ex->arrays[ORC_VAR_D1] = d1;
18901   ex->arrays[ORC_VAR_S1] = (void *)s1;
18902   ex->arrays[ORC_VAR_S2] = (void *)s2;
18903
18904   func = p->code_exec;
18905   func (ex);
18906 }
18907 #endif
18908
18909
18910 /* orc_code_combine_out_u_n */
18911 #ifdef DISABLE_ORC
18912 void
18913 orc_code_combine_out_u_n (orc_uint32 * d1, const orc_uint32 * s1, int n){
18914   int i;
18915   orc_union32 * ORC_RESTRICT ptr0;
18916   const orc_union32 * ORC_RESTRICT ptr4;
18917   orc_union32 var37;
18918   orc_union32 var38;
18919   orc_union64 var39;
18920   orc_union32 var40;
18921   orc_union64 var41;
18922   orc_union64 var42;
18923   orc_union64 var43;
18924   orc_union64 var44;
18925   orc_union64 var45;
18926   orc_union64 var46;
18927
18928   ptr0 = (orc_union32 *)d1;
18929   ptr4 = (orc_union32 *)s1;
18930
18931     /* 5: loadpw */
18932     var39.x4[0] = 0x000000ff; /* 255 or 1.25987e-321f */
18933     var39.x4[1] = 0x000000ff; /* 255 or 1.25987e-321f */
18934     var39.x4[2] = 0x000000ff; /* 255 or 1.25987e-321f */
18935     var39.x4[3] = 0x000000ff; /* 255 or 1.25987e-321f */
18936
18937   for (i = 0; i < n; i++) {
18938     /* 0: loadl */
18939     var37 = ptr4[i];
18940     /* 1: convubw */
18941     var41.x4[0] = (orc_uint8)var37.x4[0];
18942     var41.x4[1] = (orc_uint8)var37.x4[1];
18943     var41.x4[2] = (orc_uint8)var37.x4[2];
18944     var41.x4[3] = (orc_uint8)var37.x4[3];
18945     /* 2: loadl */
18946     var38 = ptr0[i];
18947     /* 3: convubw */
18948     var42.x4[0] = (orc_uint8)var38.x4[0];
18949     var42.x4[1] = (orc_uint8)var38.x4[1];
18950     var42.x4[2] = (orc_uint8)var38.x4[2];
18951     var42.x4[3] = (orc_uint8)var38.x4[3];
18952     /* 4: splatw3q */
18953     var43.i = ((((orc_uint64)var42.i)>>48) << 48) | ((((orc_uint64)var42.i)>>48)<<32) | ((((orc_uint64)var42.i)>>48) << 16) | ((((orc_uint64)var42.i)>>48));
18954     /* 6: xorw */
18955     var44.x4[0] = var43.x4[0] ^ var39.x4[0];
18956     var44.x4[1] = var43.x4[1] ^ var39.x4[1];
18957     var44.x4[2] = var43.x4[2] ^ var39.x4[2];
18958     var44.x4[3] = var43.x4[3] ^ var39.x4[3];
18959     /* 7: mullw */
18960     var45.x4[0] = (var41.x4[0] * var44.x4[0]) & 0xffff;
18961     var45.x4[1] = (var41.x4[1] * var44.x4[1]) & 0xffff;
18962     var45.x4[2] = (var41.x4[2] * var44.x4[2]) & 0xffff;
18963     var45.x4[3] = (var41.x4[3] * var44.x4[3]) & 0xffff;
18964     /* 8: div255w */
18965     var46.x4[0] = ((uint16_t)(((orc_uint16)(var45.x4[0]+128)) + (((orc_uint16)(var45.x4[0]+128))>>8)))>>8;
18966     var46.x4[1] = ((uint16_t)(((orc_uint16)(var45.x4[1]+128)) + (((orc_uint16)(var45.x4[1]+128))>>8)))>>8;
18967     var46.x4[2] = ((uint16_t)(((orc_uint16)(var45.x4[2]+128)) + (((orc_uint16)(var45.x4[2]+128))>>8)))>>8;
18968     var46.x4[3] = ((uint16_t)(((orc_uint16)(var45.x4[3]+128)) + (((orc_uint16)(var45.x4[3]+128))>>8)))>>8;
18969     /* 9: convwb */
18970     var40.x4[0] = var46.x4[0];
18971     var40.x4[1] = var46.x4[1];
18972     var40.x4[2] = var46.x4[2];
18973     var40.x4[3] = var46.x4[3];
18974     /* 10: storel */
18975     ptr0[i] = var40;
18976   }
18977
18978 }
18979
18980 #else
18981 static void
18982 _backup_orc_code_combine_out_u_n (OrcExecutor * ORC_RESTRICT ex)
18983 {
18984   int i;
18985   int n = ex->n;
18986   orc_union32 * ORC_RESTRICT ptr0;
18987   const orc_union32 * ORC_RESTRICT ptr4;
18988   orc_union32 var37;
18989   orc_union32 var38;
18990   orc_union64 var39;
18991   orc_union32 var40;
18992   orc_union64 var41;
18993   orc_union64 var42;
18994   orc_union64 var43;
18995   orc_union64 var44;
18996   orc_union64 var45;
18997   orc_union64 var46;
18998
18999   ptr0 = (orc_union32 *)ex->arrays[0];
19000   ptr4 = (orc_union32 *)ex->arrays[4];
19001
19002     /* 5: loadpw */
19003     var39.x4[0] = 0x000000ff; /* 255 or 1.25987e-321f */
19004     var39.x4[1] = 0x000000ff; /* 255 or 1.25987e-321f */
19005     var39.x4[2] = 0x000000ff; /* 255 or 1.25987e-321f */
19006     var39.x4[3] = 0x000000ff; /* 255 or 1.25987e-321f */
19007
19008   for (i = 0; i < n; i++) {
19009     /* 0: loadl */
19010     var37 = ptr4[i];
19011     /* 1: convubw */
19012     var41.x4[0] = (orc_uint8)var37.x4[0];
19013     var41.x4[1] = (orc_uint8)var37.x4[1];
19014     var41.x4[2] = (orc_uint8)var37.x4[2];
19015     var41.x4[3] = (orc_uint8)var37.x4[3];
19016     /* 2: loadl */
19017     var38 = ptr0[i];
19018     /* 3: convubw */
19019     var42.x4[0] = (orc_uint8)var38.x4[0];
19020     var42.x4[1] = (orc_uint8)var38.x4[1];
19021     var42.x4[2] = (orc_uint8)var38.x4[2];
19022     var42.x4[3] = (orc_uint8)var38.x4[3];
19023     /* 4: splatw3q */
19024     var43.i = ((((orc_uint64)var42.i)>>48) << 48) | ((((orc_uint64)var42.i)>>48)<<32) | ((((orc_uint64)var42.i)>>48) << 16) | ((((orc_uint64)var42.i)>>48));
19025     /* 6: xorw */
19026     var44.x4[0] = var43.x4[0] ^ var39.x4[0];
19027     var44.x4[1] = var43.x4[1] ^ var39.x4[1];
19028     var44.x4[2] = var43.x4[2] ^ var39.x4[2];
19029     var44.x4[3] = var43.x4[3] ^ var39.x4[3];
19030     /* 7: mullw */
19031     var45.x4[0] = (var41.x4[0] * var44.x4[0]) & 0xffff;
19032     var45.x4[1] = (var41.x4[1] * var44.x4[1]) & 0xffff;
19033     var45.x4[2] = (var41.x4[2] * var44.x4[2]) & 0xffff;
19034     var45.x4[3] = (var41.x4[3] * var44.x4[3]) & 0xffff;
19035     /* 8: div255w */
19036     var46.x4[0] = ((uint16_t)(((orc_uint16)(var45.x4[0]+128)) + (((orc_uint16)(var45.x4[0]+128))>>8)))>>8;
19037     var46.x4[1] = ((uint16_t)(((orc_uint16)(var45.x4[1]+128)) + (((orc_uint16)(var45.x4[1]+128))>>8)))>>8;
19038     var46.x4[2] = ((uint16_t)(((orc_uint16)(var45.x4[2]+128)) + (((orc_uint16)(var45.x4[2]+128))>>8)))>>8;
19039     var46.x4[3] = ((uint16_t)(((orc_uint16)(var45.x4[3]+128)) + (((orc_uint16)(var45.x4[3]+128))>>8)))>>8;
19040     /* 9: convwb */
19041     var40.x4[0] = var46.x4[0];
19042     var40.x4[1] = var46.x4[1];
19043     var40.x4[2] = var46.x4[2];
19044     var40.x4[3] = var46.x4[3];
19045     /* 10: storel */
19046     ptr0[i] = var40;
19047   }
19048
19049 }
19050
19051 void
19052 orc_code_combine_out_u_n (orc_uint32 * d1, const orc_uint32 * s1, int n)
19053 {
19054   OrcExecutor _ex, *ex = &_ex;
19055   static int p_inited = 0;
19056   static OrcProgram *p = 0;
19057   void (*func) (OrcExecutor *);
19058
19059   if (!p_inited) {
19060     orc_once_mutex_lock ();
19061     if (!p_inited) {
19062       OrcCompileResult result;
19063
19064       p = orc_program_new ();
19065       orc_program_set_name (p, "orc_code_combine_out_u_n");
19066       orc_program_set_backup_function (p, _backup_orc_code_combine_out_u_n);
19067       orc_program_add_destination (p, 4, "d1");
19068       orc_program_add_source (p, 4, "s1");
19069       orc_program_add_constant (p, 4, 0x000000ff, "c1");
19070       orc_program_add_temporary (p, 8, "t1");
19071       orc_program_add_temporary (p, 8, "t2");
19072       orc_program_add_temporary (p, 8, "t3");
19073       orc_program_add_temporary (p, 8, "t4");
19074       orc_program_add_temporary (p, 8, "t5");
19075
19076       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T4, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
19077       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_D1);
19078       orc_program_append_2 (p, "splatw3q", 0, ORC_VAR_T5, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
19079       orc_program_append_2 (p, "xorw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C1, ORC_VAR_D1);
19080       orc_program_append_2 (p, "mullw", 2, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_T5, ORC_VAR_D1);
19081       orc_program_append_2 (p, "div255w", 2, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_D1, ORC_VAR_D1);
19082       orc_program_append_2 (p, "convwb", 2, ORC_VAR_D1, ORC_VAR_T4, ORC_VAR_D1, ORC_VAR_D1);
19083
19084       result = orc_program_compile (p);
19085     }
19086     p_inited = TRUE;
19087     orc_once_mutex_unlock ();
19088   }
19089   ex->program = p;
19090
19091   ex->n = n;
19092   ex->arrays[ORC_VAR_D1] = d1;
19093   ex->arrays[ORC_VAR_S1] = (void *)s1;
19094
19095   func = p->code_exec;
19096   func (ex);
19097 }
19098 #endif
19099
19100
19101 /* orc_code_combine_atop_u */
19102 #ifdef DISABLE_ORC
19103 void
19104 orc_code_combine_atop_u (orc_uint32 * d1, const orc_uint32 * s1, const orc_uint32 * s2, int n){
19105   int i;
19106   orc_union32 * ORC_RESTRICT ptr0;
19107   const orc_union32 * ORC_RESTRICT ptr4;
19108   const orc_union32 * ORC_RESTRICT ptr5;
19109   orc_union32 var40;
19110   orc_union32 var41;
19111   orc_union32 var42;
19112   orc_union32 var43;
19113   orc_union64 var44;
19114   orc_union32 var45;
19115   orc_union64 var46;
19116   orc_union64 var47;
19117   orc_union64 var48;
19118   orc_union64 var49;
19119   orc_union64 var50;
19120   orc_union64 var51;
19121   orc_union64 var52;
19122   orc_union64 var53;
19123   orc_union64 var54;
19124   orc_union32 var55;
19125   orc_union64 var56;
19126   orc_union64 var57;
19127   orc_union64 var58;
19128   orc_union64 var59;
19129   orc_union64 var60;
19130   orc_union32 var61;
19131
19132   ptr0 = (orc_union32 *)d1;
19133   ptr4 = (orc_union32 *)s1;
19134   ptr5 = (orc_union32 *)s2;
19135
19136     /* 16: loadpw */
19137     var44.x4[0] = 0x000000ff; /* 255 or 1.25987e-321f */
19138     var44.x4[1] = 0x000000ff; /* 255 or 1.25987e-321f */
19139     var44.x4[2] = 0x000000ff; /* 255 or 1.25987e-321f */
19140     var44.x4[3] = 0x000000ff; /* 255 or 1.25987e-321f */
19141
19142   for (i = 0; i < n; i++) {
19143     /* 0: loadl */
19144     var40 = ptr4[i];
19145     /* 1: convubw */
19146     var46.x4[0] = (orc_uint8)var40.x4[0];
19147     var46.x4[1] = (orc_uint8)var40.x4[1];
19148     var46.x4[2] = (orc_uint8)var40.x4[2];
19149     var46.x4[3] = (orc_uint8)var40.x4[3];
19150     /* 2: loadl */
19151     var41 = ptr5[i];
19152     /* 3: convubw */
19153     var47.x4[0] = (orc_uint8)var41.x4[0];
19154     var47.x4[1] = (orc_uint8)var41.x4[1];
19155     var47.x4[2] = (orc_uint8)var41.x4[2];
19156     var47.x4[3] = (orc_uint8)var41.x4[3];
19157     /* 4: splatw3q */
19158     var48.i = ((((orc_uint64)var47.i)>>48) << 48) | ((((orc_uint64)var47.i)>>48)<<32) | ((((orc_uint64)var47.i)>>48) << 16) | ((((orc_uint64)var47.i)>>48));
19159     /* 5: mullw */
19160     var49.x4[0] = (var46.x4[0] * var48.x4[0]) & 0xffff;
19161     var49.x4[1] = (var46.x4[1] * var48.x4[1]) & 0xffff;
19162     var49.x4[2] = (var46.x4[2] * var48.x4[2]) & 0xffff;
19163     var49.x4[3] = (var46.x4[3] * var48.x4[3]) & 0xffff;
19164     /* 6: div255w */
19165     var50.x4[0] = ((uint16_t)(((orc_uint16)(var49.x4[0]+128)) + (((orc_uint16)(var49.x4[0]+128))>>8)))>>8;
19166     var50.x4[1] = ((uint16_t)(((orc_uint16)(var49.x4[1]+128)) + (((orc_uint16)(var49.x4[1]+128))>>8)))>>8;
19167     var50.x4[2] = ((uint16_t)(((orc_uint16)(var49.x4[2]+128)) + (((orc_uint16)(var49.x4[2]+128))>>8)))>>8;
19168     var50.x4[3] = ((uint16_t)(((orc_uint16)(var49.x4[3]+128)) + (((orc_uint16)(var49.x4[3]+128))>>8)))>>8;
19169     /* 7: loadl */
19170     var42 = ptr0[i];
19171     /* 8: convubw */
19172     var51.x4[0] = (orc_uint8)var42.x4[0];
19173     var51.x4[1] = (orc_uint8)var42.x4[1];
19174     var51.x4[2] = (orc_uint8)var42.x4[2];
19175     var51.x4[3] = (orc_uint8)var42.x4[3];
19176     /* 9: splatw3q */
19177     var52.i = ((((orc_uint64)var51.i)>>48) << 48) | ((((orc_uint64)var51.i)>>48)<<32) | ((((orc_uint64)var51.i)>>48) << 16) | ((((orc_uint64)var51.i)>>48));
19178     /* 10: mullw */
19179     var53.x4[0] = (var50.x4[0] * var52.x4[0]) & 0xffff;
19180     var53.x4[1] = (var50.x4[1] * var52.x4[1]) & 0xffff;
19181     var53.x4[2] = (var50.x4[2] * var52.x4[2]) & 0xffff;
19182     var53.x4[3] = (var50.x4[3] * var52.x4[3]) & 0xffff;
19183     /* 11: div255w */
19184     var54.x4[0] = ((uint16_t)(((orc_uint16)(var53.x4[0]+128)) + (((orc_uint16)(var53.x4[0]+128))>>8)))>>8;
19185     var54.x4[1] = ((uint16_t)(((orc_uint16)(var53.x4[1]+128)) + (((orc_uint16)(var53.x4[1]+128))>>8)))>>8;
19186     var54.x4[2] = ((uint16_t)(((orc_uint16)(var53.x4[2]+128)) + (((orc_uint16)(var53.x4[2]+128))>>8)))>>8;
19187     var54.x4[3] = ((uint16_t)(((orc_uint16)(var53.x4[3]+128)) + (((orc_uint16)(var53.x4[3]+128))>>8)))>>8;
19188     /* 12: convwb */
19189     var55.x4[0] = var54.x4[0];
19190     var55.x4[1] = var54.x4[1];
19191     var55.x4[2] = var54.x4[2];
19192     var55.x4[3] = var54.x4[3];
19193     /* 13: loadl */
19194     var43 = ptr0[i];
19195     /* 14: convubw */
19196     var56.x4[0] = (orc_uint8)var43.x4[0];
19197     var56.x4[1] = (orc_uint8)var43.x4[1];
19198     var56.x4[2] = (orc_uint8)var43.x4[2];
19199     var56.x4[3] = (orc_uint8)var43.x4[3];
19200     /* 15: splatw3q */
19201     var57.i = ((((orc_uint64)var50.i)>>48) << 48) | ((((orc_uint64)var50.i)>>48)<<32) | ((((orc_uint64)var50.i)>>48) << 16) | ((((orc_uint64)var50.i)>>48));
19202     /* 17: xorw */
19203     var58.x4[0] = var57.x4[0] ^ var44.x4[0];
19204     var58.x4[1] = var57.x4[1] ^ var44.x4[1];
19205     var58.x4[2] = var57.x4[2] ^ var44.x4[2];
19206     var58.x4[3] = var57.x4[3] ^ var44.x4[3];
19207     /* 18: mullw */
19208     var59.x4[0] = (var56.x4[0] * var58.x4[0]) & 0xffff;
19209     var59.x4[1] = (var56.x4[1] * var58.x4[1]) & 0xffff;
19210     var59.x4[2] = (var56.x4[2] * var58.x4[2]) & 0xffff;
19211     var59.x4[3] = (var56.x4[3] * var58.x4[3]) & 0xffff;
19212     /* 19: div255w */
19213     var60.x4[0] = ((uint16_t)(((orc_uint16)(var59.x4[0]+128)) + (((orc_uint16)(var59.x4[0]+128))>>8)))>>8;
19214     var60.x4[1] = ((uint16_t)(((orc_uint16)(var59.x4[1]+128)) + (((orc_uint16)(var59.x4[1]+128))>>8)))>>8;
19215     var60.x4[2] = ((uint16_t)(((orc_uint16)(var59.x4[2]+128)) + (((orc_uint16)(var59.x4[2]+128))>>8)))>>8;
19216     var60.x4[3] = ((uint16_t)(((orc_uint16)(var59.x4[3]+128)) + (((orc_uint16)(var59.x4[3]+128))>>8)))>>8;
19217     /* 20: convwb */
19218     var61.x4[0] = var60.x4[0];
19219     var61.x4[1] = var60.x4[1];
19220     var61.x4[2] = var60.x4[2];
19221     var61.x4[3] = var60.x4[3];
19222     /* 21: addusb */
19223     var45.x4[0] = ORC_CLAMP_UB((orc_uint8)var55.x4[0] + (orc_uint8)var61.x4[0]);
19224     var45.x4[1] = ORC_CLAMP_UB((orc_uint8)var55.x4[1] + (orc_uint8)var61.x4[1]);
19225     var45.x4[2] = ORC_CLAMP_UB((orc_uint8)var55.x4[2] + (orc_uint8)var61.x4[2]);
19226     var45.x4[3] = ORC_CLAMP_UB((orc_uint8)var55.x4[3] + (orc_uint8)var61.x4[3]);
19227     /* 22: storel */
19228     ptr0[i] = var45;
19229   }
19230
19231 }
19232
19233 #else
19234 static void
19235 _backup_orc_code_combine_atop_u (OrcExecutor * ORC_RESTRICT ex)
19236 {
19237   int i;
19238   int n = ex->n;
19239   orc_union32 * ORC_RESTRICT ptr0;
19240   const orc_union32 * ORC_RESTRICT ptr4;
19241   const orc_union32 * ORC_RESTRICT ptr5;
19242   orc_union32 var40;
19243   orc_union32 var41;
19244   orc_union32 var42;
19245   orc_union32 var43;
19246   orc_union64 var44;
19247   orc_union32 var45;
19248   orc_union64 var46;
19249   orc_union64 var47;
19250   orc_union64 var48;
19251   orc_union64 var49;
19252   orc_union64 var50;
19253   orc_union64 var51;
19254   orc_union64 var52;
19255   orc_union64 var53;
19256   orc_union64 var54;
19257   orc_union32 var55;
19258   orc_union64 var56;
19259   orc_union64 var57;
19260   orc_union64 var58;
19261   orc_union64 var59;
19262   orc_union64 var60;
19263   orc_union32 var61;
19264
19265   ptr0 = (orc_union32 *)ex->arrays[0];
19266   ptr4 = (orc_union32 *)ex->arrays[4];
19267   ptr5 = (orc_union32 *)ex->arrays[5];
19268
19269     /* 16: loadpw */
19270     var44.x4[0] = 0x000000ff; /* 255 or 1.25987e-321f */
19271     var44.x4[1] = 0x000000ff; /* 255 or 1.25987e-321f */
19272     var44.x4[2] = 0x000000ff; /* 255 or 1.25987e-321f */
19273     var44.x4[3] = 0x000000ff; /* 255 or 1.25987e-321f */
19274
19275   for (i = 0; i < n; i++) {
19276     /* 0: loadl */
19277     var40 = ptr4[i];
19278     /* 1: convubw */
19279     var46.x4[0] = (orc_uint8)var40.x4[0];
19280     var46.x4[1] = (orc_uint8)var40.x4[1];
19281     var46.x4[2] = (orc_uint8)var40.x4[2];
19282     var46.x4[3] = (orc_uint8)var40.x4[3];
19283     /* 2: loadl */
19284     var41 = ptr5[i];
19285     /* 3: convubw */
19286     var47.x4[0] = (orc_uint8)var41.x4[0];
19287     var47.x4[1] = (orc_uint8)var41.x4[1];
19288     var47.x4[2] = (orc_uint8)var41.x4[2];
19289     var47.x4[3] = (orc_uint8)var41.x4[3];
19290     /* 4: splatw3q */
19291     var48.i = ((((orc_uint64)var47.i)>>48) << 48) | ((((orc_uint64)var47.i)>>48)<<32) | ((((orc_uint64)var47.i)>>48) << 16) | ((((orc_uint64)var47.i)>>48));
19292     /* 5: mullw */
19293     var49.x4[0] = (var46.x4[0] * var48.x4[0]) & 0xffff;
19294     var49.x4[1] = (var46.x4[1] * var48.x4[1]) & 0xffff;
19295     var49.x4[2] = (var46.x4[2] * var48.x4[2]) & 0xffff;
19296     var49.x4[3] = (var46.x4[3] * var48.x4[3]) & 0xffff;
19297     /* 6: div255w */
19298     var50.x4[0] = ((uint16_t)(((orc_uint16)(var49.x4[0]+128)) + (((orc_uint16)(var49.x4[0]+128))>>8)))>>8;
19299     var50.x4[1] = ((uint16_t)(((orc_uint16)(var49.x4[1]+128)) + (((orc_uint16)(var49.x4[1]+128))>>8)))>>8;
19300     var50.x4[2] = ((uint16_t)(((orc_uint16)(var49.x4[2]+128)) + (((orc_uint16)(var49.x4[2]+128))>>8)))>>8;
19301     var50.x4[3] = ((uint16_t)(((orc_uint16)(var49.x4[3]+128)) + (((orc_uint16)(var49.x4[3]+128))>>8)))>>8;
19302     /* 7: loadl */
19303     var42 = ptr0[i];
19304     /* 8: convubw */
19305     var51.x4[0] = (orc_uint8)var42.x4[0];
19306     var51.x4[1] = (orc_uint8)var42.x4[1];
19307     var51.x4[2] = (orc_uint8)var42.x4[2];
19308     var51.x4[3] = (orc_uint8)var42.x4[3];
19309     /* 9: splatw3q */
19310     var52.i = ((((orc_uint64)var51.i)>>48) << 48) | ((((orc_uint64)var51.i)>>48)<<32) | ((((orc_uint64)var51.i)>>48) << 16) | ((((orc_uint64)var51.i)>>48));
19311     /* 10: mullw */
19312     var53.x4[0] = (var50.x4[0] * var52.x4[0]) & 0xffff;
19313     var53.x4[1] = (var50.x4[1] * var52.x4[1]) & 0xffff;
19314     var53.x4[2] = (var50.x4[2] * var52.x4[2]) & 0xffff;
19315     var53.x4[3] = (var50.x4[3] * var52.x4[3]) & 0xffff;
19316     /* 11: div255w */
19317     var54.x4[0] = ((uint16_t)(((orc_uint16)(var53.x4[0]+128)) + (((orc_uint16)(var53.x4[0]+128))>>8)))>>8;
19318     var54.x4[1] = ((uint16_t)(((orc_uint16)(var53.x4[1]+128)) + (((orc_uint16)(var53.x4[1]+128))>>8)))>>8;
19319     var54.x4[2] = ((uint16_t)(((orc_uint16)(var53.x4[2]+128)) + (((orc_uint16)(var53.x4[2]+128))>>8)))>>8;
19320     var54.x4[3] = ((uint16_t)(((orc_uint16)(var53.x4[3]+128)) + (((orc_uint16)(var53.x4[3]+128))>>8)))>>8;
19321     /* 12: convwb */
19322     var55.x4[0] = var54.x4[0];
19323     var55.x4[1] = var54.x4[1];
19324     var55.x4[2] = var54.x4[2];
19325     var55.x4[3] = var54.x4[3];
19326     /* 13: loadl */
19327     var43 = ptr0[i];
19328     /* 14: convubw */
19329     var56.x4[0] = (orc_uint8)var43.x4[0];
19330     var56.x4[1] = (orc_uint8)var43.x4[1];
19331     var56.x4[2] = (orc_uint8)var43.x4[2];
19332     var56.x4[3] = (orc_uint8)var43.x4[3];
19333     /* 15: splatw3q */
19334     var57.i = ((((orc_uint64)var50.i)>>48) << 48) | ((((orc_uint64)var50.i)>>48)<<32) | ((((orc_uint64)var50.i)>>48) << 16) | ((((orc_uint64)var50.i)>>48));
19335     /* 17: xorw */
19336     var58.x4[0] = var57.x4[0] ^ var44.x4[0];
19337     var58.x4[1] = var57.x4[1] ^ var44.x4[1];
19338     var58.x4[2] = var57.x4[2] ^ var44.x4[2];
19339     var58.x4[3] = var57.x4[3] ^ var44.x4[3];
19340     /* 18: mullw */
19341     var59.x4[0] = (var56.x4[0] * var58.x4[0]) & 0xffff;
19342     var59.x4[1] = (var56.x4[1] * var58.x4[1]) & 0xffff;
19343     var59.x4[2] = (var56.x4[2] * var58.x4[2]) & 0xffff;
19344     var59.x4[3] = (var56.x4[3] * var58.x4[3]) & 0xffff;
19345     /* 19: div255w */
19346     var60.x4[0] = ((uint16_t)(((orc_uint16)(var59.x4[0]+128)) + (((orc_uint16)(var59.x4[0]+128))>>8)))>>8;
19347     var60.x4[1] = ((uint16_t)(((orc_uint16)(var59.x4[1]+128)) + (((orc_uint16)(var59.x4[1]+128))>>8)))>>8;
19348     var60.x4[2] = ((uint16_t)(((orc_uint16)(var59.x4[2]+128)) + (((orc_uint16)(var59.x4[2]+128))>>8)))>>8;
19349     var60.x4[3] = ((uint16_t)(((orc_uint16)(var59.x4[3]+128)) + (((orc_uint16)(var59.x4[3]+128))>>8)))>>8;
19350     /* 20: convwb */
19351     var61.x4[0] = var60.x4[0];
19352     var61.x4[1] = var60.x4[1];
19353     var61.x4[2] = var60.x4[2];
19354     var61.x4[3] = var60.x4[3];
19355     /* 21: addusb */
19356     var45.x4[0] = ORC_CLAMP_UB((orc_uint8)var55.x4[0] + (orc_uint8)var61.x4[0]);
19357     var45.x4[1] = ORC_CLAMP_UB((orc_uint8)var55.x4[1] + (orc_uint8)var61.x4[1]);
19358     var45.x4[2] = ORC_CLAMP_UB((orc_uint8)var55.x4[2] + (orc_uint8)var61.x4[2]);
19359     var45.x4[3] = ORC_CLAMP_UB((orc_uint8)var55.x4[3] + (orc_uint8)var61.x4[3]);
19360     /* 22: storel */
19361     ptr0[i] = var45;
19362   }
19363
19364 }
19365
19366 void
19367 orc_code_combine_atop_u (orc_uint32 * d1, const orc_uint32 * s1, const orc_uint32 * s2, int n)
19368 {
19369   OrcExecutor _ex, *ex = &_ex;
19370   static int p_inited = 0;
19371   static OrcProgram *p = 0;
19372   void (*func) (OrcExecutor *);
19373
19374   if (!p_inited) {
19375     orc_once_mutex_lock ();
19376     if (!p_inited) {
19377       OrcCompileResult result;
19378
19379       p = orc_program_new ();
19380       orc_program_set_name (p, "orc_code_combine_atop_u");
19381       orc_program_set_backup_function (p, _backup_orc_code_combine_atop_u);
19382       orc_program_add_destination (p, 4, "d1");
19383       orc_program_add_source (p, 4, "s1");
19384       orc_program_add_source (p, 4, "s2");
19385       orc_program_add_constant (p, 4, 0x000000ff, "c1");
19386       orc_program_add_temporary (p, 8, "t1");
19387       orc_program_add_temporary (p, 8, "t2");
19388       orc_program_add_temporary (p, 8, "t3");
19389       orc_program_add_temporary (p, 8, "t4");
19390       orc_program_add_temporary (p, 8, "t5");
19391       orc_program_add_temporary (p, 8, "t6");
19392       orc_program_add_temporary (p, 4, "t7");
19393       orc_program_add_temporary (p, 4, "t8");
19394
19395       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T4, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
19396       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T5, ORC_VAR_S2, ORC_VAR_D1, ORC_VAR_D1);
19397       orc_program_append_2 (p, "splatw3q", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_D1, ORC_VAR_D1);
19398       orc_program_append_2 (p, "mullw", 2, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_T5, ORC_VAR_D1);
19399       orc_program_append_2 (p, "div255w", 2, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_D1, ORC_VAR_D1);
19400       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_D1);
19401       orc_program_append_2 (p, "splatw3q", 0, ORC_VAR_T5, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
19402       orc_program_append_2 (p, "mullw", 2, ORC_VAR_T6, ORC_VAR_T4, ORC_VAR_T5, ORC_VAR_D1);
19403       orc_program_append_2 (p, "div255w", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_D1, ORC_VAR_D1);
19404       orc_program_append_2 (p, "convwb", 2, ORC_VAR_T7, ORC_VAR_T6, ORC_VAR_D1, ORC_VAR_D1);
19405       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_D1);
19406       orc_program_append_2 (p, "splatw3q", 0, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_D1, ORC_VAR_D1);
19407       orc_program_append_2 (p, "xorw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C1, ORC_VAR_D1);
19408       orc_program_append_2 (p, "mullw", 2, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_T5, ORC_VAR_D1);
19409       orc_program_append_2 (p, "div255w", 2, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_D1, ORC_VAR_D1);
19410       orc_program_append_2 (p, "convwb", 2, ORC_VAR_T8, ORC_VAR_T4, ORC_VAR_D1, ORC_VAR_D1);
19411       orc_program_append_2 (p, "addusb", 2, ORC_VAR_D1, ORC_VAR_T7, ORC_VAR_T8, ORC_VAR_D1);
19412
19413       result = orc_program_compile (p);
19414     }
19415     p_inited = TRUE;
19416     orc_once_mutex_unlock ();
19417   }
19418   ex->program = p;
19419
19420   ex->n = n;
19421   ex->arrays[ORC_VAR_D1] = d1;
19422   ex->arrays[ORC_VAR_S1] = (void *)s1;
19423   ex->arrays[ORC_VAR_S2] = (void *)s2;
19424
19425   func = p->code_exec;
19426   func (ex);
19427 }
19428 #endif
19429
19430
19431 /* orc_code_combine_atop_u_n */
19432 #ifdef DISABLE_ORC
19433 void
19434 orc_code_combine_atop_u_n (orc_uint32 * d1, const orc_uint32 * s1, int n){
19435   int i;
19436   orc_union32 * ORC_RESTRICT ptr0;
19437   const orc_union32 * ORC_RESTRICT ptr4;
19438   orc_union32 var40;
19439   orc_union32 var41;
19440   orc_union32 var42;
19441   orc_union64 var43;
19442   orc_union32 var44;
19443   orc_union64 var45;
19444   orc_union64 var46;
19445   orc_union64 var47;
19446   orc_union64 var48;
19447   orc_union64 var49;
19448   orc_union32 var50;
19449   orc_union64 var51;
19450   orc_union64 var52;
19451   orc_union64 var53;
19452   orc_union64 var54;
19453   orc_union64 var55;
19454   orc_union32 var56;
19455
19456   ptr0 = (orc_union32 *)d1;
19457   ptr4 = (orc_union32 *)s1;
19458
19459     /* 11: loadpw */
19460     var43.x4[0] = 0x000000ff; /* 255 or 1.25987e-321f */
19461     var43.x4[1] = 0x000000ff; /* 255 or 1.25987e-321f */
19462     var43.x4[2] = 0x000000ff; /* 255 or 1.25987e-321f */
19463     var43.x4[3] = 0x000000ff; /* 255 or 1.25987e-321f */
19464
19465   for (i = 0; i < n; i++) {
19466     /* 0: loadl */
19467     var40 = ptr4[i];
19468     /* 1: convubw */
19469     var45.x4[0] = (orc_uint8)var40.x4[0];
19470     var45.x4[1] = (orc_uint8)var40.x4[1];
19471     var45.x4[2] = (orc_uint8)var40.x4[2];
19472     var45.x4[3] = (orc_uint8)var40.x4[3];
19473     /* 2: loadl */
19474     var41 = ptr0[i];
19475     /* 3: convubw */
19476     var46.x4[0] = (orc_uint8)var41.x4[0];
19477     var46.x4[1] = (orc_uint8)var41.x4[1];
19478     var46.x4[2] = (orc_uint8)var41.x4[2];
19479     var46.x4[3] = (orc_uint8)var41.x4[3];
19480     /* 4: splatw3q */
19481     var47.i = ((((orc_uint64)var46.i)>>48) << 48) | ((((orc_uint64)var46.i)>>48)<<32) | ((((orc_uint64)var46.i)>>48) << 16) | ((((orc_uint64)var46.i)>>48));
19482     /* 5: mullw */
19483     var48.x4[0] = (var45.x4[0] * var47.x4[0]) & 0xffff;
19484     var48.x4[1] = (var45.x4[1] * var47.x4[1]) & 0xffff;
19485     var48.x4[2] = (var45.x4[2] * var47.x4[2]) & 0xffff;
19486     var48.x4[3] = (var45.x4[3] * var47.x4[3]) & 0xffff;
19487     /* 6: div255w */
19488     var49.x4[0] = ((uint16_t)(((orc_uint16)(var48.x4[0]+128)) + (((orc_uint16)(var48.x4[0]+128))>>8)))>>8;
19489     var49.x4[1] = ((uint16_t)(((orc_uint16)(var48.x4[1]+128)) + (((orc_uint16)(var48.x4[1]+128))>>8)))>>8;
19490     var49.x4[2] = ((uint16_t)(((orc_uint16)(var48.x4[2]+128)) + (((orc_uint16)(var48.x4[2]+128))>>8)))>>8;
19491     var49.x4[3] = ((uint16_t)(((orc_uint16)(var48.x4[3]+128)) + (((orc_uint16)(var48.x4[3]+128))>>8)))>>8;
19492     /* 7: convwb */
19493     var50.x4[0] = var49.x4[0];
19494     var50.x4[1] = var49.x4[1];
19495     var50.x4[2] = var49.x4[2];
19496     var50.x4[3] = var49.x4[3];
19497     /* 8: loadl */
19498     var42 = ptr0[i];
19499     /* 9: convubw */
19500     var51.x4[0] = (orc_uint8)var42.x4[0];
19501     var51.x4[1] = (orc_uint8)var42.x4[1];
19502     var51.x4[2] = (orc_uint8)var42.x4[2];
19503     var51.x4[3] = (orc_uint8)var42.x4[3];
19504     /* 10: splatw3q */
19505     var52.i = ((((orc_uint64)var45.i)>>48) << 48) | ((((orc_uint64)var45.i)>>48)<<32) | ((((orc_uint64)var45.i)>>48) << 16) | ((((orc_uint64)var45.i)>>48));
19506     /* 12: xorw */
19507     var53.x4[0] = var52.x4[0] ^ var43.x4[0];
19508     var53.x4[1] = var52.x4[1] ^ var43.x4[1];
19509     var53.x4[2] = var52.x4[2] ^ var43.x4[2];
19510     var53.x4[3] = var52.x4[3] ^ var43.x4[3];
19511     /* 13: mullw */
19512     var54.x4[0] = (var51.x4[0] * var53.x4[0]) & 0xffff;
19513     var54.x4[1] = (var51.x4[1] * var53.x4[1]) & 0xffff;
19514     var54.x4[2] = (var51.x4[2] * var53.x4[2]) & 0xffff;
19515     var54.x4[3] = (var51.x4[3] * var53.x4[3]) & 0xffff;
19516     /* 14: div255w */
19517     var55.x4[0] = ((uint16_t)(((orc_uint16)(var54.x4[0]+128)) + (((orc_uint16)(var54.x4[0]+128))>>8)))>>8;
19518     var55.x4[1] = ((uint16_t)(((orc_uint16)(var54.x4[1]+128)) + (((orc_uint16)(var54.x4[1]+128))>>8)))>>8;
19519     var55.x4[2] = ((uint16_t)(((orc_uint16)(var54.x4[2]+128)) + (((orc_uint16)(var54.x4[2]+128))>>8)))>>8;
19520     var55.x4[3] = ((uint16_t)(((orc_uint16)(var54.x4[3]+128)) + (((orc_uint16)(var54.x4[3]+128))>>8)))>>8;
19521     /* 15: convwb */
19522     var56.x4[0] = var55.x4[0];
19523     var56.x4[1] = var55.x4[1];
19524     var56.x4[2] = var55.x4[2];
19525     var56.x4[3] = var55.x4[3];
19526     /* 16: addusb */
19527     var44.x4[0] = ORC_CLAMP_UB((orc_uint8)var50.x4[0] + (orc_uint8)var56.x4[0]);
19528     var44.x4[1] = ORC_CLAMP_UB((orc_uint8)var50.x4[1] + (orc_uint8)var56.x4[1]);
19529     var44.x4[2] = ORC_CLAMP_UB((orc_uint8)var50.x4[2] + (orc_uint8)var56.x4[2]);
19530     var44.x4[3] = ORC_CLAMP_UB((orc_uint8)var50.x4[3] + (orc_uint8)var56.x4[3]);
19531     /* 17: storel */
19532     ptr0[i] = var44;
19533   }
19534
19535 }
19536
19537 #else
19538 static void
19539 _backup_orc_code_combine_atop_u_n (OrcExecutor * ORC_RESTRICT ex)
19540 {
19541   int i;
19542   int n = ex->n;
19543   orc_union32 * ORC_RESTRICT ptr0;
19544   const orc_union32 * ORC_RESTRICT ptr4;
19545   orc_union32 var40;
19546   orc_union32 var41;
19547   orc_union32 var42;
19548   orc_union64 var43;
19549   orc_union32 var44;
19550   orc_union64 var45;
19551   orc_union64 var46;
19552   orc_union64 var47;
19553   orc_union64 var48;
19554   orc_union64 var49;
19555   orc_union32 var50;
19556   orc_union64 var51;
19557   orc_union64 var52;
19558   orc_union64 var53;
19559   orc_union64 var54;
19560   orc_union64 var55;
19561   orc_union32 var56;
19562
19563   ptr0 = (orc_union32 *)ex->arrays[0];
19564   ptr4 = (orc_union32 *)ex->arrays[4];
19565
19566     /* 11: loadpw */
19567     var43.x4[0] = 0x000000ff; /* 255 or 1.25987e-321f */
19568     var43.x4[1] = 0x000000ff; /* 255 or 1.25987e-321f */
19569     var43.x4[2] = 0x000000ff; /* 255 or 1.25987e-321f */
19570     var43.x4[3] = 0x000000ff; /* 255 or 1.25987e-321f */
19571
19572   for (i = 0; i < n; i++) {
19573     /* 0: loadl */
19574     var40 = ptr4[i];
19575     /* 1: convubw */
19576     var45.x4[0] = (orc_uint8)var40.x4[0];
19577     var45.x4[1] = (orc_uint8)var40.x4[1];
19578     var45.x4[2] = (orc_uint8)var40.x4[2];
19579     var45.x4[3] = (orc_uint8)var40.x4[3];
19580     /* 2: loadl */
19581     var41 = ptr0[i];
19582     /* 3: convubw */
19583     var46.x4[0] = (orc_uint8)var41.x4[0];
19584     var46.x4[1] = (orc_uint8)var41.x4[1];
19585     var46.x4[2] = (orc_uint8)var41.x4[2];
19586     var46.x4[3] = (orc_uint8)var41.x4[3];
19587     /* 4: splatw3q */
19588     var47.i = ((((orc_uint64)var46.i)>>48) << 48) | ((((orc_uint64)var46.i)>>48)<<32) | ((((orc_uint64)var46.i)>>48) << 16) | ((((orc_uint64)var46.i)>>48));
19589     /* 5: mullw */
19590     var48.x4[0] = (var45.x4[0] * var47.x4[0]) & 0xffff;
19591     var48.x4[1] = (var45.x4[1] * var47.x4[1]) & 0xffff;
19592     var48.x4[2] = (var45.x4[2] * var47.x4[2]) & 0xffff;
19593     var48.x4[3] = (var45.x4[3] * var47.x4[3]) & 0xffff;
19594     /* 6: div255w */
19595     var49.x4[0] = ((uint16_t)(((orc_uint16)(var48.x4[0]+128)) + (((orc_uint16)(var48.x4[0]+128))>>8)))>>8;
19596     var49.x4[1] = ((uint16_t)(((orc_uint16)(var48.x4[1]+128)) + (((orc_uint16)(var48.x4[1]+128))>>8)))>>8;
19597     var49.x4[2] = ((uint16_t)(((orc_uint16)(var48.x4[2]+128)) + (((orc_uint16)(var48.x4[2]+128))>>8)))>>8;
19598     var49.x4[3] = ((uint16_t)(((orc_uint16)(var48.x4[3]+128)) + (((orc_uint16)(var48.x4[3]+128))>>8)))>>8;
19599     /* 7: convwb */
19600     var50.x4[0] = var49.x4[0];
19601     var50.x4[1] = var49.x4[1];
19602     var50.x4[2] = var49.x4[2];
19603     var50.x4[3] = var49.x4[3];
19604     /* 8: loadl */
19605     var42 = ptr0[i];
19606     /* 9: convubw */
19607     var51.x4[0] = (orc_uint8)var42.x4[0];
19608     var51.x4[1] = (orc_uint8)var42.x4[1];
19609     var51.x4[2] = (orc_uint8)var42.x4[2];
19610     var51.x4[3] = (orc_uint8)var42.x4[3];
19611     /* 10: splatw3q */
19612     var52.i = ((((orc_uint64)var45.i)>>48) << 48) | ((((orc_uint64)var45.i)>>48)<<32) | ((((orc_uint64)var45.i)>>48) << 16) | ((((orc_uint64)var45.i)>>48));
19613     /* 12: xorw */
19614     var53.x4[0] = var52.x4[0] ^ var43.x4[0];
19615     var53.x4[1] = var52.x4[1] ^ var43.x4[1];
19616     var53.x4[2] = var52.x4[2] ^ var43.x4[2];
19617     var53.x4[3] = var52.x4[3] ^ var43.x4[3];
19618     /* 13: mullw */
19619     var54.x4[0] = (var51.x4[0] * var53.x4[0]) & 0xffff;
19620     var54.x4[1] = (var51.x4[1] * var53.x4[1]) & 0xffff;
19621     var54.x4[2] = (var51.x4[2] * var53.x4[2]) & 0xffff;
19622     var54.x4[3] = (var51.x4[3] * var53.x4[3]) & 0xffff;
19623     /* 14: div255w */
19624     var55.x4[0] = ((uint16_t)(((orc_uint16)(var54.x4[0]+128)) + (((orc_uint16)(var54.x4[0]+128))>>8)))>>8;
19625     var55.x4[1] = ((uint16_t)(((orc_uint16)(var54.x4[1]+128)) + (((orc_uint16)(var54.x4[1]+128))>>8)))>>8;
19626     var55.x4[2] = ((uint16_t)(((orc_uint16)(var54.x4[2]+128)) + (((orc_uint16)(var54.x4[2]+128))>>8)))>>8;
19627     var55.x4[3] = ((uint16_t)(((orc_uint16)(var54.x4[3]+128)) + (((orc_uint16)(var54.x4[3]+128))>>8)))>>8;
19628     /* 15: convwb */
19629     var56.x4[0] = var55.x4[0];
19630     var56.x4[1] = var55.x4[1];
19631     var56.x4[2] = var55.x4[2];
19632     var56.x4[3] = var55.x4[3];
19633     /* 16: addusb */
19634     var44.x4[0] = ORC_CLAMP_UB((orc_uint8)var50.x4[0] + (orc_uint8)var56.x4[0]);
19635     var44.x4[1] = ORC_CLAMP_UB((orc_uint8)var50.x4[1] + (orc_uint8)var56.x4[1]);
19636     var44.x4[2] = ORC_CLAMP_UB((orc_uint8)var50.x4[2] + (orc_uint8)var56.x4[2]);
19637     var44.x4[3] = ORC_CLAMP_UB((orc_uint8)var50.x4[3] + (orc_uint8)var56.x4[3]);
19638     /* 17: storel */
19639     ptr0[i] = var44;
19640   }
19641
19642 }
19643
19644 void
19645 orc_code_combine_atop_u_n (orc_uint32 * d1, const orc_uint32 * s1, int n)
19646 {
19647   OrcExecutor _ex, *ex = &_ex;
19648   static int p_inited = 0;
19649   static OrcProgram *p = 0;
19650   void (*func) (OrcExecutor *);
19651
19652   if (!p_inited) {
19653     orc_once_mutex_lock ();
19654     if (!p_inited) {
19655       OrcCompileResult result;
19656
19657       p = orc_program_new ();
19658       orc_program_set_name (p, "orc_code_combine_atop_u_n");
19659       orc_program_set_backup_function (p, _backup_orc_code_combine_atop_u_n);
19660       orc_program_add_destination (p, 4, "d1");
19661       orc_program_add_source (p, 4, "s1");
19662       orc_program_add_constant (p, 4, 0x000000ff, "c1");
19663       orc_program_add_temporary (p, 8, "t1");
19664       orc_program_add_temporary (p, 8, "t2");
19665       orc_program_add_temporary (p, 8, "t3");
19666       orc_program_add_temporary (p, 8, "t4");
19667       orc_program_add_temporary (p, 8, "t5");
19668       orc_program_add_temporary (p, 8, "t6");
19669       orc_program_add_temporary (p, 4, "t7");
19670       orc_program_add_temporary (p, 4, "t8");
19671
19672       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T4, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
19673       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_D1);
19674       orc_program_append_2 (p, "splatw3q", 0, ORC_VAR_T5, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
19675       orc_program_append_2 (p, "mullw", 2, ORC_VAR_T6, ORC_VAR_T4, ORC_VAR_T5, ORC_VAR_D1);
19676       orc_program_append_2 (p, "div255w", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_D1, ORC_VAR_D1);
19677       orc_program_append_2 (p, "convwb", 2, ORC_VAR_T7, ORC_VAR_T6, ORC_VAR_D1, ORC_VAR_D1);
19678       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_D1);
19679       orc_program_append_2 (p, "splatw3q", 0, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_D1, ORC_VAR_D1);
19680       orc_program_append_2 (p, "xorw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C1, ORC_VAR_D1);
19681       orc_program_append_2 (p, "mullw", 2, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_T5, ORC_VAR_D1);
19682       orc_program_append_2 (p, "div255w", 2, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_D1, ORC_VAR_D1);
19683       orc_program_append_2 (p, "convwb", 2, ORC_VAR_T8, ORC_VAR_T4, ORC_VAR_D1, ORC_VAR_D1);
19684       orc_program_append_2 (p, "addusb", 2, ORC_VAR_D1, ORC_VAR_T7, ORC_VAR_T8, ORC_VAR_D1);
19685
19686       result = orc_program_compile (p);
19687     }
19688     p_inited = TRUE;
19689     orc_once_mutex_unlock ();
19690   }
19691   ex->program = p;
19692
19693   ex->n = n;
19694   ex->arrays[ORC_VAR_D1] = d1;
19695   ex->arrays[ORC_VAR_S1] = (void *)s1;
19696
19697   func = p->code_exec;
19698   func (ex);
19699 }
19700 #endif
19701
19702
19703 /* orc_code_combine_xor_u */
19704 #ifdef DISABLE_ORC
19705 void
19706 orc_code_combine_xor_u (orc_uint32 * d1, const orc_uint32 * s1, const orc_uint32 * s2, int n){
19707   int i;
19708   orc_union32 * ORC_RESTRICT ptr0;
19709   const orc_union32 * ORC_RESTRICT ptr4;
19710   const orc_union32 * ORC_RESTRICT ptr5;
19711   orc_union32 var40;
19712   orc_union32 var41;
19713   orc_union32 var42;
19714   orc_union64 var43;
19715   orc_union32 var44;
19716   orc_union64 var45;
19717   orc_union32 var46;
19718   orc_union64 var47;
19719   orc_union64 var48;
19720   orc_union64 var49;
19721   orc_union64 var50;
19722   orc_union64 var51;
19723   orc_union64 var52;
19724   orc_union64 var53;
19725   orc_union64 var54;
19726   orc_union64 var55;
19727   orc_union64 var56;
19728   orc_union32 var57;
19729   orc_union64 var58;
19730   orc_union64 var59;
19731   orc_union64 var60;
19732   orc_union64 var61;
19733   orc_union64 var62;
19734   orc_union32 var63;
19735
19736   ptr0 = (orc_union32 *)d1;
19737   ptr4 = (orc_union32 *)s1;
19738   ptr5 = (orc_union32 *)s2;
19739
19740     /* 10: loadpw */
19741     var43.x4[0] = 0x000000ff; /* 255 or 1.25987e-321f */
19742     var43.x4[1] = 0x000000ff; /* 255 or 1.25987e-321f */
19743     var43.x4[2] = 0x000000ff; /* 255 or 1.25987e-321f */
19744     var43.x4[3] = 0x000000ff; /* 255 or 1.25987e-321f */
19745     /* 18: loadpw */
19746     var45.x4[0] = 0x000000ff; /* 255 or 1.25987e-321f */
19747     var45.x4[1] = 0x000000ff; /* 255 or 1.25987e-321f */
19748     var45.x4[2] = 0x000000ff; /* 255 or 1.25987e-321f */
19749     var45.x4[3] = 0x000000ff; /* 255 or 1.25987e-321f */
19750
19751   for (i = 0; i < n; i++) {
19752     /* 0: loadl */
19753     var40 = ptr4[i];
19754     /* 1: convubw */
19755     var47.x4[0] = (orc_uint8)var40.x4[0];
19756     var47.x4[1] = (orc_uint8)var40.x4[1];
19757     var47.x4[2] = (orc_uint8)var40.x4[2];
19758     var47.x4[3] = (orc_uint8)var40.x4[3];
19759     /* 2: loadl */
19760     var41 = ptr5[i];
19761     /* 3: convubw */
19762     var48.x4[0] = (orc_uint8)var41.x4[0];
19763     var48.x4[1] = (orc_uint8)var41.x4[1];
19764     var48.x4[2] = (orc_uint8)var41.x4[2];
19765     var48.x4[3] = (orc_uint8)var41.x4[3];
19766     /* 4: splatw3q */
19767     var49.i = ((((orc_uint64)var48.i)>>48) << 48) | ((((orc_uint64)var48.i)>>48)<<32) | ((((orc_uint64)var48.i)>>48) << 16) | ((((orc_uint64)var48.i)>>48));
19768     /* 5: mullw */
19769     var50.x4[0] = (var47.x4[0] * var49.x4[0]) & 0xffff;
19770     var50.x4[1] = (var47.x4[1] * var49.x4[1]) & 0xffff;
19771     var50.x4[2] = (var47.x4[2] * var49.x4[2]) & 0xffff;
19772     var50.x4[3] = (var47.x4[3] * var49.x4[3]) & 0xffff;
19773     /* 6: div255w */
19774     var51.x4[0] = ((uint16_t)(((orc_uint16)(var50.x4[0]+128)) + (((orc_uint16)(var50.x4[0]+128))>>8)))>>8;
19775     var51.x4[1] = ((uint16_t)(((orc_uint16)(var50.x4[1]+128)) + (((orc_uint16)(var50.x4[1]+128))>>8)))>>8;
19776     var51.x4[2] = ((uint16_t)(((orc_uint16)(var50.x4[2]+128)) + (((orc_uint16)(var50.x4[2]+128))>>8)))>>8;
19777     var51.x4[3] = ((uint16_t)(((orc_uint16)(var50.x4[3]+128)) + (((orc_uint16)(var50.x4[3]+128))>>8)))>>8;
19778     /* 7: loadl */
19779     var42 = ptr0[i];
19780     /* 8: convubw */
19781     var52.x4[0] = (orc_uint8)var42.x4[0];
19782     var52.x4[1] = (orc_uint8)var42.x4[1];
19783     var52.x4[2] = (orc_uint8)var42.x4[2];
19784     var52.x4[3] = (orc_uint8)var42.x4[3];
19785     /* 9: splatw3q */
19786     var53.i = ((((orc_uint64)var52.i)>>48) << 48) | ((((orc_uint64)var52.i)>>48)<<32) | ((((orc_uint64)var52.i)>>48) << 16) | ((((orc_uint64)var52.i)>>48));
19787     /* 11: xorw */
19788     var54.x4[0] = var53.x4[0] ^ var43.x4[0];
19789     var54.x4[1] = var53.x4[1] ^ var43.x4[1];
19790     var54.x4[2] = var53.x4[2] ^ var43.x4[2];
19791     var54.x4[3] = var53.x4[3] ^ var43.x4[3];
19792     /* 12: mullw */
19793     var55.x4[0] = (var51.x4[0] * var54.x4[0]) & 0xffff;
19794     var55.x4[1] = (var51.x4[1] * var54.x4[1]) & 0xffff;
19795     var55.x4[2] = (var51.x4[2] * var54.x4[2]) & 0xffff;
19796     var55.x4[3] = (var51.x4[3] * var54.x4[3]) & 0xffff;
19797     /* 13: div255w */
19798     var56.x4[0] = ((uint16_t)(((orc_uint16)(var55.x4[0]+128)) + (((orc_uint16)(var55.x4[0]+128))>>8)))>>8;
19799     var56.x4[1] = ((uint16_t)(((orc_uint16)(var55.x4[1]+128)) + (((orc_uint16)(var55.x4[1]+128))>>8)))>>8;
19800     var56.x4[2] = ((uint16_t)(((orc_uint16)(var55.x4[2]+128)) + (((orc_uint16)(var55.x4[2]+128))>>8)))>>8;
19801     var56.x4[3] = ((uint16_t)(((orc_uint16)(var55.x4[3]+128)) + (((orc_uint16)(var55.x4[3]+128))>>8)))>>8;
19802     /* 14: convwb */
19803     var57.x4[0] = var56.x4[0];
19804     var57.x4[1] = var56.x4[1];
19805     var57.x4[2] = var56.x4[2];
19806     var57.x4[3] = var56.x4[3];
19807     /* 15: loadl */
19808     var44 = ptr0[i];
19809     /* 16: convubw */
19810     var58.x4[0] = (orc_uint8)var44.x4[0];
19811     var58.x4[1] = (orc_uint8)var44.x4[1];
19812     var58.x4[2] = (orc_uint8)var44.x4[2];
19813     var58.x4[3] = (orc_uint8)var44.x4[3];
19814     /* 17: splatw3q */
19815     var59.i = ((((orc_uint64)var51.i)>>48) << 48) | ((((orc_uint64)var51.i)>>48)<<32) | ((((orc_uint64)var51.i)>>48) << 16) | ((((orc_uint64)var51.i)>>48));
19816     /* 19: xorw */
19817     var60.x4[0] = var59.x4[0] ^ var45.x4[0];
19818     var60.x4[1] = var59.x4[1] ^ var45.x4[1];
19819     var60.x4[2] = var59.x4[2] ^ var45.x4[2];
19820     var60.x4[3] = var59.x4[3] ^ var45.x4[3];
19821     /* 20: mullw */
19822     var61.x4[0] = (var58.x4[0] * var60.x4[0]) & 0xffff;
19823     var61.x4[1] = (var58.x4[1] * var60.x4[1]) & 0xffff;
19824     var61.x4[2] = (var58.x4[2] * var60.x4[2]) & 0xffff;
19825     var61.x4[3] = (var58.x4[3] * var60.x4[3]) & 0xffff;
19826     /* 21: div255w */
19827     var62.x4[0] = ((uint16_t)(((orc_uint16)(var61.x4[0]+128)) + (((orc_uint16)(var61.x4[0]+128))>>8)))>>8;
19828     var62.x4[1] = ((uint16_t)(((orc_uint16)(var61.x4[1]+128)) + (((orc_uint16)(var61.x4[1]+128))>>8)))>>8;
19829     var62.x4[2] = ((uint16_t)(((orc_uint16)(var61.x4[2]+128)) + (((orc_uint16)(var61.x4[2]+128))>>8)))>>8;
19830     var62.x4[3] = ((uint16_t)(((orc_uint16)(var61.x4[3]+128)) + (((orc_uint16)(var61.x4[3]+128))>>8)))>>8;
19831     /* 22: convwb */
19832     var63.x4[0] = var62.x4[0];
19833     var63.x4[1] = var62.x4[1];
19834     var63.x4[2] = var62.x4[2];
19835     var63.x4[3] = var62.x4[3];
19836     /* 23: addusb */
19837     var46.x4[0] = ORC_CLAMP_UB((orc_uint8)var57.x4[0] + (orc_uint8)var63.x4[0]);
19838     var46.x4[1] = ORC_CLAMP_UB((orc_uint8)var57.x4[1] + (orc_uint8)var63.x4[1]);
19839     var46.x4[2] = ORC_CLAMP_UB((orc_uint8)var57.x4[2] + (orc_uint8)var63.x4[2]);
19840     var46.x4[3] = ORC_CLAMP_UB((orc_uint8)var57.x4[3] + (orc_uint8)var63.x4[3]);
19841     /* 24: storel */
19842     ptr0[i] = var46;
19843   }
19844
19845 }
19846
19847 #else
19848 static void
19849 _backup_orc_code_combine_xor_u (OrcExecutor * ORC_RESTRICT ex)
19850 {
19851   int i;
19852   int n = ex->n;
19853   orc_union32 * ORC_RESTRICT ptr0;
19854   const orc_union32 * ORC_RESTRICT ptr4;
19855   const orc_union32 * ORC_RESTRICT ptr5;
19856   orc_union32 var40;
19857   orc_union32 var41;
19858   orc_union32 var42;
19859   orc_union64 var43;
19860   orc_union32 var44;
19861   orc_union64 var45;
19862   orc_union32 var46;
19863   orc_union64 var47;
19864   orc_union64 var48;
19865   orc_union64 var49;
19866   orc_union64 var50;
19867   orc_union64 var51;
19868   orc_union64 var52;
19869   orc_union64 var53;
19870   orc_union64 var54;
19871   orc_union64 var55;
19872   orc_union64 var56;
19873   orc_union32 var57;
19874   orc_union64 var58;
19875   orc_union64 var59;
19876   orc_union64 var60;
19877   orc_union64 var61;
19878   orc_union64 var62;
19879   orc_union32 var63;
19880
19881   ptr0 = (orc_union32 *)ex->arrays[0];
19882   ptr4 = (orc_union32 *)ex->arrays[4];
19883   ptr5 = (orc_union32 *)ex->arrays[5];
19884
19885     /* 10: loadpw */
19886     var43.x4[0] = 0x000000ff; /* 255 or 1.25987e-321f */
19887     var43.x4[1] = 0x000000ff; /* 255 or 1.25987e-321f */
19888     var43.x4[2] = 0x000000ff; /* 255 or 1.25987e-321f */
19889     var43.x4[3] = 0x000000ff; /* 255 or 1.25987e-321f */
19890     /* 18: loadpw */
19891     var45.x4[0] = 0x000000ff; /* 255 or 1.25987e-321f */
19892     var45.x4[1] = 0x000000ff; /* 255 or 1.25987e-321f */
19893     var45.x4[2] = 0x000000ff; /* 255 or 1.25987e-321f */
19894     var45.x4[3] = 0x000000ff; /* 255 or 1.25987e-321f */
19895
19896   for (i = 0; i < n; i++) {
19897     /* 0: loadl */
19898     var40 = ptr4[i];
19899     /* 1: convubw */
19900     var47.x4[0] = (orc_uint8)var40.x4[0];
19901     var47.x4[1] = (orc_uint8)var40.x4[1];
19902     var47.x4[2] = (orc_uint8)var40.x4[2];
19903     var47.x4[3] = (orc_uint8)var40.x4[3];
19904     /* 2: loadl */
19905     var41 = ptr5[i];
19906     /* 3: convubw */
19907     var48.x4[0] = (orc_uint8)var41.x4[0];
19908     var48.x4[1] = (orc_uint8)var41.x4[1];
19909     var48.x4[2] = (orc_uint8)var41.x4[2];
19910     var48.x4[3] = (orc_uint8)var41.x4[3];
19911     /* 4: splatw3q */
19912     var49.i = ((((orc_uint64)var48.i)>>48) << 48) | ((((orc_uint64)var48.i)>>48)<<32) | ((((orc_uint64)var48.i)>>48) << 16) | ((((orc_uint64)var48.i)>>48));
19913     /* 5: mullw */
19914     var50.x4[0] = (var47.x4[0] * var49.x4[0]) & 0xffff;
19915     var50.x4[1] = (var47.x4[1] * var49.x4[1]) & 0xffff;
19916     var50.x4[2] = (var47.x4[2] * var49.x4[2]) & 0xffff;
19917     var50.x4[3] = (var47.x4[3] * var49.x4[3]) & 0xffff;
19918     /* 6: div255w */
19919     var51.x4[0] = ((uint16_t)(((orc_uint16)(var50.x4[0]+128)) + (((orc_uint16)(var50.x4[0]+128))>>8)))>>8;
19920     var51.x4[1] = ((uint16_t)(((orc_uint16)(var50.x4[1]+128)) + (((orc_uint16)(var50.x4[1]+128))>>8)))>>8;
19921     var51.x4[2] = ((uint16_t)(((orc_uint16)(var50.x4[2]+128)) + (((orc_uint16)(var50.x4[2]+128))>>8)))>>8;
19922     var51.x4[3] = ((uint16_t)(((orc_uint16)(var50.x4[3]+128)) + (((orc_uint16)(var50.x4[3]+128))>>8)))>>8;
19923     /* 7: loadl */
19924     var42 = ptr0[i];
19925     /* 8: convubw */
19926     var52.x4[0] = (orc_uint8)var42.x4[0];
19927     var52.x4[1] = (orc_uint8)var42.x4[1];
19928     var52.x4[2] = (orc_uint8)var42.x4[2];
19929     var52.x4[3] = (orc_uint8)var42.x4[3];
19930     /* 9: splatw3q */
19931     var53.i = ((((orc_uint64)var52.i)>>48) << 48) | ((((orc_uint64)var52.i)>>48)<<32) | ((((orc_uint64)var52.i)>>48) << 16) | ((((orc_uint64)var52.i)>>48));
19932     /* 11: xorw */
19933     var54.x4[0] = var53.x4[0] ^ var43.x4[0];
19934     var54.x4[1] = var53.x4[1] ^ var43.x4[1];
19935     var54.x4[2] = var53.x4[2] ^ var43.x4[2];
19936     var54.x4[3] = var53.x4[3] ^ var43.x4[3];
19937     /* 12: mullw */
19938     var55.x4[0] = (var51.x4[0] * var54.x4[0]) & 0xffff;
19939     var55.x4[1] = (var51.x4[1] * var54.x4[1]) & 0xffff;
19940     var55.x4[2] = (var51.x4[2] * var54.x4[2]) & 0xffff;
19941     var55.x4[3] = (var51.x4[3] * var54.x4[3]) & 0xffff;
19942     /* 13: div255w */
19943     var56.x4[0] = ((uint16_t)(((orc_uint16)(var55.x4[0]+128)) + (((orc_uint16)(var55.x4[0]+128))>>8)))>>8;
19944     var56.x4[1] = ((uint16_t)(((orc_uint16)(var55.x4[1]+128)) + (((orc_uint16)(var55.x4[1]+128))>>8)))>>8;
19945     var56.x4[2] = ((uint16_t)(((orc_uint16)(var55.x4[2]+128)) + (((orc_uint16)(var55.x4[2]+128))>>8)))>>8;
19946     var56.x4[3] = ((uint16_t)(((orc_uint16)(var55.x4[3]+128)) + (((orc_uint16)(var55.x4[3]+128))>>8)))>>8;
19947     /* 14: convwb */
19948     var57.x4[0] = var56.x4[0];
19949     var57.x4[1] = var56.x4[1];
19950     var57.x4[2] = var56.x4[2];
19951     var57.x4[3] = var56.x4[3];
19952     /* 15: loadl */
19953     var44 = ptr0[i];
19954     /* 16: convubw */
19955     var58.x4[0] = (orc_uint8)var44.x4[0];
19956     var58.x4[1] = (orc_uint8)var44.x4[1];
19957     var58.x4[2] = (orc_uint8)var44.x4[2];
19958     var58.x4[3] = (orc_uint8)var44.x4[3];
19959     /* 17: splatw3q */
19960     var59.i = ((((orc_uint64)var51.i)>>48) << 48) | ((((orc_uint64)var51.i)>>48)<<32) | ((((orc_uint64)var51.i)>>48) << 16) | ((((orc_uint64)var51.i)>>48));
19961     /* 19: xorw */
19962     var60.x4[0] = var59.x4[0] ^ var45.x4[0];
19963     var60.x4[1] = var59.x4[1] ^ var45.x4[1];
19964     var60.x4[2] = var59.x4[2] ^ var45.x4[2];
19965     var60.x4[3] = var59.x4[3] ^ var45.x4[3];
19966     /* 20: mullw */
19967     var61.x4[0] = (var58.x4[0] * var60.x4[0]) & 0xffff;
19968     var61.x4[1] = (var58.x4[1] * var60.x4[1]) & 0xffff;
19969     var61.x4[2] = (var58.x4[2] * var60.x4[2]) & 0xffff;
19970     var61.x4[3] = (var58.x4[3] * var60.x4[3]) & 0xffff;
19971     /* 21: div255w */
19972     var62.x4[0] = ((uint16_t)(((orc_uint16)(var61.x4[0]+128)) + (((orc_uint16)(var61.x4[0]+128))>>8)))>>8;
19973     var62.x4[1] = ((uint16_t)(((orc_uint16)(var61.x4[1]+128)) + (((orc_uint16)(var61.x4[1]+128))>>8)))>>8;
19974     var62.x4[2] = ((uint16_t)(((orc_uint16)(var61.x4[2]+128)) + (((orc_uint16)(var61.x4[2]+128))>>8)))>>8;
19975     var62.x4[3] = ((uint16_t)(((orc_uint16)(var61.x4[3]+128)) + (((orc_uint16)(var61.x4[3]+128))>>8)))>>8;
19976     /* 22: convwb */
19977     var63.x4[0] = var62.x4[0];
19978     var63.x4[1] = var62.x4[1];
19979     var63.x4[2] = var62.x4[2];
19980     var63.x4[3] = var62.x4[3];
19981     /* 23: addusb */
19982     var46.x4[0] = ORC_CLAMP_UB((orc_uint8)var57.x4[0] + (orc_uint8)var63.x4[0]);
19983     var46.x4[1] = ORC_CLAMP_UB((orc_uint8)var57.x4[1] + (orc_uint8)var63.x4[1]);
19984     var46.x4[2] = ORC_CLAMP_UB((orc_uint8)var57.x4[2] + (orc_uint8)var63.x4[2]);
19985     var46.x4[3] = ORC_CLAMP_UB((orc_uint8)var57.x4[3] + (orc_uint8)var63.x4[3]);
19986     /* 24: storel */
19987     ptr0[i] = var46;
19988   }
19989
19990 }
19991
19992 void
19993 orc_code_combine_xor_u (orc_uint32 * d1, const orc_uint32 * s1, const orc_uint32 * s2, int n)
19994 {
19995   OrcExecutor _ex, *ex = &_ex;
19996   static int p_inited = 0;
19997   static OrcProgram *p = 0;
19998   void (*func) (OrcExecutor *);
19999
20000   if (!p_inited) {
20001     orc_once_mutex_lock ();
20002     if (!p_inited) {
20003       OrcCompileResult result;
20004
20005       p = orc_program_new ();
20006       orc_program_set_name (p, "orc_code_combine_xor_u");
20007       orc_program_set_backup_function (p, _backup_orc_code_combine_xor_u);
20008       orc_program_add_destination (p, 4, "d1");
20009       orc_program_add_source (p, 4, "s1");
20010       orc_program_add_source (p, 4, "s2");
20011       orc_program_add_constant (p, 4, 0x000000ff, "c1");
20012       orc_program_add_temporary (p, 8, "t1");
20013       orc_program_add_temporary (p, 8, "t2");
20014       orc_program_add_temporary (p, 8, "t3");
20015       orc_program_add_temporary (p, 8, "t4");
20016       orc_program_add_temporary (p, 8, "t5");
20017       orc_program_add_temporary (p, 8, "t6");
20018       orc_program_add_temporary (p, 4, "t7");
20019       orc_program_add_temporary (p, 4, "t8");
20020
20021       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T4, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
20022       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T5, ORC_VAR_S2, ORC_VAR_D1, ORC_VAR_D1);
20023       orc_program_append_2 (p, "splatw3q", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_D1, ORC_VAR_D1);
20024       orc_program_append_2 (p, "mullw", 2, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_T5, ORC_VAR_D1);
20025       orc_program_append_2 (p, "div255w", 2, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_D1, ORC_VAR_D1);
20026       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_D1);
20027       orc_program_append_2 (p, "splatw3q", 0, ORC_VAR_T5, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
20028       orc_program_append_2 (p, "xorw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C1, ORC_VAR_D1);
20029       orc_program_append_2 (p, "mullw", 2, ORC_VAR_T6, ORC_VAR_T4, ORC_VAR_T5, ORC_VAR_D1);
20030       orc_program_append_2 (p, "div255w", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_D1, ORC_VAR_D1);
20031       orc_program_append_2 (p, "convwb", 2, ORC_VAR_T7, ORC_VAR_T6, ORC_VAR_D1, ORC_VAR_D1);
20032       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_D1);
20033       orc_program_append_2 (p, "splatw3q", 0, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_D1, ORC_VAR_D1);
20034       orc_program_append_2 (p, "xorw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C1, ORC_VAR_D1);
20035       orc_program_append_2 (p, "mullw", 2, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_T5, ORC_VAR_D1);
20036       orc_program_append_2 (p, "div255w", 2, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_D1, ORC_VAR_D1);
20037       orc_program_append_2 (p, "convwb", 2, ORC_VAR_T8, ORC_VAR_T4, ORC_VAR_D1, ORC_VAR_D1);
20038       orc_program_append_2 (p, "addusb", 2, ORC_VAR_D1, ORC_VAR_T7, ORC_VAR_T8, ORC_VAR_D1);
20039
20040       result = orc_program_compile (p);
20041     }
20042     p_inited = TRUE;
20043     orc_once_mutex_unlock ();
20044   }
20045   ex->program = p;
20046
20047   ex->n = n;
20048   ex->arrays[ORC_VAR_D1] = d1;
20049   ex->arrays[ORC_VAR_S1] = (void *)s1;
20050   ex->arrays[ORC_VAR_S2] = (void *)s2;
20051
20052   func = p->code_exec;
20053   func (ex);
20054 }
20055 #endif
20056
20057
20058 /* orc_code_combine_xor_u_n */
20059 #ifdef DISABLE_ORC
20060 void
20061 orc_code_combine_xor_u_n (orc_uint32 * d1, const orc_uint32 * s1, int n){
20062   int i;
20063   orc_union32 * ORC_RESTRICT ptr0;
20064   const orc_union32 * ORC_RESTRICT ptr4;
20065   orc_union32 var40;
20066   orc_union32 var41;
20067   orc_union64 var42;
20068   orc_union32 var43;
20069   orc_union64 var44;
20070   orc_union32 var45;
20071   orc_union64 var46;
20072   orc_union64 var47;
20073   orc_union64 var48;
20074   orc_union64 var49;
20075   orc_union64 var50;
20076   orc_union64 var51;
20077   orc_union32 var52;
20078   orc_union64 var53;
20079   orc_union64 var54;
20080   orc_union64 var55;
20081   orc_union64 var56;
20082   orc_union64 var57;
20083   orc_union32 var58;
20084
20085   ptr0 = (orc_union32 *)d1;
20086   ptr4 = (orc_union32 *)s1;
20087
20088     /* 5: loadpw */
20089     var42.x4[0] = 0x000000ff; /* 255 or 1.25987e-321f */
20090     var42.x4[1] = 0x000000ff; /* 255 or 1.25987e-321f */
20091     var42.x4[2] = 0x000000ff; /* 255 or 1.25987e-321f */
20092     var42.x4[3] = 0x000000ff; /* 255 or 1.25987e-321f */
20093     /* 13: loadpw */
20094     var44.x4[0] = 0x000000ff; /* 255 or 1.25987e-321f */
20095     var44.x4[1] = 0x000000ff; /* 255 or 1.25987e-321f */
20096     var44.x4[2] = 0x000000ff; /* 255 or 1.25987e-321f */
20097     var44.x4[3] = 0x000000ff; /* 255 or 1.25987e-321f */
20098
20099   for (i = 0; i < n; i++) {
20100     /* 0: loadl */
20101     var40 = ptr4[i];
20102     /* 1: convubw */
20103     var46.x4[0] = (orc_uint8)var40.x4[0];
20104     var46.x4[1] = (orc_uint8)var40.x4[1];
20105     var46.x4[2] = (orc_uint8)var40.x4[2];
20106     var46.x4[3] = (orc_uint8)var40.x4[3];
20107     /* 2: loadl */
20108     var41 = ptr0[i];
20109     /* 3: convubw */
20110     var47.x4[0] = (orc_uint8)var41.x4[0];
20111     var47.x4[1] = (orc_uint8)var41.x4[1];
20112     var47.x4[2] = (orc_uint8)var41.x4[2];
20113     var47.x4[3] = (orc_uint8)var41.x4[3];
20114     /* 4: splatw3q */
20115     var48.i = ((((orc_uint64)var47.i)>>48) << 48) | ((((orc_uint64)var47.i)>>48)<<32) | ((((orc_uint64)var47.i)>>48) << 16) | ((((orc_uint64)var47.i)>>48));
20116     /* 6: xorw */
20117     var49.x4[0] = var48.x4[0] ^ var42.x4[0];
20118     var49.x4[1] = var48.x4[1] ^ var42.x4[1];
20119     var49.x4[2] = var48.x4[2] ^ var42.x4[2];
20120     var49.x4[3] = var48.x4[3] ^ var42.x4[3];
20121     /* 7: mullw */
20122     var50.x4[0] = (var46.x4[0] * var49.x4[0]) & 0xffff;
20123     var50.x4[1] = (var46.x4[1] * var49.x4[1]) & 0xffff;
20124     var50.x4[2] = (var46.x4[2] * var49.x4[2]) & 0xffff;
20125     var50.x4[3] = (var46.x4[3] * var49.x4[3]) & 0xffff;
20126     /* 8: div255w */
20127     var51.x4[0] = ((uint16_t)(((orc_uint16)(var50.x4[0]+128)) + (((orc_uint16)(var50.x4[0]+128))>>8)))>>8;
20128     var51.x4[1] = ((uint16_t)(((orc_uint16)(var50.x4[1]+128)) + (((orc_uint16)(var50.x4[1]+128))>>8)))>>8;
20129     var51.x4[2] = ((uint16_t)(((orc_uint16)(var50.x4[2]+128)) + (((orc_uint16)(var50.x4[2]+128))>>8)))>>8;
20130     var51.x4[3] = ((uint16_t)(((orc_uint16)(var50.x4[3]+128)) + (((orc_uint16)(var50.x4[3]+128))>>8)))>>8;
20131     /* 9: convwb */
20132     var52.x4[0] = var51.x4[0];
20133     var52.x4[1] = var51.x4[1];
20134     var52.x4[2] = var51.x4[2];
20135     var52.x4[3] = var51.x4[3];
20136     /* 10: loadl */
20137     var43 = ptr0[i];
20138     /* 11: convubw */
20139     var53.x4[0] = (orc_uint8)var43.x4[0];
20140     var53.x4[1] = (orc_uint8)var43.x4[1];
20141     var53.x4[2] = (orc_uint8)var43.x4[2];
20142     var53.x4[3] = (orc_uint8)var43.x4[3];
20143     /* 12: splatw3q */
20144     var54.i = ((((orc_uint64)var46.i)>>48) << 48) | ((((orc_uint64)var46.i)>>48)<<32) | ((((orc_uint64)var46.i)>>48) << 16) | ((((orc_uint64)var46.i)>>48));
20145     /* 14: xorw */
20146     var55.x4[0] = var54.x4[0] ^ var44.x4[0];
20147     var55.x4[1] = var54.x4[1] ^ var44.x4[1];
20148     var55.x4[2] = var54.x4[2] ^ var44.x4[2];
20149     var55.x4[3] = var54.x4[3] ^ var44.x4[3];
20150     /* 15: mullw */
20151     var56.x4[0] = (var53.x4[0] * var55.x4[0]) & 0xffff;
20152     var56.x4[1] = (var53.x4[1] * var55.x4[1]) & 0xffff;
20153     var56.x4[2] = (var53.x4[2] * var55.x4[2]) & 0xffff;
20154     var56.x4[3] = (var53.x4[3] * var55.x4[3]) & 0xffff;
20155     /* 16: div255w */
20156     var57.x4[0] = ((uint16_t)(((orc_uint16)(var56.x4[0]+128)) + (((orc_uint16)(var56.x4[0]+128))>>8)))>>8;
20157     var57.x4[1] = ((uint16_t)(((orc_uint16)(var56.x4[1]+128)) + (((orc_uint16)(var56.x4[1]+128))>>8)))>>8;
20158     var57.x4[2] = ((uint16_t)(((orc_uint16)(var56.x4[2]+128)) + (((orc_uint16)(var56.x4[2]+128))>>8)))>>8;
20159     var57.x4[3] = ((uint16_t)(((orc_uint16)(var56.x4[3]+128)) + (((orc_uint16)(var56.x4[3]+128))>>8)))>>8;
20160     /* 17: convwb */
20161     var58.x4[0] = var57.x4[0];
20162     var58.x4[1] = var57.x4[1];
20163     var58.x4[2] = var57.x4[2];
20164     var58.x4[3] = var57.x4[3];
20165     /* 18: addusb */
20166     var45.x4[0] = ORC_CLAMP_UB((orc_uint8)var52.x4[0] + (orc_uint8)var58.x4[0]);
20167     var45.x4[1] = ORC_CLAMP_UB((orc_uint8)var52.x4[1] + (orc_uint8)var58.x4[1]);
20168     var45.x4[2] = ORC_CLAMP_UB((orc_uint8)var52.x4[2] + (orc_uint8)var58.x4[2]);
20169     var45.x4[3] = ORC_CLAMP_UB((orc_uint8)var52.x4[3] + (orc_uint8)var58.x4[3]);
20170     /* 19: storel */
20171     ptr0[i] = var45;
20172   }
20173
20174 }
20175
20176 #else
20177 static void
20178 _backup_orc_code_combine_xor_u_n (OrcExecutor * ORC_RESTRICT ex)
20179 {
20180   int i;
20181   int n = ex->n;
20182   orc_union32 * ORC_RESTRICT ptr0;
20183   const orc_union32 * ORC_RESTRICT ptr4;
20184   orc_union32 var40;
20185   orc_union32 var41;
20186   orc_union64 var42;
20187   orc_union32 var43;
20188   orc_union64 var44;
20189   orc_union32 var45;
20190   orc_union64 var46;
20191   orc_union64 var47;
20192   orc_union64 var48;
20193   orc_union64 var49;
20194   orc_union64 var50;
20195   orc_union64 var51;
20196   orc_union32 var52;
20197   orc_union64 var53;
20198   orc_union64 var54;
20199   orc_union64 var55;
20200   orc_union64 var56;
20201   orc_union64 var57;
20202   orc_union32 var58;
20203
20204   ptr0 = (orc_union32 *)ex->arrays[0];
20205   ptr4 = (orc_union32 *)ex->arrays[4];
20206
20207     /* 5: loadpw */
20208     var42.x4[0] = 0x000000ff; /* 255 or 1.25987e-321f */
20209     var42.x4[1] = 0x000000ff; /* 255 or 1.25987e-321f */
20210     var42.x4[2] = 0x000000ff; /* 255 or 1.25987e-321f */
20211     var42.x4[3] = 0x000000ff; /* 255 or 1.25987e-321f */
20212     /* 13: loadpw */
20213     var44.x4[0] = 0x000000ff; /* 255 or 1.25987e-321f */
20214     var44.x4[1] = 0x000000ff; /* 255 or 1.25987e-321f */
20215     var44.x4[2] = 0x000000ff; /* 255 or 1.25987e-321f */
20216     var44.x4[3] = 0x000000ff; /* 255 or 1.25987e-321f */
20217
20218   for (i = 0; i < n; i++) {
20219     /* 0: loadl */
20220     var40 = ptr4[i];
20221     /* 1: convubw */
20222     var46.x4[0] = (orc_uint8)var40.x4[0];
20223     var46.x4[1] = (orc_uint8)var40.x4[1];
20224     var46.x4[2] = (orc_uint8)var40.x4[2];
20225     var46.x4[3] = (orc_uint8)var40.x4[3];
20226     /* 2: loadl */
20227     var41 = ptr0[i];
20228     /* 3: convubw */
20229     var47.x4[0] = (orc_uint8)var41.x4[0];
20230     var47.x4[1] = (orc_uint8)var41.x4[1];
20231     var47.x4[2] = (orc_uint8)var41.x4[2];
20232     var47.x4[3] = (orc_uint8)var41.x4[3];
20233     /* 4: splatw3q */
20234     var48.i = ((((orc_uint64)var47.i)>>48) << 48) | ((((orc_uint64)var47.i)>>48)<<32) | ((((orc_uint64)var47.i)>>48) << 16) | ((((orc_uint64)var47.i)>>48));
20235     /* 6: xorw */
20236     var49.x4[0] = var48.x4[0] ^ var42.x4[0];
20237     var49.x4[1] = var48.x4[1] ^ var42.x4[1];
20238     var49.x4[2] = var48.x4[2] ^ var42.x4[2];
20239     var49.x4[3] = var48.x4[3] ^ var42.x4[3];
20240     /* 7: mullw */
20241     var50.x4[0] = (var46.x4[0] * var49.x4[0]) & 0xffff;
20242     var50.x4[1] = (var46.x4[1] * var49.x4[1]) & 0xffff;
20243     var50.x4[2] = (var46.x4[2] * var49.x4[2]) & 0xffff;
20244     var50.x4[3] = (var46.x4[3] * var49.x4[3]) & 0xffff;
20245     /* 8: div255w */
20246     var51.x4[0] = ((uint16_t)(((orc_uint16)(var50.x4[0]+128)) + (((orc_uint16)(var50.x4[0]+128))>>8)))>>8;
20247     var51.x4[1] = ((uint16_t)(((orc_uint16)(var50.x4[1]+128)) + (((orc_uint16)(var50.x4[1]+128))>>8)))>>8;
20248     var51.x4[2] = ((uint16_t)(((orc_uint16)(var50.x4[2]+128)) + (((orc_uint16)(var50.x4[2]+128))>>8)))>>8;
20249     var51.x4[3] = ((uint16_t)(((orc_uint16)(var50.x4[3]+128)) + (((orc_uint16)(var50.x4[3]+128))>>8)))>>8;
20250     /* 9: convwb */
20251     var52.x4[0] = var51.x4[0];
20252     var52.x4[1] = var51.x4[1];
20253     var52.x4[2] = var51.x4[2];
20254     var52.x4[3] = var51.x4[3];
20255     /* 10: loadl */
20256     var43 = ptr0[i];
20257     /* 11: convubw */
20258     var53.x4[0] = (orc_uint8)var43.x4[0];
20259     var53.x4[1] = (orc_uint8)var43.x4[1];
20260     var53.x4[2] = (orc_uint8)var43.x4[2];
20261     var53.x4[3] = (orc_uint8)var43.x4[3];
20262     /* 12: splatw3q */
20263     var54.i = ((((orc_uint64)var46.i)>>48) << 48) | ((((orc_uint64)var46.i)>>48)<<32) | ((((orc_uint64)var46.i)>>48) << 16) | ((((orc_uint64)var46.i)>>48));
20264     /* 14: xorw */
20265     var55.x4[0] = var54.x4[0] ^ var44.x4[0];
20266     var55.x4[1] = var54.x4[1] ^ var44.x4[1];
20267     var55.x4[2] = var54.x4[2] ^ var44.x4[2];
20268     var55.x4[3] = var54.x4[3] ^ var44.x4[3];
20269     /* 15: mullw */
20270     var56.x4[0] = (var53.x4[0] * var55.x4[0]) & 0xffff;
20271     var56.x4[1] = (var53.x4[1] * var55.x4[1]) & 0xffff;
20272     var56.x4[2] = (var53.x4[2] * var55.x4[2]) & 0xffff;
20273     var56.x4[3] = (var53.x4[3] * var55.x4[3]) & 0xffff;
20274     /* 16: div255w */
20275     var57.x4[0] = ((uint16_t)(((orc_uint16)(var56.x4[0]+128)) + (((orc_uint16)(var56.x4[0]+128))>>8)))>>8;
20276     var57.x4[1] = ((uint16_t)(((orc_uint16)(var56.x4[1]+128)) + (((orc_uint16)(var56.x4[1]+128))>>8)))>>8;
20277     var57.x4[2] = ((uint16_t)(((orc_uint16)(var56.x4[2]+128)) + (((orc_uint16)(var56.x4[2]+128))>>8)))>>8;
20278     var57.x4[3] = ((uint16_t)(((orc_uint16)(var56.x4[3]+128)) + (((orc_uint16)(var56.x4[3]+128))>>8)))>>8;
20279     /* 17: convwb */
20280     var58.x4[0] = var57.x4[0];
20281     var58.x4[1] = var57.x4[1];
20282     var58.x4[2] = var57.x4[2];
20283     var58.x4[3] = var57.x4[3];
20284     /* 18: addusb */
20285     var45.x4[0] = ORC_CLAMP_UB((orc_uint8)var52.x4[0] + (orc_uint8)var58.x4[0]);
20286     var45.x4[1] = ORC_CLAMP_UB((orc_uint8)var52.x4[1] + (orc_uint8)var58.x4[1]);
20287     var45.x4[2] = ORC_CLAMP_UB((orc_uint8)var52.x4[2] + (orc_uint8)var58.x4[2]);
20288     var45.x4[3] = ORC_CLAMP_UB((orc_uint8)var52.x4[3] + (orc_uint8)var58.x4[3]);
20289     /* 19: storel */
20290     ptr0[i] = var45;
20291   }
20292
20293 }
20294
20295 void
20296 orc_code_combine_xor_u_n (orc_uint32 * d1, const orc_uint32 * s1, int n)
20297 {
20298   OrcExecutor _ex, *ex = &_ex;
20299   static int p_inited = 0;
20300   static OrcProgram *p = 0;
20301   void (*func) (OrcExecutor *);
20302
20303   if (!p_inited) {
20304     orc_once_mutex_lock ();
20305     if (!p_inited) {
20306       OrcCompileResult result;
20307
20308       p = orc_program_new ();
20309       orc_program_set_name (p, "orc_code_combine_xor_u_n");
20310       orc_program_set_backup_function (p, _backup_orc_code_combine_xor_u_n);
20311       orc_program_add_destination (p, 4, "d1");
20312       orc_program_add_source (p, 4, "s1");
20313       orc_program_add_constant (p, 4, 0x000000ff, "c1");
20314       orc_program_add_temporary (p, 8, "t1");
20315       orc_program_add_temporary (p, 8, "t2");
20316       orc_program_add_temporary (p, 8, "t3");
20317       orc_program_add_temporary (p, 8, "t4");
20318       orc_program_add_temporary (p, 8, "t5");
20319       orc_program_add_temporary (p, 8, "t6");
20320       orc_program_add_temporary (p, 4, "t7");
20321       orc_program_add_temporary (p, 4, "t8");
20322
20323       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T4, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
20324       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_D1);
20325       orc_program_append_2 (p, "splatw3q", 0, ORC_VAR_T5, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
20326       orc_program_append_2 (p, "xorw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C1, ORC_VAR_D1);
20327       orc_program_append_2 (p, "mullw", 2, ORC_VAR_T6, ORC_VAR_T4, ORC_VAR_T5, ORC_VAR_D1);
20328       orc_program_append_2 (p, "div255w", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_D1, ORC_VAR_D1);
20329       orc_program_append_2 (p, "convwb", 2, ORC_VAR_T7, ORC_VAR_T6, ORC_VAR_D1, ORC_VAR_D1);
20330       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_D1);
20331       orc_program_append_2 (p, "splatw3q", 0, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_D1, ORC_VAR_D1);
20332       orc_program_append_2 (p, "xorw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C1, ORC_VAR_D1);
20333       orc_program_append_2 (p, "mullw", 2, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_T5, ORC_VAR_D1);
20334       orc_program_append_2 (p, "div255w", 2, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_D1, ORC_VAR_D1);
20335       orc_program_append_2 (p, "convwb", 2, ORC_VAR_T8, ORC_VAR_T4, ORC_VAR_D1, ORC_VAR_D1);
20336       orc_program_append_2 (p, "addusb", 2, ORC_VAR_D1, ORC_VAR_T7, ORC_VAR_T8, ORC_VAR_D1);
20337
20338       result = orc_program_compile (p);
20339     }
20340     p_inited = TRUE;
20341     orc_once_mutex_unlock ();
20342   }
20343   ex->program = p;
20344
20345   ex->n = n;
20346   ex->arrays[ORC_VAR_D1] = d1;
20347   ex->arrays[ORC_VAR_S1] = (void *)s1;
20348
20349   func = p->code_exec;
20350   func (ex);
20351 }
20352 #endif
20353
20354
20355 /* orc_code_combine_add_ca */
20356 #ifdef DISABLE_ORC
20357 void
20358 orc_code_combine_add_ca (orc_uint32 * d1, const orc_uint32 * s1, const orc_uint32 * s2, int n){
20359   int i;
20360   orc_union32 * ORC_RESTRICT ptr0;
20361   const orc_union32 * ORC_RESTRICT ptr4;
20362   const orc_union32 * ORC_RESTRICT ptr5;
20363   orc_union32 var35;
20364   orc_union32 var36;
20365   orc_union32 var37;
20366   orc_union32 var38;
20367   orc_union64 var39;
20368   orc_union64 var40;
20369   orc_union64 var41;
20370   orc_union64 var42;
20371   orc_union32 var43;
20372
20373   ptr0 = (orc_union32 *)d1;
20374   ptr4 = (orc_union32 *)s1;
20375   ptr5 = (orc_union32 *)s2;
20376
20377
20378   for (i = 0; i < n; i++) {
20379     /* 0: loadl */
20380     var35 = ptr4[i];
20381     /* 1: convubw */
20382     var39.x4[0] = (orc_uint8)var35.x4[0];
20383     var39.x4[1] = (orc_uint8)var35.x4[1];
20384     var39.x4[2] = (orc_uint8)var35.x4[2];
20385     var39.x4[3] = (orc_uint8)var35.x4[3];
20386     /* 2: loadl */
20387     var36 = ptr5[i];
20388     /* 3: convubw */
20389     var40.x4[0] = (orc_uint8)var36.x4[0];
20390     var40.x4[1] = (orc_uint8)var36.x4[1];
20391     var40.x4[2] = (orc_uint8)var36.x4[2];
20392     var40.x4[3] = (orc_uint8)var36.x4[3];
20393     /* 4: mullw */
20394     var41.x4[0] = (var39.x4[0] * var40.x4[0]) & 0xffff;
20395     var41.x4[1] = (var39.x4[1] * var40.x4[1]) & 0xffff;
20396     var41.x4[2] = (var39.x4[2] * var40.x4[2]) & 0xffff;
20397     var41.x4[3] = (var39.x4[3] * var40.x4[3]) & 0xffff;
20398     /* 5: div255w */
20399     var42.x4[0] = ((uint16_t)(((orc_uint16)(var41.x4[0]+128)) + (((orc_uint16)(var41.x4[0]+128))>>8)))>>8;
20400     var42.x4[1] = ((uint16_t)(((orc_uint16)(var41.x4[1]+128)) + (((orc_uint16)(var41.x4[1]+128))>>8)))>>8;
20401     var42.x4[2] = ((uint16_t)(((orc_uint16)(var41.x4[2]+128)) + (((orc_uint16)(var41.x4[2]+128))>>8)))>>8;
20402     var42.x4[3] = ((uint16_t)(((orc_uint16)(var41.x4[3]+128)) + (((orc_uint16)(var41.x4[3]+128))>>8)))>>8;
20403     /* 6: convwb */
20404     var43.x4[0] = var42.x4[0];
20405     var43.x4[1] = var42.x4[1];
20406     var43.x4[2] = var42.x4[2];
20407     var43.x4[3] = var42.x4[3];
20408     /* 7: loadl */
20409     var37 = ptr0[i];
20410     /* 8: addusb */
20411     var38.x4[0] = ORC_CLAMP_UB((orc_uint8)var37.x4[0] + (orc_uint8)var43.x4[0]);
20412     var38.x4[1] = ORC_CLAMP_UB((orc_uint8)var37.x4[1] + (orc_uint8)var43.x4[1]);
20413     var38.x4[2] = ORC_CLAMP_UB((orc_uint8)var37.x4[2] + (orc_uint8)var43.x4[2]);
20414     var38.x4[3] = ORC_CLAMP_UB((orc_uint8)var37.x4[3] + (orc_uint8)var43.x4[3]);
20415     /* 9: storel */
20416     ptr0[i] = var38;
20417   }
20418
20419 }
20420
20421 #else
20422 static void
20423 _backup_orc_code_combine_add_ca (OrcExecutor * ORC_RESTRICT ex)
20424 {
20425   int i;
20426   int n = ex->n;
20427   orc_union32 * ORC_RESTRICT ptr0;
20428   const orc_union32 * ORC_RESTRICT ptr4;
20429   const orc_union32 * ORC_RESTRICT ptr5;
20430   orc_union32 var35;
20431   orc_union32 var36;
20432   orc_union32 var37;
20433   orc_union32 var38;
20434   orc_union64 var39;
20435   orc_union64 var40;
20436   orc_union64 var41;
20437   orc_union64 var42;
20438   orc_union32 var43;
20439
20440   ptr0 = (orc_union32 *)ex->arrays[0];
20441   ptr4 = (orc_union32 *)ex->arrays[4];
20442   ptr5 = (orc_union32 *)ex->arrays[5];
20443
20444
20445   for (i = 0; i < n; i++) {
20446     /* 0: loadl */
20447     var35 = ptr4[i];
20448     /* 1: convubw */
20449     var39.x4[0] = (orc_uint8)var35.x4[0];
20450     var39.x4[1] = (orc_uint8)var35.x4[1];
20451     var39.x4[2] = (orc_uint8)var35.x4[2];
20452     var39.x4[3] = (orc_uint8)var35.x4[3];
20453     /* 2: loadl */
20454     var36 = ptr5[i];
20455     /* 3: convubw */
20456     var40.x4[0] = (orc_uint8)var36.x4[0];
20457     var40.x4[1] = (orc_uint8)var36.x4[1];
20458     var40.x4[2] = (orc_uint8)var36.x4[2];
20459     var40.x4[3] = (orc_uint8)var36.x4[3];
20460     /* 4: mullw */
20461     var41.x4[0] = (var39.x4[0] * var40.x4[0]) & 0xffff;
20462     var41.x4[1] = (var39.x4[1] * var40.x4[1]) & 0xffff;
20463     var41.x4[2] = (var39.x4[2] * var40.x4[2]) & 0xffff;
20464     var41.x4[3] = (var39.x4[3] * var40.x4[3]) & 0xffff;
20465     /* 5: div255w */
20466     var42.x4[0] = ((uint16_t)(((orc_uint16)(var41.x4[0]+128)) + (((orc_uint16)(var41.x4[0]+128))>>8)))>>8;
20467     var42.x4[1] = ((uint16_t)(((orc_uint16)(var41.x4[1]+128)) + (((orc_uint16)(var41.x4[1]+128))>>8)))>>8;
20468     var42.x4[2] = ((uint16_t)(((orc_uint16)(var41.x4[2]+128)) + (((orc_uint16)(var41.x4[2]+128))>>8)))>>8;
20469     var42.x4[3] = ((uint16_t)(((orc_uint16)(var41.x4[3]+128)) + (((orc_uint16)(var41.x4[3]+128))>>8)))>>8;
20470     /* 6: convwb */
20471     var43.x4[0] = var42.x4[0];
20472     var43.x4[1] = var42.x4[1];
20473     var43.x4[2] = var42.x4[2];
20474     var43.x4[3] = var42.x4[3];
20475     /* 7: loadl */
20476     var37 = ptr0[i];
20477     /* 8: addusb */
20478     var38.x4[0] = ORC_CLAMP_UB((orc_uint8)var37.x4[0] + (orc_uint8)var43.x4[0]);
20479     var38.x4[1] = ORC_CLAMP_UB((orc_uint8)var37.x4[1] + (orc_uint8)var43.x4[1]);
20480     var38.x4[2] = ORC_CLAMP_UB((orc_uint8)var37.x4[2] + (orc_uint8)var43.x4[2]);
20481     var38.x4[3] = ORC_CLAMP_UB((orc_uint8)var37.x4[3] + (orc_uint8)var43.x4[3]);
20482     /* 9: storel */
20483     ptr0[i] = var38;
20484   }
20485
20486 }
20487
20488 void
20489 orc_code_combine_add_ca (orc_uint32 * d1, const orc_uint32 * s1, const orc_uint32 * s2, int n)
20490 {
20491   OrcExecutor _ex, *ex = &_ex;
20492   static int p_inited = 0;
20493   static OrcProgram *p = 0;
20494   void (*func) (OrcExecutor *);
20495
20496   if (!p_inited) {
20497     orc_once_mutex_lock ();
20498     if (!p_inited) {
20499       OrcCompileResult result;
20500
20501       p = orc_program_new ();
20502       orc_program_set_name (p, "orc_code_combine_add_ca");
20503       orc_program_set_backup_function (p, _backup_orc_code_combine_add_ca);
20504       orc_program_add_destination (p, 4, "d1");
20505       orc_program_add_source (p, 4, "s1");
20506       orc_program_add_source (p, 4, "s2");
20507       orc_program_add_temporary (p, 8, "t1");
20508       orc_program_add_temporary (p, 8, "t2");
20509       orc_program_add_temporary (p, 4, "t3");
20510
20511       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
20512       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, ORC_VAR_D1);
20513       orc_program_append_2 (p, "mullw", 2, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1);
20514       orc_program_append_2 (p, "div255w", 2, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
20515       orc_program_append_2 (p, "convwb", 2, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
20516       orc_program_append_2 (p, "addusb", 2, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_D1);
20517
20518       result = orc_program_compile (p);
20519     }
20520     p_inited = TRUE;
20521     orc_once_mutex_unlock ();
20522   }
20523   ex->program = p;
20524
20525   ex->n = n;
20526   ex->arrays[ORC_VAR_D1] = d1;
20527   ex->arrays[ORC_VAR_S1] = (void *)s1;
20528   ex->arrays[ORC_VAR_S2] = (void *)s2;
20529
20530   func = p->code_exec;
20531   func (ex);
20532 }
20533 #endif
20534
20535
20536 /* orc_code_combine_add_ca_n */
20537 #ifdef DISABLE_ORC
20538 void
20539 orc_code_combine_add_ca_n (orc_uint32 * d1, const orc_uint32 * s1, int n){
20540   int i;
20541   orc_union32 * ORC_RESTRICT ptr0;
20542   const orc_union32 * ORC_RESTRICT ptr4;
20543   orc_union32 var32;
20544   orc_union32 var33;
20545   orc_union32 var34;
20546
20547   ptr0 = (orc_union32 *)d1;
20548   ptr4 = (orc_union32 *)s1;
20549
20550
20551   for (i = 0; i < n; i++) {
20552     /* 0: loadl */
20553     var32 = ptr0[i];
20554     /* 1: loadl */
20555     var33 = ptr4[i];
20556     /* 2: addusb */
20557     var34.x4[0] = ORC_CLAMP_UB((orc_uint8)var32.x4[0] + (orc_uint8)var33.x4[0]);
20558     var34.x4[1] = ORC_CLAMP_UB((orc_uint8)var32.x4[1] + (orc_uint8)var33.x4[1]);
20559     var34.x4[2] = ORC_CLAMP_UB((orc_uint8)var32.x4[2] + (orc_uint8)var33.x4[2]);
20560     var34.x4[3] = ORC_CLAMP_UB((orc_uint8)var32.x4[3] + (orc_uint8)var33.x4[3]);
20561     /* 3: storel */
20562     ptr0[i] = var34;
20563   }
20564
20565 }
20566
20567 #else
20568 static void
20569 _backup_orc_code_combine_add_ca_n (OrcExecutor * ORC_RESTRICT ex)
20570 {
20571   int i;
20572   int n = ex->n;
20573   orc_union32 * ORC_RESTRICT ptr0;
20574   const orc_union32 * ORC_RESTRICT ptr4;
20575   orc_union32 var32;
20576   orc_union32 var33;
20577   orc_union32 var34;
20578
20579   ptr0 = (orc_union32 *)ex->arrays[0];
20580   ptr4 = (orc_union32 *)ex->arrays[4];
20581
20582
20583   for (i = 0; i < n; i++) {
20584     /* 0: loadl */
20585     var32 = ptr0[i];
20586     /* 1: loadl */
20587     var33 = ptr4[i];
20588     /* 2: addusb */
20589     var34.x4[0] = ORC_CLAMP_UB((orc_uint8)var32.x4[0] + (orc_uint8)var33.x4[0]);
20590     var34.x4[1] = ORC_CLAMP_UB((orc_uint8)var32.x4[1] + (orc_uint8)var33.x4[1]);
20591     var34.x4[2] = ORC_CLAMP_UB((orc_uint8)var32.x4[2] + (orc_uint8)var33.x4[2]);
20592     var34.x4[3] = ORC_CLAMP_UB((orc_uint8)var32.x4[3] + (orc_uint8)var33.x4[3]);
20593     /* 3: storel */
20594     ptr0[i] = var34;
20595   }
20596
20597 }
20598
20599 void
20600 orc_code_combine_add_ca_n (orc_uint32 * d1, const orc_uint32 * s1, int n)
20601 {
20602   OrcExecutor _ex, *ex = &_ex;
20603   static int p_inited = 0;
20604   static OrcProgram *p = 0;
20605   void (*func) (OrcExecutor *);
20606
20607   if (!p_inited) {
20608     orc_once_mutex_lock ();
20609     if (!p_inited) {
20610       OrcCompileResult result;
20611
20612       p = orc_program_new ();
20613       orc_program_set_name (p, "orc_code_combine_add_ca_n");
20614       orc_program_set_backup_function (p, _backup_orc_code_combine_add_ca_n);
20615       orc_program_add_destination (p, 4, "d1");
20616       orc_program_add_source (p, 4, "s1");
20617
20618       orc_program_append_2 (p, "addusb", 2, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1);
20619
20620       result = orc_program_compile (p);
20621     }
20622     p_inited = TRUE;
20623     orc_once_mutex_unlock ();
20624   }
20625   ex->program = p;
20626
20627   ex->n = n;
20628   ex->arrays[ORC_VAR_D1] = d1;
20629   ex->arrays[ORC_VAR_S1] = (void *)s1;
20630
20631   func = p->code_exec;
20632   func (ex);
20633 }
20634 #endif
20635
20636
20637 /* orc_code_combine_over_ca */
20638 #ifdef DISABLE_ORC
20639 void
20640 orc_code_combine_over_ca (orc_uint32 * d1, const orc_uint32 * s1, const orc_uint32 * s2, int n){
20641   int i;
20642   orc_union32 * ORC_RESTRICT ptr0;
20643   const orc_union32 * ORC_RESTRICT ptr4;
20644   const orc_union32 * ORC_RESTRICT ptr5;
20645   orc_union32 var40;
20646   orc_union32 var41;
20647   orc_union64 var42;
20648   orc_union32 var43;
20649   orc_union64 var44;
20650   orc_union64 var45;
20651   orc_union64 var46;
20652   orc_union64 var47;
20653   orc_union64 var48;
20654   orc_union32 var49;
20655   orc_union64 var50;
20656   orc_union64 var51;
20657   orc_union32 var52;
20658   orc_union64 var53;
20659   orc_union64 var54;
20660   orc_union64 var55;
20661   orc_union64 var56;
20662   orc_union32 var57;
20663
20664   ptr0 = (orc_union32 *)d1;
20665   ptr4 = (orc_union32 *)s1;
20666   ptr5 = (orc_union32 *)s2;
20667
20668     /* 12: loadpw */
20669     var42.x4[0] = 0x000000ff; /* 255 or 1.25987e-321f */
20670     var42.x4[1] = 0x000000ff; /* 255 or 1.25987e-321f */
20671     var42.x4[2] = 0x000000ff; /* 255 or 1.25987e-321f */
20672     var42.x4[3] = 0x000000ff; /* 255 or 1.25987e-321f */
20673
20674   for (i = 0; i < n; i++) {
20675     /* 0: loadl */
20676     var40 = ptr4[i];
20677     /* 1: convubw */
20678     var44.x4[0] = (orc_uint8)var40.x4[0];
20679     var44.x4[1] = (orc_uint8)var40.x4[1];
20680     var44.x4[2] = (orc_uint8)var40.x4[2];
20681     var44.x4[3] = (orc_uint8)var40.x4[3];
20682     /* 2: loadl */
20683     var41 = ptr5[i];
20684     /* 3: convubw */
20685     var45.x4[0] = (orc_uint8)var41.x4[0];
20686     var45.x4[1] = (orc_uint8)var41.x4[1];
20687     var45.x4[2] = (orc_uint8)var41.x4[2];
20688     var45.x4[3] = (orc_uint8)var41.x4[3];
20689     /* 4: splatw3q */
20690     var46.i = ((((orc_uint64)var44.i)>>48) << 48) | ((((orc_uint64)var44.i)>>48)<<32) | ((((orc_uint64)var44.i)>>48) << 16) | ((((orc_uint64)var44.i)>>48));
20691     /* 5: mullw */
20692     var47.x4[0] = (var44.x4[0] * var45.x4[0]) & 0xffff;
20693     var47.x4[1] = (var44.x4[1] * var45.x4[1]) & 0xffff;
20694     var47.x4[2] = (var44.x4[2] * var45.x4[2]) & 0xffff;
20695     var47.x4[3] = (var44.x4[3] * var45.x4[3]) & 0xffff;
20696     /* 6: div255w */
20697     var48.x4[0] = ((uint16_t)(((orc_uint16)(var47.x4[0]+128)) + (((orc_uint16)(var47.x4[0]+128))>>8)))>>8;
20698     var48.x4[1] = ((uint16_t)(((orc_uint16)(var47.x4[1]+128)) + (((orc_uint16)(var47.x4[1]+128))>>8)))>>8;
20699     var48.x4[2] = ((uint16_t)(((orc_uint16)(var47.x4[2]+128)) + (((orc_uint16)(var47.x4[2]+128))>>8)))>>8;
20700     var48.x4[3] = ((uint16_t)(((orc_uint16)(var47.x4[3]+128)) + (((orc_uint16)(var47.x4[3]+128))>>8)))>>8;
20701     /* 7: convwb */
20702     var49.x4[0] = var48.x4[0];
20703     var49.x4[1] = var48.x4[1];
20704     var49.x4[2] = var48.x4[2];
20705     var49.x4[3] = var48.x4[3];
20706     /* 8: mullw */
20707     var50.x4[0] = (var45.x4[0] * var46.x4[0]) & 0xffff;
20708     var50.x4[1] = (var45.x4[1] * var46.x4[1]) & 0xffff;
20709     var50.x4[2] = (var45.x4[2] * var46.x4[2]) & 0xffff;
20710     var50.x4[3] = (var45.x4[3] * var46.x4[3]) & 0xffff;
20711     /* 9: div255w */
20712     var51.x4[0] = ((uint16_t)(((orc_uint16)(var50.x4[0]+128)) + (((orc_uint16)(var50.x4[0]+128))>>8)))>>8;
20713     var51.x4[1] = ((uint16_t)(((orc_uint16)(var50.x4[1]+128)) + (((orc_uint16)(var50.x4[1]+128))>>8)))>>8;
20714     var51.x4[2] = ((uint16_t)(((orc_uint16)(var50.x4[2]+128)) + (((orc_uint16)(var50.x4[2]+128))>>8)))>>8;
20715     var51.x4[3] = ((uint16_t)(((orc_uint16)(var50.x4[3]+128)) + (((orc_uint16)(var50.x4[3]+128))>>8)))>>8;
20716     /* 10: loadl */
20717     var52 = ptr0[i];
20718     /* 11: convubw */
20719     var53.x4[0] = (orc_uint8)var52.x4[0];
20720     var53.x4[1] = (orc_uint8)var52.x4[1];
20721     var53.x4[2] = (orc_uint8)var52.x4[2];
20722     var53.x4[3] = (orc_uint8)var52.x4[3];
20723     /* 13: xorw */
20724     var54.x4[0] = var51.x4[0] ^ var42.x4[0];
20725     var54.x4[1] = var51.x4[1] ^ var42.x4[1];
20726     var54.x4[2] = var51.x4[2] ^ var42.x4[2];
20727     var54.x4[3] = var51.x4[3] ^ var42.x4[3];
20728     /* 14: mullw */
20729     var55.x4[0] = (var53.x4[0] * var54.x4[0]) & 0xffff;
20730     var55.x4[1] = (var53.x4[1] * var54.x4[1]) & 0xffff;
20731     var55.x4[2] = (var53.x4[2] * var54.x4[2]) & 0xffff;
20732     var55.x4[3] = (var53.x4[3] * var54.x4[3]) & 0xffff;
20733     /* 15: div255w */
20734     var56.x4[0] = ((uint16_t)(((orc_uint16)(var55.x4[0]+128)) + (((orc_uint16)(var55.x4[0]+128))>>8)))>>8;
20735     var56.x4[1] = ((uint16_t)(((orc_uint16)(var55.x4[1]+128)) + (((orc_uint16)(var55.x4[1]+128))>>8)))>>8;
20736     var56.x4[2] = ((uint16_t)(((orc_uint16)(var55.x4[2]+128)) + (((orc_uint16)(var55.x4[2]+128))>>8)))>>8;
20737     var56.x4[3] = ((uint16_t)(((orc_uint16)(var55.x4[3]+128)) + (((orc_uint16)(var55.x4[3]+128))>>8)))>>8;
20738     /* 16: convwb */
20739     var57.x4[0] = var56.x4[0];
20740     var57.x4[1] = var56.x4[1];
20741     var57.x4[2] = var56.x4[2];
20742     var57.x4[3] = var56.x4[3];
20743     /* 17: addusb */
20744     var43.x4[0] = ORC_CLAMP_UB((orc_uint8)var57.x4[0] + (orc_uint8)var49.x4[0]);
20745     var43.x4[1] = ORC_CLAMP_UB((orc_uint8)var57.x4[1] + (orc_uint8)var49.x4[1]);
20746     var43.x4[2] = ORC_CLAMP_UB((orc_uint8)var57.x4[2] + (orc_uint8)var49.x4[2]);
20747     var43.x4[3] = ORC_CLAMP_UB((orc_uint8)var57.x4[3] + (orc_uint8)var49.x4[3]);
20748     /* 18: storel */
20749     ptr0[i] = var43;
20750   }
20751
20752 }
20753
20754 #else
20755 static void
20756 _backup_orc_code_combine_over_ca (OrcExecutor * ORC_RESTRICT ex)
20757 {
20758   int i;
20759   int n = ex->n;
20760   orc_union32 * ORC_RESTRICT ptr0;
20761   const orc_union32 * ORC_RESTRICT ptr4;
20762   const orc_union32 * ORC_RESTRICT ptr5;
20763   orc_union32 var40;
20764   orc_union32 var41;
20765   orc_union64 var42;
20766   orc_union32 var43;
20767   orc_union64 var44;
20768   orc_union64 var45;
20769   orc_union64 var46;
20770   orc_union64 var47;
20771   orc_union64 var48;
20772   orc_union32 var49;
20773   orc_union64 var50;
20774   orc_union64 var51;
20775   orc_union32 var52;
20776   orc_union64 var53;
20777   orc_union64 var54;
20778   orc_union64 var55;
20779   orc_union64 var56;
20780   orc_union32 var57;
20781
20782   ptr0 = (orc_union32 *)ex->arrays[0];
20783   ptr4 = (orc_union32 *)ex->arrays[4];
20784   ptr5 = (orc_union32 *)ex->arrays[5];
20785
20786     /* 12: loadpw */
20787     var42.x4[0] = 0x000000ff; /* 255 or 1.25987e-321f */
20788     var42.x4[1] = 0x000000ff; /* 255 or 1.25987e-321f */
20789     var42.x4[2] = 0x000000ff; /* 255 or 1.25987e-321f */
20790     var42.x4[3] = 0x000000ff; /* 255 or 1.25987e-321f */
20791
20792   for (i = 0; i < n; i++) {
20793     /* 0: loadl */
20794     var40 = ptr4[i];
20795     /* 1: convubw */
20796     var44.x4[0] = (orc_uint8)var40.x4[0];
20797     var44.x4[1] = (orc_uint8)var40.x4[1];
20798     var44.x4[2] = (orc_uint8)var40.x4[2];
20799     var44.x4[3] = (orc_uint8)var40.x4[3];
20800     /* 2: loadl */
20801     var41 = ptr5[i];
20802     /* 3: convubw */
20803     var45.x4[0] = (orc_uint8)var41.x4[0];
20804     var45.x4[1] = (orc_uint8)var41.x4[1];
20805     var45.x4[2] = (orc_uint8)var41.x4[2];
20806     var45.x4[3] = (orc_uint8)var41.x4[3];
20807     /* 4: splatw3q */
20808     var46.i = ((((orc_uint64)var44.i)>>48) << 48) | ((((orc_uint64)var44.i)>>48)<<32) | ((((orc_uint64)var44.i)>>48) << 16) | ((((orc_uint64)var44.i)>>48));
20809     /* 5: mullw */
20810     var47.x4[0] = (var44.x4[0] * var45.x4[0]) & 0xffff;
20811     var47.x4[1] = (var44.x4[1] * var45.x4[1]) & 0xffff;
20812     var47.x4[2] = (var44.x4[2] * var45.x4[2]) & 0xffff;
20813     var47.x4[3] = (var44.x4[3] * var45.x4[3]) & 0xffff;
20814     /* 6: div255w */
20815     var48.x4[0] = ((uint16_t)(((orc_uint16)(var47.x4[0]+128)) + (((orc_uint16)(var47.x4[0]+128))>>8)))>>8;
20816     var48.x4[1] = ((uint16_t)(((orc_uint16)(var47.x4[1]+128)) + (((orc_uint16)(var47.x4[1]+128))>>8)))>>8;
20817     var48.x4[2] = ((uint16_t)(((orc_uint16)(var47.x4[2]+128)) + (((orc_uint16)(var47.x4[2]+128))>>8)))>>8;
20818     var48.x4[3] = ((uint16_t)(((orc_uint16)(var47.x4[3]+128)) + (((orc_uint16)(var47.x4[3]+128))>>8)))>>8;
20819     /* 7: convwb */
20820     var49.x4[0] = var48.x4[0];
20821     var49.x4[1] = var48.x4[1];
20822     var49.x4[2] = var48.x4[2];
20823     var49.x4[3] = var48.x4[3];
20824     /* 8: mullw */
20825     var50.x4[0] = (var45.x4[0] * var46.x4[0]) & 0xffff;
20826     var50.x4[1] = (var45.x4[1] * var46.x4[1]) & 0xffff;
20827     var50.x4[2] = (var45.x4[2] * var46.x4[2]) & 0xffff;
20828     var50.x4[3] = (var45.x4[3] * var46.x4[3]) & 0xffff;
20829     /* 9: div255w */
20830     var51.x4[0] = ((uint16_t)(((orc_uint16)(var50.x4[0]+128)) + (((orc_uint16)(var50.x4[0]+128))>>8)))>>8;
20831     var51.x4[1] = ((uint16_t)(((orc_uint16)(var50.x4[1]+128)) + (((orc_uint16)(var50.x4[1]+128))>>8)))>>8;
20832     var51.x4[2] = ((uint16_t)(((orc_uint16)(var50.x4[2]+128)) + (((orc_uint16)(var50.x4[2]+128))>>8)))>>8;
20833     var51.x4[3] = ((uint16_t)(((orc_uint16)(var50.x4[3]+128)) + (((orc_uint16)(var50.x4[3]+128))>>8)))>>8;
20834     /* 10: loadl */
20835     var52 = ptr0[i];
20836     /* 11: convubw */
20837     var53.x4[0] = (orc_uint8)var52.x4[0];
20838     var53.x4[1] = (orc_uint8)var52.x4[1];
20839     var53.x4[2] = (orc_uint8)var52.x4[2];
20840     var53.x4[3] = (orc_uint8)var52.x4[3];
20841     /* 13: xorw */
20842     var54.x4[0] = var51.x4[0] ^ var42.x4[0];
20843     var54.x4[1] = var51.x4[1] ^ var42.x4[1];
20844     var54.x4[2] = var51.x4[2] ^ var42.x4[2];
20845     var54.x4[3] = var51.x4[3] ^ var42.x4[3];
20846     /* 14: mullw */
20847     var55.x4[0] = (var53.x4[0] * var54.x4[0]) & 0xffff;
20848     var55.x4[1] = (var53.x4[1] * var54.x4[1]) & 0xffff;
20849     var55.x4[2] = (var53.x4[2] * var54.x4[2]) & 0xffff;
20850     var55.x4[3] = (var53.x4[3] * var54.x4[3]) & 0xffff;
20851     /* 15: div255w */
20852     var56.x4[0] = ((uint16_t)(((orc_uint16)(var55.x4[0]+128)) + (((orc_uint16)(var55.x4[0]+128))>>8)))>>8;
20853     var56.x4[1] = ((uint16_t)(((orc_uint16)(var55.x4[1]+128)) + (((orc_uint16)(var55.x4[1]+128))>>8)))>>8;
20854     var56.x4[2] = ((uint16_t)(((orc_uint16)(var55.x4[2]+128)) + (((orc_uint16)(var55.x4[2]+128))>>8)))>>8;
20855     var56.x4[3] = ((uint16_t)(((orc_uint16)(var55.x4[3]+128)) + (((orc_uint16)(var55.x4[3]+128))>>8)))>>8;
20856     /* 16: convwb */
20857     var57.x4[0] = var56.x4[0];
20858     var57.x4[1] = var56.x4[1];
20859     var57.x4[2] = var56.x4[2];
20860     var57.x4[3] = var56.x4[3];
20861     /* 17: addusb */
20862     var43.x4[0] = ORC_CLAMP_UB((orc_uint8)var57.x4[0] + (orc_uint8)var49.x4[0]);
20863     var43.x4[1] = ORC_CLAMP_UB((orc_uint8)var57.x4[1] + (orc_uint8)var49.x4[1]);
20864     var43.x4[2] = ORC_CLAMP_UB((orc_uint8)var57.x4[2] + (orc_uint8)var49.x4[2]);
20865     var43.x4[3] = ORC_CLAMP_UB((orc_uint8)var57.x4[3] + (orc_uint8)var49.x4[3]);
20866     /* 18: storel */
20867     ptr0[i] = var43;
20868   }
20869
20870 }
20871
20872 void
20873 orc_code_combine_over_ca (orc_uint32 * d1, const orc_uint32 * s1, const orc_uint32 * s2, int n)
20874 {
20875   OrcExecutor _ex, *ex = &_ex;
20876   static int p_inited = 0;
20877   static OrcProgram *p = 0;
20878   void (*func) (OrcExecutor *);
20879
20880   if (!p_inited) {
20881     orc_once_mutex_lock ();
20882     if (!p_inited) {
20883       OrcCompileResult result;
20884
20885       p = orc_program_new ();
20886       orc_program_set_name (p, "orc_code_combine_over_ca");
20887       orc_program_set_backup_function (p, _backup_orc_code_combine_over_ca);
20888       orc_program_add_destination (p, 4, "d1");
20889       orc_program_add_source (p, 4, "s1");
20890       orc_program_add_source (p, 4, "s2");
20891       orc_program_add_constant (p, 4, 0x000000ff, "c1");
20892       orc_program_add_temporary (p, 8, "t1");
20893       orc_program_add_temporary (p, 8, "t2");
20894       orc_program_add_temporary (p, 4, "t3");
20895       orc_program_add_temporary (p, 8, "t4");
20896       orc_program_add_temporary (p, 8, "t5");
20897       orc_program_add_temporary (p, 8, "t6");
20898       orc_program_add_temporary (p, 8, "t7");
20899       orc_program_add_temporary (p, 4, "t8");
20900
20901       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T6, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
20902       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T5, ORC_VAR_S2, ORC_VAR_D1, ORC_VAR_D1);
20903       orc_program_append_2 (p, "splatw3q", 0, ORC_VAR_T7, ORC_VAR_T6, ORC_VAR_D1, ORC_VAR_D1);
20904       orc_program_append_2 (p, "mullw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T5, ORC_VAR_D1);
20905       orc_program_append_2 (p, "div255w", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_D1, ORC_VAR_D1);
20906       orc_program_append_2 (p, "convwb", 2, ORC_VAR_T8, ORC_VAR_T6, ORC_VAR_D1, ORC_VAR_D1);
20907       orc_program_append_2 (p, "mullw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T7, ORC_VAR_D1);
20908       orc_program_append_2 (p, "div255w", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_D1, ORC_VAR_D1);
20909       orc_program_append_2 (p, "loadl", 0, ORC_VAR_T3, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_D1);
20910       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1, ORC_VAR_D1);
20911       orc_program_append_2 (p, "xorw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C1, ORC_VAR_D1);
20912       orc_program_append_2 (p, "mullw", 2, ORC_VAR_T1, ORC_VAR_T4, ORC_VAR_T5, ORC_VAR_D1);
20913       orc_program_append_2 (p, "div255w", 2, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
20914       orc_program_append_2 (p, "convwb", 2, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
20915       orc_program_append_2 (p, "addusb", 2, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T8, ORC_VAR_D1);
20916
20917       result = orc_program_compile (p);
20918     }
20919     p_inited = TRUE;
20920     orc_once_mutex_unlock ();
20921   }
20922   ex->program = p;
20923
20924   ex->n = n;
20925   ex->arrays[ORC_VAR_D1] = d1;
20926   ex->arrays[ORC_VAR_S1] = (void *)s1;
20927   ex->arrays[ORC_VAR_S2] = (void *)s2;
20928
20929   func = p->code_exec;
20930   func (ex);
20931 }
20932 #endif
20933
20934
20935 /* orc_code_combine_over_ca_n */
20936 #ifdef DISABLE_ORC
20937 void
20938 orc_code_combine_over_ca_n (orc_uint32 * d1, const orc_uint32 * s1, int n){
20939   int i;
20940   orc_union32 * ORC_RESTRICT ptr0;
20941   const orc_union32 * ORC_RESTRICT ptr4;
20942   orc_union32 var40;
20943   orc_union64 var41;
20944   orc_union32 var42;
20945   orc_union64 var43;
20946   orc_union64 var44;
20947   orc_union32 var45;
20948   orc_union64 var46;
20949   orc_union32 var47;
20950   orc_union64 var48;
20951   orc_union64 var49;
20952   orc_union64 var50;
20953   orc_union64 var51;
20954   orc_union32 var52;
20955
20956   ptr0 = (orc_union32 *)d1;
20957   ptr4 = (orc_union32 *)s1;
20958
20959     /* 7: loadpw */
20960     var41.x4[0] = 0x000000ff; /* 255 or 1.25987e-321f */
20961     var41.x4[1] = 0x000000ff; /* 255 or 1.25987e-321f */
20962     var41.x4[2] = 0x000000ff; /* 255 or 1.25987e-321f */
20963     var41.x4[3] = 0x000000ff; /* 255 or 1.25987e-321f */
20964
20965   for (i = 0; i < n; i++) {
20966     /* 0: loadl */
20967     var40 = ptr4[i];
20968     /* 1: convubw */
20969     var43.x4[0] = (orc_uint8)var40.x4[0];
20970     var43.x4[1] = (orc_uint8)var40.x4[1];
20971     var43.x4[2] = (orc_uint8)var40.x4[2];
20972     var43.x4[3] = (orc_uint8)var40.x4[3];
20973     /* 2: splatw3q */
20974     var44.i = ((((orc_uint64)var43.i)>>48) << 48) | ((((orc_uint64)var43.i)>>48)<<32) | ((((orc_uint64)var43.i)>>48) << 16) | ((((orc_uint64)var43.i)>>48));
20975     /* 3: convwb */
20976     var45.x4[0] = var43.x4[0];
20977     var45.x4[1] = var43.x4[1];
20978     var45.x4[2] = var43.x4[2];
20979     var45.x4[3] = var43.x4[3];
20980     /* 4: copyw */
20981     var46.x4[0] = var44.x4[0];
20982     var46.x4[1] = var44.x4[1];
20983     var46.x4[2] = var44.x4[2];
20984     var46.x4[3] = var44.x4[3];
20985     /* 5: loadl */
20986     var47 = ptr0[i];
20987     /* 6: convubw */
20988     var48.x4[0] = (orc_uint8)var47.x4[0];
20989     var48.x4[1] = (orc_uint8)var47.x4[1];
20990     var48.x4[2] = (orc_uint8)var47.x4[2];
20991     var48.x4[3] = (orc_uint8)var47.x4[3];
20992     /* 8: xorw */
20993     var49.x4[0] = var46.x4[0] ^ var41.x4[0];
20994     var49.x4[1] = var46.x4[1] ^ var41.x4[1];
20995     var49.x4[2] = var46.x4[2] ^ var41.x4[2];
20996     var49.x4[3] = var46.x4[3] ^ var41.x4[3];
20997     /* 9: mullw */
20998     var50.x4[0] = (var48.x4[0] * var49.x4[0]) & 0xffff;
20999     var50.x4[1] = (var48.x4[1] * var49.x4[1]) & 0xffff;
21000     var50.x4[2] = (var48.x4[2] * var49.x4[2]) & 0xffff;
21001     var50.x4[3] = (var48.x4[3] * var49.x4[3]) & 0xffff;
21002     /* 10: div255w */
21003     var51.x4[0] = ((uint16_t)(((orc_uint16)(var50.x4[0]+128)) + (((orc_uint16)(var50.x4[0]+128))>>8)))>>8;
21004     var51.x4[1] = ((uint16_t)(((orc_uint16)(var50.x4[1]+128)) + (((orc_uint16)(var50.x4[1]+128))>>8)))>>8;
21005     var51.x4[2] = ((uint16_t)(((orc_uint16)(var50.x4[2]+128)) + (((orc_uint16)(var50.x4[2]+128))>>8)))>>8;
21006     var51.x4[3] = ((uint16_t)(((orc_uint16)(var50.x4[3]+128)) + (((orc_uint16)(var50.x4[3]+128))>>8)))>>8;
21007     /* 11: convwb */
21008     var52.x4[0] = var51.x4[0];
21009     var52.x4[1] = var51.x4[1];
21010     var52.x4[2] = var51.x4[2];
21011     var52.x4[3] = var51.x4[3];
21012     /* 12: addusb */
21013     var42.x4[0] = ORC_CLAMP_UB((orc_uint8)var52.x4[0] + (orc_uint8)var45.x4[0]);
21014     var42.x4[1] = ORC_CLAMP_UB((orc_uint8)var52.x4[1] + (orc_uint8)var45.x4[1]);
21015     var42.x4[2] = ORC_CLAMP_UB((orc_uint8)var52.x4[2] + (orc_uint8)var45.x4[2]);
21016     var42.x4[3] = ORC_CLAMP_UB((orc_uint8)var52.x4[3] + (orc_uint8)var45.x4[3]);
21017     /* 13: storel */
21018     ptr0[i] = var42;
21019   }
21020
21021 }
21022
21023 #else
21024 static void
21025 _backup_orc_code_combine_over_ca_n (OrcExecutor * ORC_RESTRICT ex)
21026 {
21027   int i;
21028   int n = ex->n;
21029   orc_union32 * ORC_RESTRICT ptr0;
21030   const orc_union32 * ORC_RESTRICT ptr4;
21031   orc_union32 var40;
21032   orc_union64 var41;
21033   orc_union32 var42;
21034   orc_union64 var43;
21035   orc_union64 var44;
21036   orc_union32 var45;
21037   orc_union64 var46;
21038   orc_union32 var47;
21039   orc_union64 var48;
21040   orc_union64 var49;
21041   orc_union64 var50;
21042   orc_union64 var51;
21043   orc_union32 var52;
21044
21045   ptr0 = (orc_union32 *)ex->arrays[0];
21046   ptr4 = (orc_union32 *)ex->arrays[4];
21047
21048     /* 7: loadpw */
21049     var41.x4[0] = 0x000000ff; /* 255 or 1.25987e-321f */
21050     var41.x4[1] = 0x000000ff; /* 255 or 1.25987e-321f */
21051     var41.x4[2] = 0x000000ff; /* 255 or 1.25987e-321f */
21052     var41.x4[3] = 0x000000ff; /* 255 or 1.25987e-321f */
21053
21054   for (i = 0; i < n; i++) {
21055     /* 0: loadl */
21056     var40 = ptr4[i];
21057     /* 1: convubw */
21058     var43.x4[0] = (orc_uint8)var40.x4[0];
21059     var43.x4[1] = (orc_uint8)var40.x4[1];
21060     var43.x4[2] = (orc_uint8)var40.x4[2];
21061     var43.x4[3] = (orc_uint8)var40.x4[3];
21062     /* 2: splatw3q */
21063     var44.i = ((((orc_uint64)var43.i)>>48) << 48) | ((((orc_uint64)var43.i)>>48)<<32) | ((((orc_uint64)var43.i)>>48) << 16) | ((((orc_uint64)var43.i)>>48));
21064     /* 3: convwb */
21065     var45.x4[0] = var43.x4[0];
21066     var45.x4[1] = var43.x4[1];
21067     var45.x4[2] = var43.x4[2];
21068     var45.x4[3] = var43.x4[3];
21069     /* 4: copyw */
21070     var46.x4[0] = var44.x4[0];
21071     var46.x4[1] = var44.x4[1];
21072     var46.x4[2] = var44.x4[2];
21073     var46.x4[3] = var44.x4[3];
21074     /* 5: loadl */
21075     var47 = ptr0[i];
21076     /* 6: convubw */
21077     var48.x4[0] = (orc_uint8)var47.x4[0];
21078     var48.x4[1] = (orc_uint8)var47.x4[1];
21079     var48.x4[2] = (orc_uint8)var47.x4[2];
21080     var48.x4[3] = (orc_uint8)var47.x4[3];
21081     /* 8: xorw */
21082     var49.x4[0] = var46.x4[0] ^ var41.x4[0];
21083     var49.x4[1] = var46.x4[1] ^ var41.x4[1];
21084     var49.x4[2] = var46.x4[2] ^ var41.x4[2];
21085     var49.x4[3] = var46.x4[3] ^ var41.x4[3];
21086     /* 9: mullw */
21087     var50.x4[0] = (var48.x4[0] * var49.x4[0]) & 0xffff;
21088     var50.x4[1] = (var48.x4[1] * var49.x4[1]) & 0xffff;
21089     var50.x4[2] = (var48.x4[2] * var49.x4[2]) & 0xffff;
21090     var50.x4[3] = (var48.x4[3] * var49.x4[3]) & 0xffff;
21091     /* 10: div255w */
21092     var51.x4[0] = ((uint16_t)(((orc_uint16)(var50.x4[0]+128)) + (((orc_uint16)(var50.x4[0]+128))>>8)))>>8;
21093     var51.x4[1] = ((uint16_t)(((orc_uint16)(var50.x4[1]+128)) + (((orc_uint16)(var50.x4[1]+128))>>8)))>>8;
21094     var51.x4[2] = ((uint16_t)(((orc_uint16)(var50.x4[2]+128)) + (((orc_uint16)(var50.x4[2]+128))>>8)))>>8;
21095     var51.x4[3] = ((uint16_t)(((orc_uint16)(var50.x4[3]+128)) + (((orc_uint16)(var50.x4[3]+128))>>8)))>>8;
21096     /* 11: convwb */
21097     var52.x4[0] = var51.x4[0];
21098     var52.x4[1] = var51.x4[1];
21099     var52.x4[2] = var51.x4[2];
21100     var52.x4[3] = var51.x4[3];
21101     /* 12: addusb */
21102     var42.x4[0] = ORC_CLAMP_UB((orc_uint8)var52.x4[0] + (orc_uint8)var45.x4[0]);
21103     var42.x4[1] = ORC_CLAMP_UB((orc_uint8)var52.x4[1] + (orc_uint8)var45.x4[1]);
21104     var42.x4[2] = ORC_CLAMP_UB((orc_uint8)var52.x4[2] + (orc_uint8)var45.x4[2]);
21105     var42.x4[3] = ORC_CLAMP_UB((orc_uint8)var52.x4[3] + (orc_uint8)var45.x4[3]);
21106     /* 13: storel */
21107     ptr0[i] = var42;
21108   }
21109
21110 }
21111
21112 void
21113 orc_code_combine_over_ca_n (orc_uint32 * d1, const orc_uint32 * s1, int n)
21114 {
21115   OrcExecutor _ex, *ex = &_ex;
21116   static int p_inited = 0;
21117   static OrcProgram *p = 0;
21118   void (*func) (OrcExecutor *);
21119
21120   if (!p_inited) {
21121     orc_once_mutex_lock ();
21122     if (!p_inited) {
21123       OrcCompileResult result;
21124
21125       p = orc_program_new ();
21126       orc_program_set_name (p, "orc_code_combine_over_ca_n");
21127       orc_program_set_backup_function (p, _backup_orc_code_combine_over_ca_n);
21128       orc_program_add_destination (p, 4, "d1");
21129       orc_program_add_source (p, 4, "s1");
21130       orc_program_add_constant (p, 4, 0x000000ff, "c1");
21131       orc_program_add_temporary (p, 8, "t1");
21132       orc_program_add_temporary (p, 8, "t2");
21133       orc_program_add_temporary (p, 4, "t3");
21134       orc_program_add_temporary (p, 8, "t4");
21135       orc_program_add_temporary (p, 8, "t5");
21136       orc_program_add_temporary (p, 8, "t6");
21137       orc_program_add_temporary (p, 8, "t7");
21138       orc_program_add_temporary (p, 4, "t8");
21139
21140       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T6, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
21141       orc_program_append_2 (p, "splatw3q", 0, ORC_VAR_T7, ORC_VAR_T6, ORC_VAR_D1, ORC_VAR_D1);
21142       orc_program_append_2 (p, "convwb", 2, ORC_VAR_T8, ORC_VAR_T6, ORC_VAR_D1, ORC_VAR_D1);
21143       orc_program_append_2 (p, "copyw", 2, ORC_VAR_T5, ORC_VAR_T7, ORC_VAR_D1, ORC_VAR_D1);
21144       orc_program_append_2 (p, "loadl", 0, ORC_VAR_T3, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_D1);
21145       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1, ORC_VAR_D1);
21146       orc_program_append_2 (p, "xorw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C1, ORC_VAR_D1);
21147       orc_program_append_2 (p, "mullw", 2, ORC_VAR_T1, ORC_VAR_T4, ORC_VAR_T5, ORC_VAR_D1);
21148       orc_program_append_2 (p, "div255w", 2, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
21149       orc_program_append_2 (p, "convwb", 2, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
21150       orc_program_append_2 (p, "addusb", 2, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T8, ORC_VAR_D1);
21151
21152       result = orc_program_compile (p);
21153     }
21154     p_inited = TRUE;
21155     orc_once_mutex_unlock ();
21156   }
21157   ex->program = p;
21158
21159   ex->n = n;
21160   ex->arrays[ORC_VAR_D1] = d1;
21161   ex->arrays[ORC_VAR_S1] = (void *)s1;
21162
21163   func = p->code_exec;
21164   func (ex);
21165 }
21166 #endif
21167
21168
21169 /* orc_composite_over_8888_8_8888_line */
21170 #ifdef DISABLE_ORC
21171 void
21172 orc_composite_over_8888_8_8888_line (orc_uint32 * d1, const orc_uint32 * s1, const orc_uint8 * s2, int n){
21173   int i;
21174   orc_union32 * ORC_RESTRICT ptr0;
21175   const orc_union32 * ORC_RESTRICT ptr4;
21176   const orc_int8 * ORC_RESTRICT ptr5;
21177   orc_union32 var38;
21178   orc_int8 var39;
21179   orc_union64 var40;
21180   orc_union32 var41;
21181   orc_union64 var42;
21182   orc_union32 var43;
21183   orc_union64 var44;
21184   orc_union64 var45;
21185   orc_union64 var46;
21186   orc_union32 var47;
21187   orc_union32 var48;
21188   orc_union64 var49;
21189   orc_union64 var50;
21190   orc_union64 var51;
21191   orc_union64 var52;
21192   orc_union64 var53;
21193   orc_union32 var54;
21194
21195   ptr0 = (orc_union32 *)d1;
21196   ptr4 = (orc_union32 *)s1;
21197   ptr5 = (orc_int8 *)s2;
21198
21199     /* 10: loadpw */
21200     var40.x4[0] = 0x000000ff; /* 255 or 1.25987e-321f */
21201     var40.x4[1] = 0x000000ff; /* 255 or 1.25987e-321f */
21202     var40.x4[2] = 0x000000ff; /* 255 or 1.25987e-321f */
21203     var40.x4[3] = 0x000000ff; /* 255 or 1.25987e-321f */
21204
21205   for (i = 0; i < n; i++) {
21206     /* 0: loadl */
21207     var38 = ptr4[i];
21208     /* 1: convubw */
21209     var42.x4[0] = (orc_uint8)var38.x4[0];
21210     var42.x4[1] = (orc_uint8)var38.x4[1];
21211     var42.x4[2] = (orc_uint8)var38.x4[2];
21212     var42.x4[3] = (orc_uint8)var38.x4[3];
21213     /* 2: loadb */
21214     var39 = ptr5[i];
21215     /* 3: splatbl */
21216     var43.i = ((var39&0xff) << 24) | ((var39&0xff)<<16) | ((var39&0xff) << 8) | (var39&0xff);
21217     /* 4: convubw */
21218     var44.x4[0] = (orc_uint8)var43.x4[0];
21219     var44.x4[1] = (orc_uint8)var43.x4[1];
21220     var44.x4[2] = (orc_uint8)var43.x4[2];
21221     var44.x4[3] = (orc_uint8)var43.x4[3];
21222     /* 5: mullw */
21223     var45.x4[0] = (var42.x4[0] * var44.x4[0]) & 0xffff;
21224     var45.x4[1] = (var42.x4[1] * var44.x4[1]) & 0xffff;
21225     var45.x4[2] = (var42.x4[2] * var44.x4[2]) & 0xffff;
21226     var45.x4[3] = (var42.x4[3] * var44.x4[3]) & 0xffff;
21227     /* 6: div255w */
21228     var46.x4[0] = ((uint16_t)(((orc_uint16)(var45.x4[0]+128)) + (((orc_uint16)(var45.x4[0]+128))>>8)))>>8;
21229     var46.x4[1] = ((uint16_t)(((orc_uint16)(var45.x4[1]+128)) + (((orc_uint16)(var45.x4[1]+128))>>8)))>>8;
21230     var46.x4[2] = ((uint16_t)(((orc_uint16)(var45.x4[2]+128)) + (((orc_uint16)(var45.x4[2]+128))>>8)))>>8;
21231     var46.x4[3] = ((uint16_t)(((orc_uint16)(var45.x4[3]+128)) + (((orc_uint16)(var45.x4[3]+128))>>8)))>>8;
21232     /* 7: convwb */
21233     var47.x4[0] = var46.x4[0];
21234     var47.x4[1] = var46.x4[1];
21235     var47.x4[2] = var46.x4[2];
21236     var47.x4[3] = var46.x4[3];
21237     /* 8: loadl */
21238     var48 = ptr0[i];
21239     /* 9: convubw */
21240     var49.x4[0] = (orc_uint8)var48.x4[0];
21241     var49.x4[1] = (orc_uint8)var48.x4[1];
21242     var49.x4[2] = (orc_uint8)var48.x4[2];
21243     var49.x4[3] = (orc_uint8)var48.x4[3];
21244     /* 11: xorw */
21245     var50.x4[0] = var46.x4[0] ^ var40.x4[0];
21246     var50.x4[1] = var46.x4[1] ^ var40.x4[1];
21247     var50.x4[2] = var46.x4[2] ^ var40.x4[2];
21248     var50.x4[3] = var46.x4[3] ^ var40.x4[3];
21249     /* 12: splatw3q */
21250     var51.i = ((((orc_uint64)var50.i)>>48) << 48) | ((((orc_uint64)var50.i)>>48)<<32) | ((((orc_uint64)var50.i)>>48) << 16) | ((((orc_uint64)var50.i)>>48));
21251     /* 13: mullw */
21252     var52.x4[0] = (var49.x4[0] * var51.x4[0]) & 0xffff;
21253     var52.x4[1] = (var49.x4[1] * var51.x4[1]) & 0xffff;
21254     var52.x4[2] = (var49.x4[2] * var51.x4[2]) & 0xffff;
21255     var52.x4[3] = (var49.x4[3] * var51.x4[3]) & 0xffff;
21256     /* 14: div255w */
21257     var53.x4[0] = ((uint16_t)(((orc_uint16)(var52.x4[0]+128)) + (((orc_uint16)(var52.x4[0]+128))>>8)))>>8;
21258     var53.x4[1] = ((uint16_t)(((orc_uint16)(var52.x4[1]+128)) + (((orc_uint16)(var52.x4[1]+128))>>8)))>>8;
21259     var53.x4[2] = ((uint16_t)(((orc_uint16)(var52.x4[2]+128)) + (((orc_uint16)(var52.x4[2]+128))>>8)))>>8;
21260     var53.x4[3] = ((uint16_t)(((orc_uint16)(var52.x4[3]+128)) + (((orc_uint16)(var52.x4[3]+128))>>8)))>>8;
21261     /* 15: convwb */
21262     var54.x4[0] = var53.x4[0];
21263     var54.x4[1] = var53.x4[1];
21264     var54.x4[2] = var53.x4[2];
21265     var54.x4[3] = var53.x4[3];
21266     /* 16: addusb */
21267     var41.x4[0] = ORC_CLAMP_UB((orc_uint8)var54.x4[0] + (orc_uint8)var47.x4[0]);
21268     var41.x4[1] = ORC_CLAMP_UB((orc_uint8)var54.x4[1] + (orc_uint8)var47.x4[1]);
21269     var41.x4[2] = ORC_CLAMP_UB((orc_uint8)var54.x4[2] + (orc_uint8)var47.x4[2]);
21270     var41.x4[3] = ORC_CLAMP_UB((orc_uint8)var54.x4[3] + (orc_uint8)var47.x4[3]);
21271     /* 17: storel */
21272     ptr0[i] = var41;
21273   }
21274
21275 }
21276
21277 #else
21278 static void
21279 _backup_orc_composite_over_8888_8_8888_line (OrcExecutor * ORC_RESTRICT ex)
21280 {
21281   int i;
21282   int n = ex->n;
21283   orc_union32 * ORC_RESTRICT ptr0;
21284   const orc_union32 * ORC_RESTRICT ptr4;
21285   const orc_int8 * ORC_RESTRICT ptr5;
21286   orc_union32 var38;
21287   orc_int8 var39;
21288   orc_union64 var40;
21289   orc_union32 var41;
21290   orc_union64 var42;
21291   orc_union32 var43;
21292   orc_union64 var44;
21293   orc_union64 var45;
21294   orc_union64 var46;
21295   orc_union32 var47;
21296   orc_union32 var48;
21297   orc_union64 var49;
21298   orc_union64 var50;
21299   orc_union64 var51;
21300   orc_union64 var52;
21301   orc_union64 var53;
21302   orc_union32 var54;
21303
21304   ptr0 = (orc_union32 *)ex->arrays[0];
21305   ptr4 = (orc_union32 *)ex->arrays[4];
21306   ptr5 = (orc_int8 *)ex->arrays[5];
21307
21308     /* 10: loadpw */
21309     var40.x4[0] = 0x000000ff; /* 255 or 1.25987e-321f */
21310     var40.x4[1] = 0x000000ff; /* 255 or 1.25987e-321f */
21311     var40.x4[2] = 0x000000ff; /* 255 or 1.25987e-321f */
21312     var40.x4[3] = 0x000000ff; /* 255 or 1.25987e-321f */
21313
21314   for (i = 0; i < n; i++) {
21315     /* 0: loadl */
21316     var38 = ptr4[i];
21317     /* 1: convubw */
21318     var42.x4[0] = (orc_uint8)var38.x4[0];
21319     var42.x4[1] = (orc_uint8)var38.x4[1];
21320     var42.x4[2] = (orc_uint8)var38.x4[2];
21321     var42.x4[3] = (orc_uint8)var38.x4[3];
21322     /* 2: loadb */
21323     var39 = ptr5[i];
21324     /* 3: splatbl */
21325     var43.i = ((var39&0xff) << 24) | ((var39&0xff)<<16) | ((var39&0xff) << 8) | (var39&0xff);
21326     /* 4: convubw */
21327     var44.x4[0] = (orc_uint8)var43.x4[0];
21328     var44.x4[1] = (orc_uint8)var43.x4[1];
21329     var44.x4[2] = (orc_uint8)var43.x4[2];
21330     var44.x4[3] = (orc_uint8)var43.x4[3];
21331     /* 5: mullw */
21332     var45.x4[0] = (var42.x4[0] * var44.x4[0]) & 0xffff;
21333     var45.x4[1] = (var42.x4[1] * var44.x4[1]) & 0xffff;
21334     var45.x4[2] = (var42.x4[2] * var44.x4[2]) & 0xffff;
21335     var45.x4[3] = (var42.x4[3] * var44.x4[3]) & 0xffff;
21336     /* 6: div255w */
21337     var46.x4[0] = ((uint16_t)(((orc_uint16)(var45.x4[0]+128)) + (((orc_uint16)(var45.x4[0]+128))>>8)))>>8;
21338     var46.x4[1] = ((uint16_t)(((orc_uint16)(var45.x4[1]+128)) + (((orc_uint16)(var45.x4[1]+128))>>8)))>>8;
21339     var46.x4[2] = ((uint16_t)(((orc_uint16)(var45.x4[2]+128)) + (((orc_uint16)(var45.x4[2]+128))>>8)))>>8;
21340     var46.x4[3] = ((uint16_t)(((orc_uint16)(var45.x4[3]+128)) + (((orc_uint16)(var45.x4[3]+128))>>8)))>>8;
21341     /* 7: convwb */
21342     var47.x4[0] = var46.x4[0];
21343     var47.x4[1] = var46.x4[1];
21344     var47.x4[2] = var46.x4[2];
21345     var47.x4[3] = var46.x4[3];
21346     /* 8: loadl */
21347     var48 = ptr0[i];
21348     /* 9: convubw */
21349     var49.x4[0] = (orc_uint8)var48.x4[0];
21350     var49.x4[1] = (orc_uint8)var48.x4[1];
21351     var49.x4[2] = (orc_uint8)var48.x4[2];
21352     var49.x4[3] = (orc_uint8)var48.x4[3];
21353     /* 11: xorw */
21354     var50.x4[0] = var46.x4[0] ^ var40.x4[0];
21355     var50.x4[1] = var46.x4[1] ^ var40.x4[1];
21356     var50.x4[2] = var46.x4[2] ^ var40.x4[2];
21357     var50.x4[3] = var46.x4[3] ^ var40.x4[3];
21358     /* 12: splatw3q */
21359     var51.i = ((((orc_uint64)var50.i)>>48) << 48) | ((((orc_uint64)var50.i)>>48)<<32) | ((((orc_uint64)var50.i)>>48) << 16) | ((((orc_uint64)var50.i)>>48));
21360     /* 13: mullw */
21361     var52.x4[0] = (var49.x4[0] * var51.x4[0]) & 0xffff;
21362     var52.x4[1] = (var49.x4[1] * var51.x4[1]) & 0xffff;
21363     var52.x4[2] = (var49.x4[2] * var51.x4[2]) & 0xffff;
21364     var52.x4[3] = (var49.x4[3] * var51.x4[3]) & 0xffff;
21365     /* 14: div255w */
21366     var53.x4[0] = ((uint16_t)(((orc_uint16)(var52.x4[0]+128)) + (((orc_uint16)(var52.x4[0]+128))>>8)))>>8;
21367     var53.x4[1] = ((uint16_t)(((orc_uint16)(var52.x4[1]+128)) + (((orc_uint16)(var52.x4[1]+128))>>8)))>>8;
21368     var53.x4[2] = ((uint16_t)(((orc_uint16)(var52.x4[2]+128)) + (((orc_uint16)(var52.x4[2]+128))>>8)))>>8;
21369     var53.x4[3] = ((uint16_t)(((orc_uint16)(var52.x4[3]+128)) + (((orc_uint16)(var52.x4[3]+128))>>8)))>>8;
21370     /* 15: convwb */
21371     var54.x4[0] = var53.x4[0];
21372     var54.x4[1] = var53.x4[1];
21373     var54.x4[2] = var53.x4[2];
21374     var54.x4[3] = var53.x4[3];
21375     /* 16: addusb */
21376     var41.x4[0] = ORC_CLAMP_UB((orc_uint8)var54.x4[0] + (orc_uint8)var47.x4[0]);
21377     var41.x4[1] = ORC_CLAMP_UB((orc_uint8)var54.x4[1] + (orc_uint8)var47.x4[1]);
21378     var41.x4[2] = ORC_CLAMP_UB((orc_uint8)var54.x4[2] + (orc_uint8)var47.x4[2]);
21379     var41.x4[3] = ORC_CLAMP_UB((orc_uint8)var54.x4[3] + (orc_uint8)var47.x4[3]);
21380     /* 17: storel */
21381     ptr0[i] = var41;
21382   }
21383
21384 }
21385
21386 void
21387 orc_composite_over_8888_8_8888_line (orc_uint32 * d1, const orc_uint32 * s1, const orc_uint8 * s2, int n)
21388 {
21389   OrcExecutor _ex, *ex = &_ex;
21390   static int p_inited = 0;
21391   static OrcProgram *p = 0;
21392   void (*func) (OrcExecutor *);
21393
21394   if (!p_inited) {
21395     orc_once_mutex_lock ();
21396     if (!p_inited) {
21397       OrcCompileResult result;
21398
21399       p = orc_program_new ();
21400       orc_program_set_name (p, "orc_composite_over_8888_8_8888_line");
21401       orc_program_set_backup_function (p, _backup_orc_composite_over_8888_8_8888_line);
21402       orc_program_add_destination (p, 4, "d1");
21403       orc_program_add_source (p, 4, "s1");
21404       orc_program_add_source (p, 1, "s2");
21405       orc_program_add_constant (p, 4, 0x000000ff, "c1");
21406       orc_program_add_temporary (p, 8, "t1");
21407       orc_program_add_temporary (p, 8, "t2");
21408       orc_program_add_temporary (p, 4, "t3");
21409       orc_program_add_temporary (p, 4, "t4");
21410       orc_program_add_temporary (p, 4, "t5");
21411       orc_program_add_temporary (p, 8, "t6");
21412
21413       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
21414       orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T5, ORC_VAR_S2, ORC_VAR_D1, ORC_VAR_D1);
21415       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T2, ORC_VAR_T5, ORC_VAR_D1, ORC_VAR_D1);
21416       orc_program_append_2 (p, "mullw", 2, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1);
21417       orc_program_append_2 (p, "div255w", 2, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
21418       orc_program_append_2 (p, "convwb", 2, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
21419       orc_program_append_2 (p, "loadl", 0, ORC_VAR_T4, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_D1);
21420       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T6, ORC_VAR_T4, ORC_VAR_D1, ORC_VAR_D1);
21421       orc_program_append_2 (p, "xorw", 2, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
21422       orc_program_append_2 (p, "splatw3q", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
21423       orc_program_append_2 (p, "mullw", 2, ORC_VAR_T1, ORC_VAR_T6, ORC_VAR_T2, ORC_VAR_D1);
21424       orc_program_append_2 (p, "div255w", 2, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
21425       orc_program_append_2 (p, "convwb", 2, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
21426       orc_program_append_2 (p, "addusb", 2, ORC_VAR_D1, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1);
21427
21428       result = orc_program_compile (p);
21429     }
21430     p_inited = TRUE;
21431     orc_once_mutex_unlock ();
21432   }
21433   ex->program = p;
21434
21435   ex->n = n;
21436   ex->arrays[ORC_VAR_D1] = d1;
21437   ex->arrays[ORC_VAR_S1] = (void *)s1;
21438   ex->arrays[ORC_VAR_S2] = (void *)s2;
21439
21440   func = p->code_exec;
21441   func (ex);
21442 }
21443 #endif
21444
21445
21446 /* orc_composite_over_n_8888_8888_ca_2d */
21447 #ifdef DISABLE_ORC
21448 void
21449 orc_composite_over_n_8888_8888_ca_2d (orc_uint32 * d1, const orc_uint32 * s1, int p1, int n){
21450   int i;
21451   orc_union32 * ORC_RESTRICT ptr0;
21452   const orc_union32 * ORC_RESTRICT ptr4;
21453   orc_union32 var40;
21454   orc_union32 var41;
21455   orc_union64 var42;
21456   orc_union32 var43;
21457   orc_union64 var44;
21458   orc_union64 var45;
21459   orc_union64 var46;
21460   orc_union64 var47;
21461   orc_union64 var48;
21462   orc_union32 var49;
21463   orc_union64 var50;
21464   orc_union64 var51;
21465   orc_union32 var52;
21466   orc_union64 var53;
21467   orc_union64 var54;
21468   orc_union64 var55;
21469   orc_union64 var56;
21470   orc_union32 var57;
21471
21472   ptr0 = (orc_union32 *)d1;
21473   ptr4 = (orc_union32 *)s1;
21474
21475     /* 0: loadpb */
21476     var40.x4[0] = p1;
21477     var40.x4[1] = p1;
21478     var40.x4[2] = p1;
21479     var40.x4[3] = p1;
21480     /* 12: loadpw */
21481     var42.x4[0] = 0x000000ff; /* 255 or 1.25987e-321f */
21482     var42.x4[1] = 0x000000ff; /* 255 or 1.25987e-321f */
21483     var42.x4[2] = 0x000000ff; /* 255 or 1.25987e-321f */
21484     var42.x4[3] = 0x000000ff; /* 255 or 1.25987e-321f */
21485
21486   for (i = 0; i < n; i++) {
21487     /* 1: convubw */
21488     var44.x4[0] = (orc_uint8)var40.x4[0];
21489     var44.x4[1] = (orc_uint8)var40.x4[1];
21490     var44.x4[2] = (orc_uint8)var40.x4[2];
21491     var44.x4[3] = (orc_uint8)var40.x4[3];
21492     /* 2: loadl */
21493     var41 = ptr4[i];
21494     /* 3: convubw */
21495     var45.x4[0] = (orc_uint8)var41.x4[0];
21496     var45.x4[1] = (orc_uint8)var41.x4[1];
21497     var45.x4[2] = (orc_uint8)var41.x4[2];
21498     var45.x4[3] = (orc_uint8)var41.x4[3];
21499     /* 4: splatw3q */
21500     var46.i = ((((orc_uint64)var44.i)>>48) << 48) | ((((orc_uint64)var44.i)>>48)<<32) | ((((orc_uint64)var44.i)>>48) << 16) | ((((orc_uint64)var44.i)>>48));
21501     /* 5: mullw */
21502     var47.x4[0] = (var44.x4[0] * var45.x4[0]) & 0xffff;
21503     var47.x4[1] = (var44.x4[1] * var45.x4[1]) & 0xffff;
21504     var47.x4[2] = (var44.x4[2] * var45.x4[2]) & 0xffff;
21505     var47.x4[3] = (var44.x4[3] * var45.x4[3]) & 0xffff;
21506     /* 6: div255w */
21507     var48.x4[0] = ((uint16_t)(((orc_uint16)(var47.x4[0]+128)) + (((orc_uint16)(var47.x4[0]+128))>>8)))>>8;
21508     var48.x4[1] = ((uint16_t)(((orc_uint16)(var47.x4[1]+128)) + (((orc_uint16)(var47.x4[1]+128))>>8)))>>8;
21509     var48.x4[2] = ((uint16_t)(((orc_uint16)(var47.x4[2]+128)) + (((orc_uint16)(var47.x4[2]+128))>>8)))>>8;
21510     var48.x4[3] = ((uint16_t)(((orc_uint16)(var47.x4[3]+128)) + (((orc_uint16)(var47.x4[3]+128))>>8)))>>8;
21511     /* 7: convwb */
21512     var49.x4[0] = var48.x4[0];
21513     var49.x4[1] = var48.x4[1];
21514     var49.x4[2] = var48.x4[2];
21515     var49.x4[3] = var48.x4[3];
21516     /* 8: mullw */
21517     var50.x4[0] = (var45.x4[0] * var46.x4[0]) & 0xffff;
21518     var50.x4[1] = (var45.x4[1] * var46.x4[1]) & 0xffff;
21519     var50.x4[2] = (var45.x4[2] * var46.x4[2]) & 0xffff;
21520     var50.x4[3] = (var45.x4[3] * var46.x4[3]) & 0xffff;
21521     /* 9: div255w */
21522     var51.x4[0] = ((uint16_t)(((orc_uint16)(var50.x4[0]+128)) + (((orc_uint16)(var50.x4[0]+128))>>8)))>>8;
21523     var51.x4[1] = ((uint16_t)(((orc_uint16)(var50.x4[1]+128)) + (((orc_uint16)(var50.x4[1]+128))>>8)))>>8;
21524     var51.x4[2] = ((uint16_t)(((orc_uint16)(var50.x4[2]+128)) + (((orc_uint16)(var50.x4[2]+128))>>8)))>>8;
21525     var51.x4[3] = ((uint16_t)(((orc_uint16)(var50.x4[3]+128)) + (((orc_uint16)(var50.x4[3]+128))>>8)))>>8;
21526     /* 10: loadl */
21527     var52 = ptr0[i];
21528     /* 11: convubw */
21529     var53.x4[0] = (orc_uint8)var52.x4[0];
21530     var53.x4[1] = (orc_uint8)var52.x4[1];
21531     var53.x4[2] = (orc_uint8)var52.x4[2];
21532     var53.x4[3] = (orc_uint8)var52.x4[3];
21533     /* 13: xorw */
21534     var54.x4[0] = var51.x4[0] ^ var42.x4[0];
21535     var54.x4[1] = var51.x4[1] ^ var42.x4[1];
21536     var54.x4[2] = var51.x4[2] ^ var42.x4[2];
21537     var54.x4[3] = var51.x4[3] ^ var42.x4[3];
21538     /* 14: mullw */
21539     var55.x4[0] = (var53.x4[0] * var54.x4[0]) & 0xffff;
21540     var55.x4[1] = (var53.x4[1] * var54.x4[1]) & 0xffff;
21541     var55.x4[2] = (var53.x4[2] * var54.x4[2]) & 0xffff;
21542     var55.x4[3] = (var53.x4[3] * var54.x4[3]) & 0xffff;
21543     /* 15: div255w */
21544     var56.x4[0] = ((uint16_t)(((orc_uint16)(var55.x4[0]+128)) + (((orc_uint16)(var55.x4[0]+128))>>8)))>>8;
21545     var56.x4[1] = ((uint16_t)(((orc_uint16)(var55.x4[1]+128)) + (((orc_uint16)(var55.x4[1]+128))>>8)))>>8;
21546     var56.x4[2] = ((uint16_t)(((orc_uint16)(var55.x4[2]+128)) + (((orc_uint16)(var55.x4[2]+128))>>8)))>>8;
21547     var56.x4[3] = ((uint16_t)(((orc_uint16)(var55.x4[3]+128)) + (((orc_uint16)(var55.x4[3]+128))>>8)))>>8;
21548     /* 16: convwb */
21549     var57.x4[0] = var56.x4[0];
21550     var57.x4[1] = var56.x4[1];
21551     var57.x4[2] = var56.x4[2];
21552     var57.x4[3] = var56.x4[3];
21553     /* 17: addusb */
21554     var43.x4[0] = ORC_CLAMP_UB((orc_uint8)var57.x4[0] + (orc_uint8)var49.x4[0]);
21555     var43.x4[1] = ORC_CLAMP_UB((orc_uint8)var57.x4[1] + (orc_uint8)var49.x4[1]);
21556     var43.x4[2] = ORC_CLAMP_UB((orc_uint8)var57.x4[2] + (orc_uint8)var49.x4[2]);
21557     var43.x4[3] = ORC_CLAMP_UB((orc_uint8)var57.x4[3] + (orc_uint8)var49.x4[3]);
21558     /* 18: storel */
21559     ptr0[i] = var43;
21560   }
21561
21562 }
21563
21564 #else
21565 static void
21566 _backup_orc_composite_over_n_8888_8888_ca_2d (OrcExecutor * ORC_RESTRICT ex)
21567 {
21568   int i;
21569   int n = ex->n;
21570   orc_union32 * ORC_RESTRICT ptr0;
21571   const orc_union32 * ORC_RESTRICT ptr4;
21572   orc_union32 var40;
21573   orc_union32 var41;
21574   orc_union64 var42;
21575   orc_union32 var43;
21576   orc_union64 var44;
21577   orc_union64 var45;
21578   orc_union64 var46;
21579   orc_union64 var47;
21580   orc_union64 var48;
21581   orc_union32 var49;
21582   orc_union64 var50;
21583   orc_union64 var51;
21584   orc_union32 var52;
21585   orc_union64 var53;
21586   orc_union64 var54;
21587   orc_union64 var55;
21588   orc_union64 var56;
21589   orc_union32 var57;
21590
21591   ptr0 = (orc_union32 *)ex->arrays[0];
21592   ptr4 = (orc_union32 *)ex->arrays[4];
21593
21594     /* 0: loadpb */
21595     var40.x4[0] = ex->params[24];
21596     var40.x4[1] = ex->params[24];
21597     var40.x4[2] = ex->params[24];
21598     var40.x4[3] = ex->params[24];
21599     /* 12: loadpw */
21600     var42.x4[0] = 0x000000ff; /* 255 or 1.25987e-321f */
21601     var42.x4[1] = 0x000000ff; /* 255 or 1.25987e-321f */
21602     var42.x4[2] = 0x000000ff; /* 255 or 1.25987e-321f */
21603     var42.x4[3] = 0x000000ff; /* 255 or 1.25987e-321f */
21604
21605   for (i = 0; i < n; i++) {
21606     /* 1: convubw */
21607     var44.x4[0] = (orc_uint8)var40.x4[0];
21608     var44.x4[1] = (orc_uint8)var40.x4[1];
21609     var44.x4[2] = (orc_uint8)var40.x4[2];
21610     var44.x4[3] = (orc_uint8)var40.x4[3];
21611     /* 2: loadl */
21612     var41 = ptr4[i];
21613     /* 3: convubw */
21614     var45.x4[0] = (orc_uint8)var41.x4[0];
21615     var45.x4[1] = (orc_uint8)var41.x4[1];
21616     var45.x4[2] = (orc_uint8)var41.x4[2];
21617     var45.x4[3] = (orc_uint8)var41.x4[3];
21618     /* 4: splatw3q */
21619     var46.i = ((((orc_uint64)var44.i)>>48) << 48) | ((((orc_uint64)var44.i)>>48)<<32) | ((((orc_uint64)var44.i)>>48) << 16) | ((((orc_uint64)var44.i)>>48));
21620     /* 5: mullw */
21621     var47.x4[0] = (var44.x4[0] * var45.x4[0]) & 0xffff;
21622     var47.x4[1] = (var44.x4[1] * var45.x4[1]) & 0xffff;
21623     var47.x4[2] = (var44.x4[2] * var45.x4[2]) & 0xffff;
21624     var47.x4[3] = (var44.x4[3] * var45.x4[3]) & 0xffff;
21625     /* 6: div255w */
21626     var48.x4[0] = ((uint16_t)(((orc_uint16)(var47.x4[0]+128)) + (((orc_uint16)(var47.x4[0]+128))>>8)))>>8;
21627     var48.x4[1] = ((uint16_t)(((orc_uint16)(var47.x4[1]+128)) + (((orc_uint16)(var47.x4[1]+128))>>8)))>>8;
21628     var48.x4[2] = ((uint16_t)(((orc_uint16)(var47.x4[2]+128)) + (((orc_uint16)(var47.x4[2]+128))>>8)))>>8;
21629     var48.x4[3] = ((uint16_t)(((orc_uint16)(var47.x4[3]+128)) + (((orc_uint16)(var47.x4[3]+128))>>8)))>>8;
21630     /* 7: convwb */
21631     var49.x4[0] = var48.x4[0];
21632     var49.x4[1] = var48.x4[1];
21633     var49.x4[2] = var48.x4[2];
21634     var49.x4[3] = var48.x4[3];
21635     /* 8: mullw */
21636     var50.x4[0] = (var45.x4[0] * var46.x4[0]) & 0xffff;
21637     var50.x4[1] = (var45.x4[1] * var46.x4[1]) & 0xffff;
21638     var50.x4[2] = (var45.x4[2] * var46.x4[2]) & 0xffff;
21639     var50.x4[3] = (var45.x4[3] * var46.x4[3]) & 0xffff;
21640     /* 9: div255w */
21641     var51.x4[0] = ((uint16_t)(((orc_uint16)(var50.x4[0]+128)) + (((orc_uint16)(var50.x4[0]+128))>>8)))>>8;
21642     var51.x4[1] = ((uint16_t)(((orc_uint16)(var50.x4[1]+128)) + (((orc_uint16)(var50.x4[1]+128))>>8)))>>8;
21643     var51.x4[2] = ((uint16_t)(((orc_uint16)(var50.x4[2]+128)) + (((orc_uint16)(var50.x4[2]+128))>>8)))>>8;
21644     var51.x4[3] = ((uint16_t)(((orc_uint16)(var50.x4[3]+128)) + (((orc_uint16)(var50.x4[3]+128))>>8)))>>8;
21645     /* 10: loadl */
21646     var52 = ptr0[i];
21647     /* 11: convubw */
21648     var53.x4[0] = (orc_uint8)var52.x4[0];
21649     var53.x4[1] = (orc_uint8)var52.x4[1];
21650     var53.x4[2] = (orc_uint8)var52.x4[2];
21651     var53.x4[3] = (orc_uint8)var52.x4[3];
21652     /* 13: xorw */
21653     var54.x4[0] = var51.x4[0] ^ var42.x4[0];
21654     var54.x4[1] = var51.x4[1] ^ var42.x4[1];
21655     var54.x4[2] = var51.x4[2] ^ var42.x4[2];
21656     var54.x4[3] = var51.x4[3] ^ var42.x4[3];
21657     /* 14: mullw */
21658     var55.x4[0] = (var53.x4[0] * var54.x4[0]) & 0xffff;
21659     var55.x4[1] = (var53.x4[1] * var54.x4[1]) & 0xffff;
21660     var55.x4[2] = (var53.x4[2] * var54.x4[2]) & 0xffff;
21661     var55.x4[3] = (var53.x4[3] * var54.x4[3]) & 0xffff;
21662     /* 15: div255w */
21663     var56.x4[0] = ((uint16_t)(((orc_uint16)(var55.x4[0]+128)) + (((orc_uint16)(var55.x4[0]+128))>>8)))>>8;
21664     var56.x4[1] = ((uint16_t)(((orc_uint16)(var55.x4[1]+128)) + (((orc_uint16)(var55.x4[1]+128))>>8)))>>8;
21665     var56.x4[2] = ((uint16_t)(((orc_uint16)(var55.x4[2]+128)) + (((orc_uint16)(var55.x4[2]+128))>>8)))>>8;
21666     var56.x4[3] = ((uint16_t)(((orc_uint16)(var55.x4[3]+128)) + (((orc_uint16)(var55.x4[3]+128))>>8)))>>8;
21667     /* 16: convwb */
21668     var57.x4[0] = var56.x4[0];
21669     var57.x4[1] = var56.x4[1];
21670     var57.x4[2] = var56.x4[2];
21671     var57.x4[3] = var56.x4[3];
21672     /* 17: addusb */
21673     var43.x4[0] = ORC_CLAMP_UB((orc_uint8)var57.x4[0] + (orc_uint8)var49.x4[0]);
21674     var43.x4[1] = ORC_CLAMP_UB((orc_uint8)var57.x4[1] + (orc_uint8)var49.x4[1]);
21675     var43.x4[2] = ORC_CLAMP_UB((orc_uint8)var57.x4[2] + (orc_uint8)var49.x4[2]);
21676     var43.x4[3] = ORC_CLAMP_UB((orc_uint8)var57.x4[3] + (orc_uint8)var49.x4[3]);
21677     /* 18: storel */
21678     ptr0[i] = var43;
21679   }
21680
21681 }
21682
21683 void
21684 orc_composite_over_n_8888_8888_ca_2d (orc_uint32 * d1, const orc_uint32 * s1, int p1, int n)
21685 {
21686   OrcExecutor _ex, *ex = &_ex;
21687   static int p_inited = 0;
21688   static OrcProgram *p = 0;
21689   void (*func) (OrcExecutor *);
21690
21691   if (!p_inited) {
21692     orc_once_mutex_lock ();
21693     if (!p_inited) {
21694       OrcCompileResult result;
21695
21696       p = orc_program_new ();
21697       orc_program_set_name (p, "orc_composite_over_n_8888_8888_ca_2d");
21698       orc_program_set_backup_function (p, _backup_orc_composite_over_n_8888_8888_ca_2d);
21699       orc_program_add_destination (p, 4, "d1");
21700       orc_program_add_source (p, 4, "s1");
21701       orc_program_add_constant (p, 4, 0x000000ff, "c1");
21702       orc_program_add_parameter (p, 4, "p1");
21703       orc_program_add_temporary (p, 8, "t1");
21704       orc_program_add_temporary (p, 8, "t2");
21705       orc_program_add_temporary (p, 4, "t3");
21706       orc_program_add_temporary (p, 8, "t4");
21707       orc_program_add_temporary (p, 8, "t5");
21708       orc_program_add_temporary (p, 8, "t6");
21709       orc_program_add_temporary (p, 8, "t7");
21710       orc_program_add_temporary (p, 4, "t8");
21711
21712       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T6, ORC_VAR_P1, ORC_VAR_D1, ORC_VAR_D1);
21713       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T5, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
21714       orc_program_append_2 (p, "splatw3q", 0, ORC_VAR_T7, ORC_VAR_T6, ORC_VAR_D1, ORC_VAR_D1);
21715       orc_program_append_2 (p, "mullw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T5, ORC_VAR_D1);
21716       orc_program_append_2 (p, "div255w", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_D1, ORC_VAR_D1);
21717       orc_program_append_2 (p, "convwb", 2, ORC_VAR_T8, ORC_VAR_T6, ORC_VAR_D1, ORC_VAR_D1);
21718       orc_program_append_2 (p, "mullw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T7, ORC_VAR_D1);
21719       orc_program_append_2 (p, "div255w", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_D1, ORC_VAR_D1);
21720       orc_program_append_2 (p, "loadl", 0, ORC_VAR_T3, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_D1);
21721       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1, ORC_VAR_D1);
21722       orc_program_append_2 (p, "xorw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C1, ORC_VAR_D1);
21723       orc_program_append_2 (p, "mullw", 2, ORC_VAR_T1, ORC_VAR_T4, ORC_VAR_T5, ORC_VAR_D1);
21724       orc_program_append_2 (p, "div255w", 2, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
21725       orc_program_append_2 (p, "convwb", 2, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
21726       orc_program_append_2 (p, "addusb", 2, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T8, ORC_VAR_D1);
21727
21728       result = orc_program_compile (p);
21729     }
21730     p_inited = TRUE;
21731     orc_once_mutex_unlock ();
21732   }
21733   ex->program = p;
21734
21735   ex->n = n;
21736   ex->arrays[ORC_VAR_D1] = d1;
21737   ex->arrays[ORC_VAR_S1] = (void *)s1;
21738   ex->params[ORC_VAR_P1] = p1;
21739
21740   func = p->code_exec;
21741   func (ex);
21742 }
21743 #endif
21744
21745
21746 /* cogorc_resample_horiz_1tap */
21747 #ifdef DISABLE_ORC
21748 void
21749 cogorc_resample_horiz_1tap (orc_uint8 * d1, const orc_uint8 * s1, int p1, int p2, int n){
21750   int i;
21751   orc_int8 * ORC_RESTRICT ptr0;
21752   const orc_int8 * ORC_RESTRICT ptr4;
21753   orc_int8 var32;
21754
21755   ptr0 = (orc_int8 *)d1;
21756   ptr4 = (orc_int8 *)s1;
21757
21758
21759   for (i = 0; i < n; i++) {
21760     /* 0: ldresnearb */
21761     var32 = ptr4[(p1 + i*p2)>>16];
21762     /* 1: storeb */
21763     ptr0[i] = var32;
21764   }
21765
21766 }
21767
21768 #else
21769 static void
21770 _backup_cogorc_resample_horiz_1tap (OrcExecutor * ORC_RESTRICT ex)
21771 {
21772   int i;
21773   int n = ex->n;
21774   orc_int8 * ORC_RESTRICT ptr0;
21775   const orc_int8 * ORC_RESTRICT ptr4;
21776   orc_int8 var32;
21777
21778   ptr0 = (orc_int8 *)ex->arrays[0];
21779   ptr4 = (orc_int8 *)ex->arrays[4];
21780
21781
21782   for (i = 0; i < n; i++) {
21783     /* 0: ldresnearb */
21784     var32 = ptr4[(ex->params[24] + i*ex->params[25])>>16];
21785     /* 1: storeb */
21786     ptr0[i] = var32;
21787   }
21788
21789 }
21790
21791 void
21792 cogorc_resample_horiz_1tap (orc_uint8 * d1, const orc_uint8 * s1, int p1, int p2, int n)
21793 {
21794   OrcExecutor _ex, *ex = &_ex;
21795   static int p_inited = 0;
21796   static OrcProgram *p = 0;
21797   void (*func) (OrcExecutor *);
21798
21799   if (!p_inited) {
21800     orc_once_mutex_lock ();
21801     if (!p_inited) {
21802       OrcCompileResult result;
21803
21804       p = orc_program_new ();
21805       orc_program_set_name (p, "cogorc_resample_horiz_1tap");
21806       orc_program_set_backup_function (p, _backup_cogorc_resample_horiz_1tap);
21807       orc_program_add_destination (p, 1, "d1");
21808       orc_program_add_source (p, 1, "s1");
21809       orc_program_add_parameter (p, 2, "p1");
21810       orc_program_add_parameter (p, 2, "p2");
21811
21812       orc_program_append_2 (p, "ldresnearb", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_P1, ORC_VAR_P2);
21813
21814       result = orc_program_compile (p);
21815     }
21816     p_inited = TRUE;
21817     orc_once_mutex_unlock ();
21818   }
21819   ex->program = p;
21820
21821   ex->n = n;
21822   ex->arrays[ORC_VAR_D1] = d1;
21823   ex->arrays[ORC_VAR_S1] = (void *)s1;
21824   ex->params[ORC_VAR_P1] = p1;
21825   ex->params[ORC_VAR_P2] = p2;
21826
21827   func = p->code_exec;
21828   func (ex);
21829 }
21830 #endif
21831
21832
21833 /* cogorc_resample_horiz_2tap */
21834 #ifdef DISABLE_ORC
21835 void
21836 cogorc_resample_horiz_2tap (orc_uint8 * d1, const orc_uint8 * s1, int p1, int p2, int n){
21837   int i;
21838   orc_int8 * ORC_RESTRICT ptr0;
21839   const orc_int8 * ORC_RESTRICT ptr4;
21840   orc_int8 var32;
21841
21842   ptr0 = (orc_int8 *)d1;
21843   ptr4 = (orc_int8 *)s1;
21844
21845
21846   for (i = 0; i < n; i++) {
21847     /* 0: ldreslinb */
21848     {
21849     int tmp = p1 + i * p2;
21850     var32 = ((orc_uint8)ptr4[tmp>>16] * (256-((tmp>>8)&0xff)) + (orc_uint8)ptr4[(tmp>>16)+1] * ((tmp>>8)&0xff))>>8;
21851     }
21852     /* 1: storeb */
21853     ptr0[i] = var32;
21854   }
21855
21856 }
21857
21858 #else
21859 static void
21860 _backup_cogorc_resample_horiz_2tap (OrcExecutor * ORC_RESTRICT ex)
21861 {
21862   int i;
21863   int n = ex->n;
21864   orc_int8 * ORC_RESTRICT ptr0;
21865   const orc_int8 * ORC_RESTRICT ptr4;
21866   orc_int8 var32;
21867
21868   ptr0 = (orc_int8 *)ex->arrays[0];
21869   ptr4 = (orc_int8 *)ex->arrays[4];
21870
21871
21872   for (i = 0; i < n; i++) {
21873     /* 0: ldreslinb */
21874     {
21875     int tmp = ex->params[24] + i * ex->params[25];
21876     var32 = ((orc_uint8)ptr4[tmp>>16] * (256-((tmp>>8)&0xff)) + (orc_uint8)ptr4[(tmp>>16)+1] * ((tmp>>8)&0xff))>>8;
21877     }
21878     /* 1: storeb */
21879     ptr0[i] = var32;
21880   }
21881
21882 }
21883
21884 void
21885 cogorc_resample_horiz_2tap (orc_uint8 * d1, const orc_uint8 * s1, int p1, int p2, int n)
21886 {
21887   OrcExecutor _ex, *ex = &_ex;
21888   static int p_inited = 0;
21889   static OrcProgram *p = 0;
21890   void (*func) (OrcExecutor *);
21891
21892   if (!p_inited) {
21893     orc_once_mutex_lock ();
21894     if (!p_inited) {
21895       OrcCompileResult result;
21896
21897       p = orc_program_new ();
21898       orc_program_set_name (p, "cogorc_resample_horiz_2tap");
21899       orc_program_set_backup_function (p, _backup_cogorc_resample_horiz_2tap);
21900       orc_program_add_destination (p, 1, "d1");
21901       orc_program_add_source (p, 1, "s1");
21902       orc_program_add_parameter (p, 4, "p1");
21903       orc_program_add_parameter (p, 4, "p2");
21904
21905       orc_program_append_2 (p, "ldreslinb", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_P1, ORC_VAR_P2);
21906
21907       result = orc_program_compile (p);
21908     }
21909     p_inited = TRUE;
21910     orc_once_mutex_unlock ();
21911   }
21912   ex->program = p;
21913
21914   ex->n = n;
21915   ex->arrays[ORC_VAR_D1] = d1;
21916   ex->arrays[ORC_VAR_S1] = (void *)s1;
21917   ex->params[ORC_VAR_P1] = p1;
21918   ex->params[ORC_VAR_P2] = p2;
21919
21920   func = p->code_exec;
21921   func (ex);
21922 }
21923 #endif
21924
21925
21926 /* test_float_constant_1 */
21927 #ifdef DISABLE_ORC
21928 void
21929 test_float_constant_1 (orc_uint32 * d1, int n){
21930   int i;
21931   orc_union32 * ORC_RESTRICT ptr0;
21932   orc_union32 var32;
21933   orc_union32 var33;
21934
21935   ptr0 = (orc_union32 *)d1;
21936
21937     /* 0: loadpl */
21938     var32.i = 0x40000000; /* 1073741824 or 5.30499e-315f */
21939
21940   for (i = 0; i < n; i++) {
21941     /* 1: copyl */
21942     var33.i = var32.i;
21943     /* 2: storel */
21944     ptr0[i] = var33;
21945   }
21946
21947 }
21948
21949 #else
21950 static void
21951 _backup_test_float_constant_1 (OrcExecutor * ORC_RESTRICT ex)
21952 {
21953   int i;
21954   int n = ex->n;
21955   orc_union32 * ORC_RESTRICT ptr0;
21956   orc_union32 var32;
21957   orc_union32 var33;
21958
21959   ptr0 = (orc_union32 *)ex->arrays[0];
21960
21961     /* 0: loadpl */
21962     var32.i = 0x40000000; /* 1073741824 or 5.30499e-315f */
21963
21964   for (i = 0; i < n; i++) {
21965     /* 1: copyl */
21966     var33.i = var32.i;
21967     /* 2: storel */
21968     ptr0[i] = var33;
21969   }
21970
21971 }
21972
21973 void
21974 test_float_constant_1 (orc_uint32 * d1, int n)
21975 {
21976   OrcExecutor _ex, *ex = &_ex;
21977   static int p_inited = 0;
21978   static OrcProgram *p = 0;
21979   void (*func) (OrcExecutor *);
21980
21981   if (!p_inited) {
21982     orc_once_mutex_lock ();
21983     if (!p_inited) {
21984       OrcCompileResult result;
21985
21986       p = orc_program_new ();
21987       orc_program_set_name (p, "test_float_constant_1");
21988       orc_program_set_backup_function (p, _backup_test_float_constant_1);
21989       orc_program_add_destination (p, 4, "d1");
21990       orc_program_add_constant (p, 4, 0x40000000, "c1");
21991
21992       orc_program_append_2 (p, "copyl", 0, ORC_VAR_D1, ORC_VAR_C1, ORC_VAR_D1, ORC_VAR_D1);
21993
21994       result = orc_program_compile (p);
21995     }
21996     p_inited = TRUE;
21997     orc_once_mutex_unlock ();
21998   }
21999   ex->program = p;
22000
22001   ex->n = n;
22002   ex->arrays[ORC_VAR_D1] = d1;
22003
22004   func = p->code_exec;
22005   func (ex);
22006 }
22007 #endif
22008
22009
22010 /* test_float_constant_2 */
22011 #ifdef DISABLE_ORC
22012 void
22013 test_float_constant_2 (orc_uint32 * d1, int n){
22014   int i;
22015   orc_union32 * ORC_RESTRICT ptr0;
22016   orc_union32 var32;
22017   orc_union32 var33;
22018
22019   ptr0 = (orc_union32 *)d1;
22020
22021     /* 0: loadpl */
22022     var32.i = 0x40000000; /* 1073741824 or 5.30499e-315f */
22023
22024   for (i = 0; i < n; i++) {
22025     /* 1: copyl */
22026     var33.i = var32.i;
22027     /* 2: storel */
22028     ptr0[i] = var33;
22029   }
22030
22031 }
22032
22033 #else
22034 static void
22035 _backup_test_float_constant_2 (OrcExecutor * ORC_RESTRICT ex)
22036 {
22037   int i;
22038   int n = ex->n;
22039   orc_union32 * ORC_RESTRICT ptr0;
22040   orc_union32 var32;
22041   orc_union32 var33;
22042
22043   ptr0 = (orc_union32 *)ex->arrays[0];
22044
22045     /* 0: loadpl */
22046     var32.i = 0x40000000; /* 1073741824 or 5.30499e-315f */
22047
22048   for (i = 0; i < n; i++) {
22049     /* 1: copyl */
22050     var33.i = var32.i;
22051     /* 2: storel */
22052     ptr0[i] = var33;
22053   }
22054
22055 }
22056
22057 void
22058 test_float_constant_2 (orc_uint32 * d1, int n)
22059 {
22060   OrcExecutor _ex, *ex = &_ex;
22061   static int p_inited = 0;
22062   static OrcProgram *p = 0;
22063   void (*func) (OrcExecutor *);
22064
22065   if (!p_inited) {
22066     orc_once_mutex_lock ();
22067     if (!p_inited) {
22068       OrcCompileResult result;
22069
22070       p = orc_program_new ();
22071       orc_program_set_name (p, "test_float_constant_2");
22072       orc_program_set_backup_function (p, _backup_test_float_constant_2);
22073       orc_program_add_destination (p, 4, "d1");
22074       orc_program_add_constant (p, 4, 0x40000000, "c1");
22075
22076       orc_program_append_2 (p, "copyl", 0, ORC_VAR_D1, ORC_VAR_C1, ORC_VAR_D1, ORC_VAR_D1);
22077
22078       result = orc_program_compile (p);
22079     }
22080     p_inited = TRUE;
22081     orc_once_mutex_unlock ();
22082   }
22083   ex->program = p;
22084
22085   ex->n = n;
22086   ex->arrays[ORC_VAR_D1] = d1;
22087
22088   func = p->code_exec;
22089   func (ex);
22090 }
22091 #endif
22092
22093
22094 /* convert_fc32_to_int32 */
22095 #ifdef DISABLE_ORC
22096 void
22097 convert_fc32_to_int32 (orc_uint32 * d1, const orc_uint64 * s1, int n){
22098   int i;
22099   orc_union32 * ORC_RESTRICT ptr0;
22100   const orc_union64 * ORC_RESTRICT ptr4;
22101   orc_union64 var34;
22102   orc_union64 var35;
22103   orc_union32 var36;
22104   orc_union64 var37;
22105   orc_union64 var38;
22106
22107   ptr0 = (orc_union32 *)d1;
22108   ptr4 = (orc_union64 *)s1;
22109
22110     /* 1: loadpl */
22111     var35.x2[0] = 0x46fffe00; /* 1191181824 or 5.88522e-315f */
22112     var35.x2[1] = 0x46fffe00; /* 1191181824 or 5.88522e-315f */
22113
22114   for (i = 0; i < n; i++) {
22115     /* 0: loadq */
22116     var34 = ptr4[i];
22117     /* 2: mulf */
22118     {
22119        orc_union32 _src1;
22120        orc_union32 _src2;
22121        orc_union32 _dest1;
22122        _src1.i = ORC_DENORMAL(var34.x2[0]);
22123        _src2.i = ORC_DENORMAL(var35.x2[0]);
22124        _dest1.f = _src1.f * _src2.f;
22125        var37.x2[0] = ORC_DENORMAL(_dest1.i);
22126     }
22127     {
22128        orc_union32 _src1;
22129        orc_union32 _src2;
22130        orc_union32 _dest1;
22131        _src1.i = ORC_DENORMAL(var34.x2[1]);
22132        _src2.i = ORC_DENORMAL(var35.x2[1]);
22133        _dest1.f = _src1.f * _src2.f;
22134        var37.x2[1] = ORC_DENORMAL(_dest1.i);
22135     }
22136     /* 3: convfl */
22137     {
22138        int tmp;
22139        tmp = (int)var37.x2f[0];
22140        if (tmp == 0x80000000 && !(var37.x2[0]&0x80000000)) tmp = 0x7fffffff;
22141        var38.x2[0] = tmp;
22142     }
22143     {
22144        int tmp;
22145        tmp = (int)var37.x2f[1];
22146        if (tmp == 0x80000000 && !(var37.x2[1]&0x80000000)) tmp = 0x7fffffff;
22147        var38.x2[1] = tmp;
22148     }
22149     /* 4: convlw */
22150     var36.x2[0] = var38.x2[0];
22151     var36.x2[1] = var38.x2[1];
22152     /* 5: storel */
22153     ptr0[i] = var36;
22154   }
22155
22156 }
22157
22158 #else
22159 static void
22160 _backup_convert_fc32_to_int32 (OrcExecutor * ORC_RESTRICT ex)
22161 {
22162   int i;
22163   int n = ex->n;
22164   orc_union32 * ORC_RESTRICT ptr0;
22165   const orc_union64 * ORC_RESTRICT ptr4;
22166   orc_union64 var34;
22167   orc_union64 var35;
22168   orc_union32 var36;
22169   orc_union64 var37;
22170   orc_union64 var38;
22171
22172   ptr0 = (orc_union32 *)ex->arrays[0];
22173   ptr4 = (orc_union64 *)ex->arrays[4];
22174
22175     /* 1: loadpl */
22176     var35.x2[0] = 0x46fffe00; /* 1191181824 or 5.88522e-315f */
22177     var35.x2[1] = 0x46fffe00; /* 1191181824 or 5.88522e-315f */
22178
22179   for (i = 0; i < n; i++) {
22180     /* 0: loadq */
22181     var34 = ptr4[i];
22182     /* 2: mulf */
22183     {
22184        orc_union32 _src1;
22185        orc_union32 _src2;
22186        orc_union32 _dest1;
22187        _src1.i = ORC_DENORMAL(var34.x2[0]);
22188        _src2.i = ORC_DENORMAL(var35.x2[0]);
22189        _dest1.f = _src1.f * _src2.f;
22190        var37.x2[0] = ORC_DENORMAL(_dest1.i);
22191     }
22192     {
22193        orc_union32 _src1;
22194        orc_union32 _src2;
22195        orc_union32 _dest1;
22196        _src1.i = ORC_DENORMAL(var34.x2[1]);
22197        _src2.i = ORC_DENORMAL(var35.x2[1]);
22198        _dest1.f = _src1.f * _src2.f;
22199        var37.x2[1] = ORC_DENORMAL(_dest1.i);
22200     }
22201     /* 3: convfl */
22202     {
22203        int tmp;
22204        tmp = (int)var37.x2f[0];
22205        if (tmp == 0x80000000 && !(var37.x2[0]&0x80000000)) tmp = 0x7fffffff;
22206        var38.x2[0] = tmp;
22207     }
22208     {
22209        int tmp;
22210        tmp = (int)var37.x2f[1];
22211        if (tmp == 0x80000000 && !(var37.x2[1]&0x80000000)) tmp = 0x7fffffff;
22212        var38.x2[1] = tmp;
22213     }
22214     /* 4: convlw */
22215     var36.x2[0] = var38.x2[0];
22216     var36.x2[1] = var38.x2[1];
22217     /* 5: storel */
22218     ptr0[i] = var36;
22219   }
22220
22221 }
22222
22223 void
22224 convert_fc32_to_int32 (orc_uint32 * d1, const orc_uint64 * s1, int n)
22225 {
22226   OrcExecutor _ex, *ex = &_ex;
22227   static int p_inited = 0;
22228   static OrcProgram *p = 0;
22229   void (*func) (OrcExecutor *);
22230
22231   if (!p_inited) {
22232     orc_once_mutex_lock ();
22233     if (!p_inited) {
22234       OrcCompileResult result;
22235
22236       p = orc_program_new ();
22237       orc_program_set_name (p, "convert_fc32_to_int32");
22238       orc_program_set_backup_function (p, _backup_convert_fc32_to_int32);
22239       orc_program_add_destination (p, 4, "d1");
22240       orc_program_add_source (p, 8, "s1");
22241       orc_program_add_constant (p, 4, 0x46fffe00, "c1");
22242       orc_program_add_temporary (p, 8, "t1");
22243       orc_program_add_temporary (p, 8, "t2");
22244
22245       orc_program_append_2 (p, "mulf", 1, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_C1, ORC_VAR_D1);
22246       orc_program_append_2 (p, "convfl", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
22247       orc_program_append_2 (p, "convlw", 1, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
22248
22249       result = orc_program_compile (p);
22250     }
22251     p_inited = TRUE;
22252     orc_once_mutex_unlock ();
22253   }
22254   ex->program = p;
22255
22256   ex->n = n;
22257   ex->arrays[ORC_VAR_D1] = d1;
22258   ex->arrays[ORC_VAR_S1] = (void *)s1;
22259
22260   func = p->code_exec;
22261   func (ex);
22262 }
22263 #endif
22264
22265
22266 /* param64 */
22267 #ifdef DISABLE_ORC
22268 void
22269 param64 (orc_uint64 * d1, int p1, int n){
22270   int i;
22271   orc_union64 * ORC_RESTRICT ptr0;
22272   orc_union64 var32;
22273   orc_union64 var33;
22274
22275   ptr0 = (orc_union64 *)d1;
22276
22277     /* 0: loadpq */
22278     var32.i = p1;
22279
22280   for (i = 0; i < n; i++) {
22281     /* 1: copyq */
22282     var33.i = var32.i;
22283     /* 2: storeq */
22284     ptr0[i] = var33;
22285   }
22286
22287 }
22288
22289 #else
22290 static void
22291 _backup_param64 (OrcExecutor * ORC_RESTRICT ex)
22292 {
22293   int i;
22294   int n = ex->n;
22295   orc_union64 * ORC_RESTRICT ptr0;
22296   orc_union64 var32;
22297   orc_union64 var33;
22298
22299   ptr0 = (orc_union64 *)ex->arrays[0];
22300
22301     /* 0: loadpq */
22302     var32.i = (ex->params[24] & 0xffffffff) | ((orc_uint64)(ex->params[24 + (ORC_VAR_T1 - ORC_VAR_P1)]) << 32);
22303
22304   for (i = 0; i < n; i++) {
22305     /* 1: copyq */
22306     var33.i = var32.i;
22307     /* 2: storeq */
22308     ptr0[i] = var33;
22309   }
22310
22311 }
22312
22313 void
22314 param64 (orc_uint64 * d1, int p1, int n)
22315 {
22316   OrcExecutor _ex, *ex = &_ex;
22317   static int p_inited = 0;
22318   static OrcProgram *p = 0;
22319   void (*func) (OrcExecutor *);
22320
22321   if (!p_inited) {
22322     orc_once_mutex_lock ();
22323     if (!p_inited) {
22324       OrcCompileResult result;
22325
22326       p = orc_program_new ();
22327       orc_program_set_name (p, "param64");
22328       orc_program_set_backup_function (p, _backup_param64);
22329       orc_program_add_destination (p, 8, "d1");
22330       orc_program_add_parameter (p, 8, "p1");
22331
22332       orc_program_append_2 (p, "copyq", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1, ORC_VAR_D1);
22333
22334       result = orc_program_compile (p);
22335     }
22336     p_inited = TRUE;
22337     orc_once_mutex_unlock ();
22338   }
22339   ex->program = p;
22340
22341   ex->n = n;
22342   ex->arrays[ORC_VAR_D1] = d1;
22343   ex->params[ORC_VAR_P1] = p1;
22344
22345   func = p->code_exec;
22346   func (ex);
22347 }
22348 #endif
22349
22350
22351 /* const64 */
22352 #ifdef DISABLE_ORC
22353 void
22354 const64 (orc_uint64 * d1, int n){
22355   int i;
22356   orc_union64 * ORC_RESTRICT ptr0;
22357   orc_union64 var32;
22358   orc_union64 var33;
22359
22360   ptr0 = (orc_union64 *)d1;
22361
22362     /* 0: loadpq */
22363     var32.i = ORC_UINT64_C(0x0123456789abcdef); /* 3.5127e-303f */
22364
22365   for (i = 0; i < n; i++) {
22366     /* 1: copyq */
22367     var33.i = var32.i;
22368     /* 2: storeq */
22369     ptr0[i] = var33;
22370   }
22371
22372 }
22373
22374 #else
22375 static void
22376 _backup_const64 (OrcExecutor * ORC_RESTRICT ex)
22377 {
22378   int i;
22379   int n = ex->n;
22380   orc_union64 * ORC_RESTRICT ptr0;
22381   orc_union64 var32;
22382   orc_union64 var33;
22383
22384   ptr0 = (orc_union64 *)ex->arrays[0];
22385
22386     /* 0: loadpq */
22387     var32.i = ORC_UINT64_C(0x0123456789abcdef); /* 3.5127e-303f */
22388
22389   for (i = 0; i < n; i++) {
22390     /* 1: copyq */
22391     var33.i = var32.i;
22392     /* 2: storeq */
22393     ptr0[i] = var33;
22394   }
22395
22396 }
22397
22398 void
22399 const64 (orc_uint64 * d1, int n)
22400 {
22401   OrcExecutor _ex, *ex = &_ex;
22402   static int p_inited = 0;
22403   static OrcProgram *p = 0;
22404   void (*func) (OrcExecutor *);
22405
22406   if (!p_inited) {
22407     orc_once_mutex_lock ();
22408     if (!p_inited) {
22409       OrcCompileResult result;
22410
22411       p = orc_program_new ();
22412       orc_program_set_name (p, "const64");
22413       orc_program_set_backup_function (p, _backup_const64);
22414       orc_program_add_destination (p, 8, "d1");
22415       orc_program_add_constant_int64 (p, 8, 0x0123456789abcdefULL, "c1");
22416
22417       orc_program_append_2 (p, "copyq", 0, ORC_VAR_D1, ORC_VAR_C1, ORC_VAR_D1, ORC_VAR_D1);
22418
22419       result = orc_program_compile (p);
22420     }
22421     p_inited = TRUE;
22422     orc_once_mutex_unlock ();
22423   }
22424   ex->program = p;
22425
22426   ex->n = n;
22427   ex->arrays[ORC_VAR_D1] = d1;
22428
22429   func = p->code_exec;
22430   func (ex);
22431 }
22432 #endif
22433
22434
22435 /* param64_2 */
22436 #ifdef DISABLE_ORC
22437 void
22438 param64_2 (orc_uint64 * d1, orc_int64 p1, int n){
22439   int i;
22440   orc_union64 * ORC_RESTRICT ptr0;
22441   orc_union64 var33;
22442   orc_union64 var34;
22443
22444   ptr0 = (orc_union64 *)d1;
22445
22446     /* 0: loadpq */
22447     var34.i = p1;
22448
22449   for (i = 0; i < n; i++) {
22450     /* 1: copyq */
22451     var33.i = var34.i;
22452     /* 2: storeq */
22453     ptr0[i] = var33;
22454   }
22455
22456 }
22457
22458 #else
22459 static void
22460 _backup_param64_2 (OrcExecutor * ORC_RESTRICT ex)
22461 {
22462   int i;
22463   int n = ex->n;
22464   orc_union64 * ORC_RESTRICT ptr0;
22465   orc_union64 var33;
22466   orc_union64 var34;
22467
22468   ptr0 = (orc_union64 *)ex->arrays[0];
22469
22470     /* 0: loadpq */
22471     var34.i = (ex->params[24] & 0xffffffff) | ((orc_uint64)(ex->params[24 + (ORC_VAR_T1 - ORC_VAR_P1)]) << 32);
22472
22473   for (i = 0; i < n; i++) {
22474     /* 1: copyq */
22475     var33.i = var34.i;
22476     /* 2: storeq */
22477     ptr0[i] = var33;
22478   }
22479
22480 }
22481
22482 void
22483 param64_2 (orc_uint64 * d1, orc_int64 p1, int n)
22484 {
22485   OrcExecutor _ex, *ex = &_ex;
22486   static int p_inited = 0;
22487   static OrcProgram *p = 0;
22488   void (*func) (OrcExecutor *);
22489
22490   if (!p_inited) {
22491     orc_once_mutex_lock ();
22492     if (!p_inited) {
22493       OrcCompileResult result;
22494
22495       p = orc_program_new ();
22496       orc_program_set_name (p, "param64_2");
22497       orc_program_set_backup_function (p, _backup_param64_2);
22498       orc_program_add_destination (p, 8, "d1");
22499       orc_program_add_parameter_int64 (p, 8, "p1");
22500       orc_program_add_temporary (p, 8, "t1");
22501
22502       orc_program_append_2 (p, "loadpq", 0, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1, ORC_VAR_D1);
22503       orc_program_append_2 (p, "copyq", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
22504
22505       result = orc_program_compile (p);
22506     }
22507     p_inited = TRUE;
22508     orc_once_mutex_unlock ();
22509   }
22510   ex->program = p;
22511
22512   ex->n = n;
22513   ex->arrays[ORC_VAR_D1] = d1;
22514   {
22515     orc_union64 tmp;
22516     tmp.i = p1;
22517     ex->params[ORC_VAR_P1] = tmp.x2[0];
22518     ex->params[ORC_VAR_T1] = tmp.x2[1];
22519   }
22520
22521   func = p->code_exec;
22522   func (ex);
22523 }
22524 #endif
22525
22526
22527 /* pa_volume_s16ne_orc_2ch */
22528 #ifdef DISABLE_ORC
22529 void
22530 pa_volume_s16ne_orc_2ch (int16_t * d1, orc_int64 p1, int n){
22531   int i;
22532   orc_union32 * ORC_RESTRICT ptr0;
22533   orc_union32 var37;
22534   orc_union32 var38;
22535   orc_union64 var39;
22536   orc_union32 var40;
22537   orc_union64 var41;
22538   orc_union64 var42;
22539   orc_union64 var43;
22540   orc_union64 var44;
22541   orc_union64 var45;
22542   orc_union64 var46;
22543   orc_union64 var47;
22544   orc_union64 var48;
22545   orc_union64 var49;
22546   orc_union64 var50;
22547
22548   ptr0 = (orc_union32 *)d1;
22549
22550     /* 0: loadpq */
22551     var41.i = p1;
22552     /* 5: loadpw */
22553     var39.x4[0] = 0x00000000; /* 0 or 0f */
22554     var39.x4[1] = 0x00000000; /* 0 or 0f */
22555     var39.x4[2] = 0x00000000; /* 0 or 0f */
22556     var39.x4[3] = 0x00000000; /* 0 or 0f */
22557
22558   for (i = 0; i < n; i++) {
22559     /* 1: loadl */
22560     var37 = ptr0[i];
22561     /* 2: convuwl */
22562     var42.x2[0] = (orc_uint16)var37.x2[0];
22563     var42.x2[1] = (orc_uint16)var37.x2[1];
22564     /* 3: loadl */
22565     var38 = ptr0[i];
22566     /* 4: convswl */
22567     var43.x2[0] = var38.x2[0];
22568     var43.x2[1] = var38.x2[1];
22569     /* 6: cmpgtsw */
22570     var44.x4[0] = (var39.x4[0] > var42.x4[0]) ? (~0) : 0;
22571     var44.x4[1] = (var39.x4[1] > var42.x4[1]) ? (~0) : 0;
22572     var44.x4[2] = (var39.x4[2] > var42.x4[2]) ? (~0) : 0;
22573     var44.x4[3] = (var39.x4[3] > var42.x4[3]) ? (~0) : 0;
22574     /* 7: andw */
22575     var45.x4[0] = var44.x4[0] & var41.x4[0];
22576     var45.x4[1] = var44.x4[1] & var41.x4[1];
22577     var45.x4[2] = var44.x4[2] & var41.x4[2];
22578     var45.x4[3] = var44.x4[3] & var41.x4[3];
22579     /* 8: mulhuw */
22580     var46.x4[0] = ((orc_uint32)((orc_uint16)var42.x4[0]) * (orc_uint32)((orc_uint16)var41.x4[0])) >> 16;
22581     var46.x4[1] = ((orc_uint32)((orc_uint16)var42.x4[1]) * (orc_uint32)((orc_uint16)var41.x4[1])) >> 16;
22582     var46.x4[2] = ((orc_uint32)((orc_uint16)var42.x4[2]) * (orc_uint32)((orc_uint16)var41.x4[2])) >> 16;
22583     var46.x4[3] = ((orc_uint32)((orc_uint16)var42.x4[3]) * (orc_uint32)((orc_uint16)var41.x4[3])) >> 16;
22584     /* 9: subl */
22585     var47.x2[0] = var46.x2[0] - var45.x2[0];
22586     var47.x2[1] = var46.x2[1] - var45.x2[1];
22587     /* 10: shrul */
22588     var48.x2[0] = ((orc_uint32)var41.x2[0]) >> 16;
22589     var48.x2[1] = ((orc_uint32)var41.x2[1]) >> 16;
22590     /* 11: mulll */
22591     var49.x2[0] = (var43.x2[0] * var48.x2[0]) & 0xffffffff;
22592     var49.x2[1] = (var43.x2[1] * var48.x2[1]) & 0xffffffff;
22593     /* 12: addl */
22594     var50.x2[0] = var47.x2[0] + var49.x2[0];
22595     var50.x2[1] = var47.x2[1] + var49.x2[1];
22596     /* 13: convssslw */
22597     var40.x2[0] = ORC_CLAMP_SW(var50.x2[0]);
22598     var40.x2[1] = ORC_CLAMP_SW(var50.x2[1]);
22599     /* 14: storel */
22600     ptr0[i] = var40;
22601   }
22602
22603 }
22604
22605 #else
22606 static void
22607 _backup_pa_volume_s16ne_orc_2ch (OrcExecutor * ORC_RESTRICT ex)
22608 {
22609   int i;
22610   int n = ex->n;
22611   orc_union32 * ORC_RESTRICT ptr0;
22612   orc_union32 var37;
22613   orc_union32 var38;
22614   orc_union64 var39;
22615   orc_union32 var40;
22616   orc_union64 var41;
22617   orc_union64 var42;
22618   orc_union64 var43;
22619   orc_union64 var44;
22620   orc_union64 var45;
22621   orc_union64 var46;
22622   orc_union64 var47;
22623   orc_union64 var48;
22624   orc_union64 var49;
22625   orc_union64 var50;
22626
22627   ptr0 = (orc_union32 *)ex->arrays[0];
22628
22629     /* 0: loadpq */
22630     var41.i = (ex->params[24] & 0xffffffff) | ((orc_uint64)(ex->params[24 + (ORC_VAR_T1 - ORC_VAR_P1)]) << 32);
22631     /* 5: loadpw */
22632     var39.x4[0] = 0x00000000; /* 0 or 0f */
22633     var39.x4[1] = 0x00000000; /* 0 or 0f */
22634     var39.x4[2] = 0x00000000; /* 0 or 0f */
22635     var39.x4[3] = 0x00000000; /* 0 or 0f */
22636
22637   for (i = 0; i < n; i++) {
22638     /* 1: loadl */
22639     var37 = ptr0[i];
22640     /* 2: convuwl */
22641     var42.x2[0] = (orc_uint16)var37.x2[0];
22642     var42.x2[1] = (orc_uint16)var37.x2[1];
22643     /* 3: loadl */
22644     var38 = ptr0[i];
22645     /* 4: convswl */
22646     var43.x2[0] = var38.x2[0];
22647     var43.x2[1] = var38.x2[1];
22648     /* 6: cmpgtsw */
22649     var44.x4[0] = (var39.x4[0] > var42.x4[0]) ? (~0) : 0;
22650     var44.x4[1] = (var39.x4[1] > var42.x4[1]) ? (~0) : 0;
22651     var44.x4[2] = (var39.x4[2] > var42.x4[2]) ? (~0) : 0;
22652     var44.x4[3] = (var39.x4[3] > var42.x4[3]) ? (~0) : 0;
22653     /* 7: andw */
22654     var45.x4[0] = var44.x4[0] & var41.x4[0];
22655     var45.x4[1] = var44.x4[1] & var41.x4[1];
22656     var45.x4[2] = var44.x4[2] & var41.x4[2];
22657     var45.x4[3] = var44.x4[3] & var41.x4[3];
22658     /* 8: mulhuw */
22659     var46.x4[0] = ((orc_uint32)((orc_uint16)var42.x4[0]) * (orc_uint32)((orc_uint16)var41.x4[0])) >> 16;
22660     var46.x4[1] = ((orc_uint32)((orc_uint16)var42.x4[1]) * (orc_uint32)((orc_uint16)var41.x4[1])) >> 16;
22661     var46.x4[2] = ((orc_uint32)((orc_uint16)var42.x4[2]) * (orc_uint32)((orc_uint16)var41.x4[2])) >> 16;
22662     var46.x4[3] = ((orc_uint32)((orc_uint16)var42.x4[3]) * (orc_uint32)((orc_uint16)var41.x4[3])) >> 16;
22663     /* 9: subl */
22664     var47.x2[0] = var46.x2[0] - var45.x2[0];
22665     var47.x2[1] = var46.x2[1] - var45.x2[1];
22666     /* 10: shrul */
22667     var48.x2[0] = ((orc_uint32)var41.x2[0]) >> 16;
22668     var48.x2[1] = ((orc_uint32)var41.x2[1]) >> 16;
22669     /* 11: mulll */
22670     var49.x2[0] = (var43.x2[0] * var48.x2[0]) & 0xffffffff;
22671     var49.x2[1] = (var43.x2[1] * var48.x2[1]) & 0xffffffff;
22672     /* 12: addl */
22673     var50.x2[0] = var47.x2[0] + var49.x2[0];
22674     var50.x2[1] = var47.x2[1] + var49.x2[1];
22675     /* 13: convssslw */
22676     var40.x2[0] = ORC_CLAMP_SW(var50.x2[0]);
22677     var40.x2[1] = ORC_CLAMP_SW(var50.x2[1]);
22678     /* 14: storel */
22679     ptr0[i] = var40;
22680   }
22681
22682 }
22683
22684 void
22685 pa_volume_s16ne_orc_2ch (int16_t * d1, orc_int64 p1, int n)
22686 {
22687   OrcExecutor _ex, *ex = &_ex;
22688   static int p_inited = 0;
22689   static OrcProgram *p = 0;
22690   void (*func) (OrcExecutor *);
22691
22692   if (!p_inited) {
22693     orc_once_mutex_lock ();
22694     if (!p_inited) {
22695       OrcCompileResult result;
22696
22697       p = orc_program_new ();
22698       orc_program_set_name (p, "pa_volume_s16ne_orc_2ch");
22699       orc_program_set_backup_function (p, _backup_pa_volume_s16ne_orc_2ch);
22700       orc_program_add_destination (p, 4, "d1");
22701       orc_program_add_constant (p, 4, 0x00000000, "c1");
22702       orc_program_add_constant (p, 4, 0x00000010, "c2");
22703       orc_program_add_parameter_int64 (p, 8, "p1");
22704       orc_program_add_temporary (p, 8, "t1");
22705       orc_program_add_temporary (p, 8, "t2");
22706       orc_program_add_temporary (p, 8, "t3");
22707       orc_program_add_temporary (p, 8, "t4");
22708       orc_program_add_temporary (p, 8, "t5");
22709
22710       orc_program_append_2 (p, "loadpq", 0, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1, ORC_VAR_D1);
22711       orc_program_append_2 (p, "convuwl", 1, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_D1);
22712       orc_program_append_2 (p, "convswl", 1, ORC_VAR_T3, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_D1);
22713       orc_program_append_2 (p, "cmpgtsw", 2, ORC_VAR_T5, ORC_VAR_C1, ORC_VAR_T2, ORC_VAR_D1);
22714       orc_program_append_2 (p, "andw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T1, ORC_VAR_D1);
22715       orc_program_append_2 (p, "mulhuw", 2, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1);
22716       orc_program_append_2 (p, "subl", 1, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_T5, ORC_VAR_D1);
22717       orc_program_append_2 (p, "shrul", 1, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2, ORC_VAR_D1);
22718       orc_program_append_2 (p, "mulll", 1, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_D1);
22719       orc_program_append_2 (p, "addl", 1, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1);
22720       orc_program_append_2 (p, "convssslw", 1, ORC_VAR_D1, ORC_VAR_T4, ORC_VAR_D1, ORC_VAR_D1);
22721
22722       result = orc_program_compile (p);
22723     }
22724     p_inited = TRUE;
22725     orc_once_mutex_unlock ();
22726   }
22727   ex->program = p;
22728
22729   ex->n = n;
22730   ex->arrays[ORC_VAR_D1] = d1;
22731   {
22732     orc_union64 tmp;
22733     tmp.i = p1;
22734     ex->params[ORC_VAR_P1] = tmp.x2[0];
22735     ex->params[ORC_VAR_T1] = tmp.x2[1];
22736   }
22737
22738   func = p->code_exec;
22739   func (ex);
22740 }
22741 #endif
22742
22743