Initial commit to Gerrit
[profile/ivi/orc.git] / testsuite / orcc / orc_test.c
1
2 /* autogenerated from test.orc */
3
4 #include <orc/orc.h>
5 #include <orc-test/orctest.h>
6 #include <stdio.h>
7 #include <string.h>
8 #include <stdlib.h>
9 #include <math.h>
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 /* begin Orc C target preamble */
59 #define ORC_CLAMP(x,a,b) ((x)<(a) ? (a) : ((x)>(b) ? (b) : (x)))
60 #define ORC_ABS(a) ((a)<0 ? -(a) : (a))
61 #define ORC_MIN(a,b) ((a)<(b) ? (a) : (b))
62 #define ORC_MAX(a,b) ((a)>(b) ? (a) : (b))
63 #define ORC_SB_MAX 127
64 #define ORC_SB_MIN (-1-ORC_SB_MAX)
65 #define ORC_UB_MAX 255
66 #define ORC_UB_MIN 0
67 #define ORC_SW_MAX 32767
68 #define ORC_SW_MIN (-1-ORC_SW_MAX)
69 #define ORC_UW_MAX 65535
70 #define ORC_UW_MIN 0
71 #define ORC_SL_MAX 2147483647
72 #define ORC_SL_MIN (-1-ORC_SL_MAX)
73 #define ORC_UL_MAX 4294967295U
74 #define ORC_UL_MIN 0
75 #define ORC_CLAMP_SB(x) ORC_CLAMP(x,ORC_SB_MIN,ORC_SB_MAX)
76 #define ORC_CLAMP_UB(x) ORC_CLAMP(x,ORC_UB_MIN,ORC_UB_MAX)
77 #define ORC_CLAMP_SW(x) ORC_CLAMP(x,ORC_SW_MIN,ORC_SW_MAX)
78 #define ORC_CLAMP_UW(x) ORC_CLAMP(x,ORC_UW_MIN,ORC_UW_MAX)
79 #define ORC_CLAMP_SL(x) ORC_CLAMP(x,ORC_SL_MIN,ORC_SL_MAX)
80 #define ORC_CLAMP_UL(x) ORC_CLAMP(x,ORC_UL_MIN,ORC_UL_MAX)
81 #define ORC_SWAP_W(x) ((((x)&0xff)<<8) | (((x)&0xff00)>>8))
82 #define ORC_SWAP_L(x) ((((x)&0xff)<<24) | (((x)&0xff00)<<8) | (((x)&0xff0000)>>8) | (((x)&0xff000000)>>24))
83 #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))
84 #define ORC_PTR_OFFSET(ptr,offset) ((void *)(((unsigned char *)(ptr)) + (offset)))
85 #define ORC_DENORMAL(x) ((x) & ((((x)&0x7f800000) == 0) ? 0xff800000 : 0xffffffff))
86 #define ORC_ISNAN(x) ((((x)&0x7f800000) == 0x7f800000) && (((x)&0x007fffff) != 0))
87 #define ORC_DENORMAL_DOUBLE(x) ((x) & ((((x)&ORC_UINT64_C(0x7ff0000000000000)) == 0) ? ORC_UINT64_C(0xfff0000000000000) : ORC_UINT64_C(0xffffffffffffffff)))
88 #define ORC_ISNAN_DOUBLE(x) ((((x)&ORC_UINT64_C(0x7ff0000000000000)) == ORC_UINT64_C(0x7ff0000000000000)) && (((x)&ORC_UINT64_C(0x000fffffffffffff)) != 0))
89 #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
90 #define ORC_RESTRICT restrict
91 #elif defined(__GNUC__) && __GNUC__ >= 4
92 #define ORC_RESTRICT __restrict__
93 #else
94 #define ORC_RESTRICT
95 #endif
96 /* end Orc C target preamble */
97
98
99 /* orc_add2_rshift_add_s16_22_op */
100 static void
101 _backup_orc_add2_rshift_add_s16_22_op (OrcExecutor * ORC_RESTRICT ex)
102 {
103   int i;
104   int n = ex->n;
105   orc_union16 * ORC_RESTRICT ptr0;
106   const orc_union16 * ORC_RESTRICT ptr4;
107   const orc_union16 * ORC_RESTRICT ptr5;
108   const orc_union16 * ORC_RESTRICT ptr6;
109   orc_union16 var33;
110   orc_union16 var34;
111   orc_union16 var35;
112   orc_union16 var36;
113   orc_union16 var37;
114   orc_union16 var38;
115   orc_union16 var39;
116   orc_union16 var40;
117
118   ptr0 = (orc_union16 *)ex->arrays[0];
119   ptr4 = (orc_union16 *)ex->arrays[4];
120   ptr5 = (orc_union16 *)ex->arrays[5];
121   ptr6 = (orc_union16 *)ex->arrays[6];
122
123     /* 3: loadpw */
124     var35.i = 0x00000002; /* 2 or 9.88131e-324f */
125
126   for (i = 0; i < n; i++) {
127     /* 0: loadw */
128     var33 = ptr5[i];
129     /* 1: loadw */
130     var34 = ptr6[i];
131     /* 2: addw */
132     var38.i = var33.i + var34.i;
133     /* 4: addw */
134     var39.i = var38.i + var35.i;
135     /* 5: shrsw */
136     var40.i = var39.i >> 2;
137     /* 6: loadw */
138     var36 = ptr4[i];
139     /* 7: addw */
140     var37.i = var36.i + var40.i;
141     /* 8: storew */
142     ptr0[i] = var37;
143   }
144
145 }
146
147 /* orc_add2_rshift_add_s16_22 */
148 static void
149 _backup_orc_add2_rshift_add_s16_22 (OrcExecutor * ORC_RESTRICT ex)
150 {
151   int i;
152   int n = ex->n;
153   orc_union16 * ORC_RESTRICT ptr0;
154   const orc_union16 * ORC_RESTRICT ptr4;
155   const orc_union16 * ORC_RESTRICT ptr5;
156   orc_union16 var33;
157   orc_union16 var34;
158   orc_union16 var35;
159   orc_union16 var36;
160   orc_union16 var37;
161   orc_union16 var38;
162   orc_union16 var39;
163   orc_union16 var40;
164
165   ptr0 = (orc_union16 *)ex->arrays[0];
166   ptr4 = (orc_union16 *)ex->arrays[4];
167   ptr5 = (orc_union16 *)ex->arrays[5];
168
169     /* 3: loadpw */
170     var35.i = 0x00000002; /* 2 or 9.88131e-324f */
171
172   for (i = 0; i < n; i++) {
173     /* 0: loadw */
174     var33 = ptr4[i];
175     /* 1: loadw */
176     var34 = ptr5[i];
177     /* 2: addw */
178     var38.i = var33.i + var34.i;
179     /* 4: addw */
180     var39.i = var38.i + var35.i;
181     /* 5: shrsw */
182     var40.i = var39.i >> 2;
183     /* 6: loadw */
184     var36 = ptr0[i];
185     /* 7: addw */
186     var37.i = var36.i + var40.i;
187     /* 8: storew */
188     ptr0[i] = var37;
189   }
190
191 }
192
193 /* orc_add2_rshift_sub_s16_22_op */
194 static void
195 _backup_orc_add2_rshift_sub_s16_22_op (OrcExecutor * ORC_RESTRICT ex)
196 {
197   int i;
198   int n = ex->n;
199   orc_union16 * ORC_RESTRICT ptr0;
200   const orc_union16 * ORC_RESTRICT ptr4;
201   const orc_union16 * ORC_RESTRICT ptr5;
202   const orc_union16 * ORC_RESTRICT ptr6;
203   orc_union16 var33;
204   orc_union16 var34;
205   orc_union16 var35;
206   orc_union16 var36;
207   orc_union16 var37;
208   orc_union16 var38;
209   orc_union16 var39;
210   orc_union16 var40;
211
212   ptr0 = (orc_union16 *)ex->arrays[0];
213   ptr4 = (orc_union16 *)ex->arrays[4];
214   ptr5 = (orc_union16 *)ex->arrays[5];
215   ptr6 = (orc_union16 *)ex->arrays[6];
216
217     /* 3: loadpw */
218     var35.i = 0x00000002; /* 2 or 9.88131e-324f */
219
220   for (i = 0; i < n; i++) {
221     /* 0: loadw */
222     var33 = ptr5[i];
223     /* 1: loadw */
224     var34 = ptr6[i];
225     /* 2: addw */
226     var38.i = var33.i + var34.i;
227     /* 4: addw */
228     var39.i = var38.i + var35.i;
229     /* 5: shrsw */
230     var40.i = var39.i >> 2;
231     /* 6: loadw */
232     var36 = ptr4[i];
233     /* 7: subw */
234     var37.i = var36.i - var40.i;
235     /* 8: storew */
236     ptr0[i] = var37;
237   }
238
239 }
240
241 /* orc_add2_rshift_sub_s16_22 */
242 static void
243 _backup_orc_add2_rshift_sub_s16_22 (OrcExecutor * ORC_RESTRICT ex)
244 {
245   int i;
246   int n = ex->n;
247   orc_union16 * ORC_RESTRICT ptr0;
248   const orc_union16 * ORC_RESTRICT ptr4;
249   const orc_union16 * ORC_RESTRICT ptr5;
250   orc_union16 var33;
251   orc_union16 var34;
252   orc_union16 var35;
253   orc_union16 var36;
254   orc_union16 var37;
255   orc_union16 var38;
256   orc_union16 var39;
257   orc_union16 var40;
258
259   ptr0 = (orc_union16 *)ex->arrays[0];
260   ptr4 = (orc_union16 *)ex->arrays[4];
261   ptr5 = (orc_union16 *)ex->arrays[5];
262
263     /* 3: loadpw */
264     var35.i = 0x00000002; /* 2 or 9.88131e-324f */
265
266   for (i = 0; i < n; i++) {
267     /* 0: loadw */
268     var33 = ptr4[i];
269     /* 1: loadw */
270     var34 = ptr5[i];
271     /* 2: addw */
272     var38.i = var33.i + var34.i;
273     /* 4: addw */
274     var39.i = var38.i + var35.i;
275     /* 5: shrsw */
276     var40.i = var39.i >> 2;
277     /* 6: loadw */
278     var36 = ptr0[i];
279     /* 7: subw */
280     var37.i = var36.i - var40.i;
281     /* 8: storew */
282     ptr0[i] = var37;
283   }
284
285 }
286
287 /* orc_add2_rshift_add_s16_11_op */
288 static void
289 _backup_orc_add2_rshift_add_s16_11_op (OrcExecutor * ORC_RESTRICT ex)
290 {
291   int i;
292   int n = ex->n;
293   orc_union16 * ORC_RESTRICT ptr0;
294   const orc_union16 * ORC_RESTRICT ptr4;
295   const orc_union16 * ORC_RESTRICT ptr5;
296   const orc_union16 * ORC_RESTRICT ptr6;
297   orc_union16 var33;
298   orc_union16 var34;
299   orc_union16 var35;
300   orc_union16 var36;
301   orc_union16 var37;
302
303   ptr0 = (orc_union16 *)ex->arrays[0];
304   ptr4 = (orc_union16 *)ex->arrays[4];
305   ptr5 = (orc_union16 *)ex->arrays[5];
306   ptr6 = (orc_union16 *)ex->arrays[6];
307
308
309   for (i = 0; i < n; i++) {
310     /* 0: loadw */
311     var33 = ptr5[i];
312     /* 1: loadw */
313     var34 = ptr6[i];
314     /* 2: avgsw */
315     var37.i = (var33.i + var34.i + 1)>>1;
316     /* 3: loadw */
317     var35 = ptr4[i];
318     /* 4: addw */
319     var36.i = var35.i + var37.i;
320     /* 5: storew */
321     ptr0[i] = var36;
322   }
323
324 }
325
326 /* orc_add2_rshift_add_s16_11 */
327 static void
328 _backup_orc_add2_rshift_add_s16_11 (OrcExecutor * ORC_RESTRICT ex)
329 {
330   int i;
331   int n = ex->n;
332   orc_union16 * ORC_RESTRICT ptr0;
333   const orc_union16 * ORC_RESTRICT ptr4;
334   const orc_union16 * ORC_RESTRICT ptr5;
335   orc_union16 var33;
336   orc_union16 var34;
337   orc_union16 var35;
338   orc_union16 var36;
339   orc_union16 var37;
340
341   ptr0 = (orc_union16 *)ex->arrays[0];
342   ptr4 = (orc_union16 *)ex->arrays[4];
343   ptr5 = (orc_union16 *)ex->arrays[5];
344
345
346   for (i = 0; i < n; i++) {
347     /* 0: loadw */
348     var33 = ptr4[i];
349     /* 1: loadw */
350     var34 = ptr5[i];
351     /* 2: avgsw */
352     var37.i = (var33.i + var34.i + 1)>>1;
353     /* 3: loadw */
354     var35 = ptr0[i];
355     /* 4: addw */
356     var36.i = var35.i + var37.i;
357     /* 5: storew */
358     ptr0[i] = var36;
359   }
360
361 }
362
363 /* orc_add2_rshift_sub_s16_11_op */
364 static void
365 _backup_orc_add2_rshift_sub_s16_11_op (OrcExecutor * ORC_RESTRICT ex)
366 {
367   int i;
368   int n = ex->n;
369   orc_union16 * ORC_RESTRICT ptr0;
370   const orc_union16 * ORC_RESTRICT ptr4;
371   const orc_union16 * ORC_RESTRICT ptr5;
372   const orc_union16 * ORC_RESTRICT ptr6;
373   orc_union16 var33;
374   orc_union16 var34;
375   orc_union16 var35;
376   orc_union16 var36;
377   orc_union16 var37;
378
379   ptr0 = (orc_union16 *)ex->arrays[0];
380   ptr4 = (orc_union16 *)ex->arrays[4];
381   ptr5 = (orc_union16 *)ex->arrays[5];
382   ptr6 = (orc_union16 *)ex->arrays[6];
383
384
385   for (i = 0; i < n; i++) {
386     /* 0: loadw */
387     var33 = ptr5[i];
388     /* 1: loadw */
389     var34 = ptr6[i];
390     /* 2: avgsw */
391     var37.i = (var33.i + var34.i + 1)>>1;
392     /* 3: loadw */
393     var35 = ptr4[i];
394     /* 4: subw */
395     var36.i = var35.i - var37.i;
396     /* 5: storew */
397     ptr0[i] = var36;
398   }
399
400 }
401
402 /* orc_add2_rshift_sub_s16_11 */
403 static void
404 _backup_orc_add2_rshift_sub_s16_11 (OrcExecutor * ORC_RESTRICT ex)
405 {
406   int i;
407   int n = ex->n;
408   orc_union16 * ORC_RESTRICT ptr0;
409   const orc_union16 * ORC_RESTRICT ptr4;
410   const orc_union16 * ORC_RESTRICT ptr5;
411   orc_union16 var33;
412   orc_union16 var34;
413   orc_union16 var35;
414   orc_union16 var36;
415   orc_union16 var37;
416
417   ptr0 = (orc_union16 *)ex->arrays[0];
418   ptr4 = (orc_union16 *)ex->arrays[4];
419   ptr5 = (orc_union16 *)ex->arrays[5];
420
421
422   for (i = 0; i < n; i++) {
423     /* 0: loadw */
424     var33 = ptr4[i];
425     /* 1: loadw */
426     var34 = ptr5[i];
427     /* 2: avgsw */
428     var37.i = (var33.i + var34.i + 1)>>1;
429     /* 3: loadw */
430     var35 = ptr0[i];
431     /* 4: subw */
432     var36.i = var35.i - var37.i;
433     /* 5: storew */
434     ptr0[i] = var36;
435   }
436
437 }
438
439 /* orc_add_const_rshift_s16_11 */
440 static void
441 _backup_orc_add_const_rshift_s16_11 (OrcExecutor * ORC_RESTRICT ex)
442 {
443   int i;
444   int n = ex->n;
445   orc_union16 * ORC_RESTRICT ptr0;
446   const orc_union16 * ORC_RESTRICT ptr4;
447   orc_union16 var33;
448   orc_union16 var34;
449   orc_union16 var35;
450   orc_union16 var36;
451
452   ptr0 = (orc_union16 *)ex->arrays[0];
453   ptr4 = (orc_union16 *)ex->arrays[4];
454
455     /* 1: loadpw */
456     var34.i = 0x00000001; /* 1 or 4.94066e-324f */
457
458   for (i = 0; i < n; i++) {
459     /* 0: loadw */
460     var33 = ptr4[i];
461     /* 2: addw */
462     var36.i = var33.i + var34.i;
463     /* 3: shrsw */
464     var35.i = var36.i >> 1;
465     /* 4: storew */
466     ptr0[i] = var35;
467   }
468
469 }
470
471 /* orc_add_const_rshift_s16 */
472 static void
473 _backup_orc_add_const_rshift_s16 (OrcExecutor * ORC_RESTRICT ex)
474 {
475   int i;
476   int n = ex->n;
477   orc_union16 * ORC_RESTRICT ptr0;
478   orc_union16 var33;
479   orc_union16 var34;
480   orc_union16 var35;
481   orc_union16 var36;
482
483   ptr0 = (orc_union16 *)ex->arrays[0];
484
485     /* 1: loadpw */
486     var34.i = ex->params[24];
487
488   for (i = 0; i < n; i++) {
489     /* 0: loadw */
490     var33 = ptr0[i];
491     /* 2: addw */
492     var36.i = var33.i + var34.i;
493     /* 3: shrsw */
494     var35.i = var36.i >> ex->params[25];
495     /* 4: storew */
496     ptr0[i] = var35;
497   }
498
499 }
500
501 /* orc_add_s16 */
502 static void
503 _backup_orc_add_s16 (OrcExecutor * ORC_RESTRICT ex)
504 {
505   int i;
506   int n = ex->n;
507   orc_union16 * ORC_RESTRICT ptr0;
508   const orc_union16 * ORC_RESTRICT ptr4;
509   const orc_union16 * ORC_RESTRICT ptr5;
510   orc_union16 var32;
511   orc_union16 var33;
512   orc_union16 var34;
513
514   ptr0 = (orc_union16 *)ex->arrays[0];
515   ptr4 = (orc_union16 *)ex->arrays[4];
516   ptr5 = (orc_union16 *)ex->arrays[5];
517
518
519   for (i = 0; i < n; i++) {
520     /* 0: loadw */
521     var32 = ptr4[i];
522     /* 1: loadw */
523     var33 = ptr5[i];
524     /* 2: addw */
525     var34.i = var32.i + var33.i;
526     /* 3: storew */
527     ptr0[i] = var34;
528   }
529
530 }
531
532 /* orc_add_s16_2d */
533 static void
534 _backup_orc_add_s16_2d (OrcExecutor * ORC_RESTRICT ex)
535 {
536   int i;
537   int j;
538   int n = ex->n;
539   int m = ex->params[ORC_VAR_A1];
540   orc_union16 * ORC_RESTRICT ptr0;
541   const orc_union16 * ORC_RESTRICT ptr4;
542   orc_union16 var32;
543   orc_union16 var33;
544   orc_union16 var34;
545
546   for (j = 0; j < m; j++) {
547     ptr0 = ORC_PTR_OFFSET(ex->arrays[0], ex->params[0] * j);
548     ptr4 = ORC_PTR_OFFSET(ex->arrays[4], ex->params[4] * j);
549
550
551     for (i = 0; i < n; i++) {
552       /* 0: loadw */
553       var32 = ptr0[i];
554       /* 1: loadw */
555       var33 = ptr4[i];
556       /* 2: addw */
557       var34.i = var32.i + var33.i;
558       /* 3: storew */
559       ptr0[i] = var34;
560     }
561   }
562
563 }
564
565 /* orc_addc_rshift_s16 */
566 static void
567 _backup_orc_addc_rshift_s16 (OrcExecutor * ORC_RESTRICT ex)
568 {
569   int i;
570   int n = ex->n;
571   orc_union16 * ORC_RESTRICT ptr0;
572   const orc_union16 * ORC_RESTRICT ptr4;
573   const orc_union16 * ORC_RESTRICT ptr5;
574   orc_union16 var33;
575   orc_union16 var34;
576   orc_union16 var35;
577   orc_union16 var36;
578
579   ptr0 = (orc_union16 *)ex->arrays[0];
580   ptr4 = (orc_union16 *)ex->arrays[4];
581   ptr5 = (orc_union16 *)ex->arrays[5];
582
583
584   for (i = 0; i < n; i++) {
585     /* 0: loadw */
586     var33 = ptr4[i];
587     /* 1: loadw */
588     var34 = ptr5[i];
589     /* 2: addw */
590     var36.i = var33.i + var34.i;
591     /* 3: shrsw */
592     var35.i = var36.i >> ex->params[24];
593     /* 4: storew */
594     ptr0[i] = var35;
595   }
596
597 }
598
599 /* orc_lshift1_s16 */
600 static void
601 _backup_orc_lshift1_s16 (OrcExecutor * ORC_RESTRICT ex)
602 {
603   int i;
604   int n = ex->n;
605   orc_union16 * ORC_RESTRICT ptr0;
606   const orc_union16 * ORC_RESTRICT ptr4;
607   orc_union16 var32;
608   orc_union16 var33;
609
610   ptr0 = (orc_union16 *)ex->arrays[0];
611   ptr4 = (orc_union16 *)ex->arrays[4];
612
613
614   for (i = 0; i < n; i++) {
615     /* 0: loadw */
616     var32 = ptr4[i];
617     /* 1: shlw */
618     var33.i = var32.i << 1;
619     /* 2: storew */
620     ptr0[i] = var33;
621   }
622
623 }
624
625 /* orc_lshift2_s16 */
626 static void
627 _backup_orc_lshift2_s16 (OrcExecutor * ORC_RESTRICT ex)
628 {
629   int i;
630   int n = ex->n;
631   orc_union16 * ORC_RESTRICT ptr0;
632   const orc_union16 * ORC_RESTRICT ptr4;
633   orc_union16 var32;
634   orc_union16 var33;
635
636   ptr0 = (orc_union16 *)ex->arrays[0];
637   ptr4 = (orc_union16 *)ex->arrays[4];
638
639
640   for (i = 0; i < n; i++) {
641     /* 0: loadw */
642     var32 = ptr4[i];
643     /* 1: shlw */
644     var33.i = var32.i << 2;
645     /* 2: storew */
646     ptr0[i] = var33;
647   }
648
649 }
650
651 /* orc_lshift_s16_ip */
652 static void
653 _backup_orc_lshift_s16_ip (OrcExecutor * ORC_RESTRICT ex)
654 {
655   int i;
656   int n = ex->n;
657   orc_union16 * ORC_RESTRICT ptr0;
658   orc_union16 var32;
659   orc_union16 var33;
660
661   ptr0 = (orc_union16 *)ex->arrays[0];
662
663
664   for (i = 0; i < n; i++) {
665     /* 0: loadw */
666     var32 = ptr0[i];
667     /* 1: shlw */
668     var33.i = var32.i << ex->params[24];
669     /* 2: storew */
670     ptr0[i] = var33;
671   }
672
673 }
674
675 /* orc_mas2_add_s16_op */
676 static void
677 _backup_orc_mas2_add_s16_op (OrcExecutor * ORC_RESTRICT ex)
678 {
679   int i;
680   int n = ex->n;
681   orc_union16 * ORC_RESTRICT ptr0;
682   const orc_union16 * ORC_RESTRICT ptr4;
683   const orc_union16 * ORC_RESTRICT ptr5;
684   const orc_union16 * ORC_RESTRICT ptr6;
685   orc_union16 var34;
686   orc_union16 var35;
687   orc_union16 var36;
688   orc_union32 var37;
689   orc_union16 var38;
690   orc_union16 var39;
691   orc_union16 var40;
692   orc_union32 var41;
693   orc_union32 var42;
694   orc_union32 var43;
695   orc_union16 var44;
696
697   ptr0 = (orc_union16 *)ex->arrays[0];
698   ptr4 = (orc_union16 *)ex->arrays[4];
699   ptr5 = (orc_union16 *)ex->arrays[5];
700   ptr6 = (orc_union16 *)ex->arrays[6];
701
702     /* 3: loadpw */
703     var36.i = ex->params[24];
704     /* 5: loadpl */
705     var37.i = ex->params[25];
706
707   for (i = 0; i < n; i++) {
708     /* 0: loadw */
709     var34 = ptr5[i];
710     /* 1: loadw */
711     var35 = ptr6[i];
712     /* 2: addw */
713     var40.i = var34.i + var35.i;
714     /* 4: mulswl */
715     var41.i = var40.i * var36.i;
716     /* 6: addl */
717     var42.i = var41.i + var37.i;
718     /* 7: shrsl */
719     var43.i = var42.i >> ex->params[26];
720     /* 8: convlw */
721     var44.i = var43.i;
722     /* 9: loadw */
723     var38 = ptr4[i];
724     /* 10: addw */
725     var39.i = var38.i + var44.i;
726     /* 11: storew */
727     ptr0[i] = var39;
728   }
729
730 }
731
732 /* orc_mas2_add_s16_ip */
733 static void
734 _backup_orc_mas2_add_s16_ip (OrcExecutor * ORC_RESTRICT ex)
735 {
736   int i;
737   int n = ex->n;
738   orc_union16 * ORC_RESTRICT ptr0;
739   const orc_union16 * ORC_RESTRICT ptr4;
740   const orc_union16 * ORC_RESTRICT ptr5;
741   orc_union16 var34;
742   orc_union16 var35;
743   orc_union16 var36;
744   orc_union32 var37;
745   orc_union16 var38;
746   orc_union16 var39;
747   orc_union16 var40;
748   orc_union32 var41;
749   orc_union32 var42;
750   orc_union32 var43;
751   orc_union16 var44;
752
753   ptr0 = (orc_union16 *)ex->arrays[0];
754   ptr4 = (orc_union16 *)ex->arrays[4];
755   ptr5 = (orc_union16 *)ex->arrays[5];
756
757     /* 3: loadpw */
758     var36.i = ex->params[24];
759     /* 5: loadpl */
760     var37.i = ex->params[25];
761
762   for (i = 0; i < n; i++) {
763     /* 0: loadw */
764     var34 = ptr4[i];
765     /* 1: loadw */
766     var35 = ptr5[i];
767     /* 2: addw */
768     var40.i = var34.i + var35.i;
769     /* 4: mulswl */
770     var41.i = var40.i * var36.i;
771     /* 6: addl */
772     var42.i = var41.i + var37.i;
773     /* 7: shrsl */
774     var43.i = var42.i >> ex->params[26];
775     /* 8: convlw */
776     var44.i = var43.i;
777     /* 9: loadw */
778     var38 = ptr0[i];
779     /* 10: addw */
780     var39.i = var38.i + var44.i;
781     /* 11: storew */
782     ptr0[i] = var39;
783   }
784
785 }
786
787 /* orc_mas2_sub_s16_op */
788 static void
789 _backup_orc_mas2_sub_s16_op (OrcExecutor * ORC_RESTRICT ex)
790 {
791   int i;
792   int n = ex->n;
793   orc_union16 * ORC_RESTRICT ptr0;
794   const orc_union16 * ORC_RESTRICT ptr4;
795   const orc_union16 * ORC_RESTRICT ptr5;
796   const orc_union16 * ORC_RESTRICT ptr6;
797   orc_union16 var34;
798   orc_union16 var35;
799   orc_union16 var36;
800   orc_union32 var37;
801   orc_union16 var38;
802   orc_union16 var39;
803   orc_union16 var40;
804   orc_union32 var41;
805   orc_union32 var42;
806   orc_union32 var43;
807   orc_union16 var44;
808
809   ptr0 = (orc_union16 *)ex->arrays[0];
810   ptr4 = (orc_union16 *)ex->arrays[4];
811   ptr5 = (orc_union16 *)ex->arrays[5];
812   ptr6 = (orc_union16 *)ex->arrays[6];
813
814     /* 3: loadpw */
815     var36.i = ex->params[24];
816     /* 5: loadpl */
817     var37.i = ex->params[25];
818
819   for (i = 0; i < n; i++) {
820     /* 0: loadw */
821     var34 = ptr5[i];
822     /* 1: loadw */
823     var35 = ptr6[i];
824     /* 2: addw */
825     var40.i = var34.i + var35.i;
826     /* 4: mulswl */
827     var41.i = var40.i * var36.i;
828     /* 6: addl */
829     var42.i = var41.i + var37.i;
830     /* 7: shrsl */
831     var43.i = var42.i >> ex->params[26];
832     /* 8: convlw */
833     var44.i = var43.i;
834     /* 9: loadw */
835     var38 = ptr4[i];
836     /* 10: subw */
837     var39.i = var38.i - var44.i;
838     /* 11: storew */
839     ptr0[i] = var39;
840   }
841
842 }
843
844 /* orc_mas2_sub_s16_ip */
845 static void
846 _backup_orc_mas2_sub_s16_ip (OrcExecutor * ORC_RESTRICT ex)
847 {
848   int i;
849   int n = ex->n;
850   orc_union16 * ORC_RESTRICT ptr0;
851   const orc_union16 * ORC_RESTRICT ptr4;
852   const orc_union16 * ORC_RESTRICT ptr5;
853   orc_union16 var34;
854   orc_union16 var35;
855   orc_union16 var36;
856   orc_union32 var37;
857   orc_union16 var38;
858   orc_union16 var39;
859   orc_union16 var40;
860   orc_union32 var41;
861   orc_union32 var42;
862   orc_union32 var43;
863   orc_union16 var44;
864
865   ptr0 = (orc_union16 *)ex->arrays[0];
866   ptr4 = (orc_union16 *)ex->arrays[4];
867   ptr5 = (orc_union16 *)ex->arrays[5];
868
869     /* 3: loadpw */
870     var36.i = ex->params[24];
871     /* 5: loadpl */
872     var37.i = ex->params[25];
873
874   for (i = 0; i < n; i++) {
875     /* 0: loadw */
876     var34 = ptr4[i];
877     /* 1: loadw */
878     var35 = ptr5[i];
879     /* 2: addw */
880     var40.i = var34.i + var35.i;
881     /* 4: mulswl */
882     var41.i = var40.i * var36.i;
883     /* 6: addl */
884     var42.i = var41.i + var37.i;
885     /* 7: shrsl */
886     var43.i = var42.i >> ex->params[26];
887     /* 8: convlw */
888     var44.i = var43.i;
889     /* 9: loadw */
890     var38 = ptr0[i];
891     /* 10: subw */
892     var39.i = var38.i - var44.i;
893     /* 11: storew */
894     ptr0[i] = var39;
895   }
896
897 }
898
899 /* orc_mas4_across_add_s16_1991_op */
900 static void
901 _backup_orc_mas4_across_add_s16_1991_op (OrcExecutor * ORC_RESTRICT ex)
902 {
903   int i;
904   int n = ex->n;
905   orc_union16 * ORC_RESTRICT ptr0;
906   const orc_union16 * ORC_RESTRICT ptr4;
907   const orc_union16 * ORC_RESTRICT ptr5;
908   const orc_union16 * ORC_RESTRICT ptr6;
909   const orc_union16 * ORC_RESTRICT ptr7;
910   const orc_union16 * ORC_RESTRICT ptr8;
911   orc_union16 var36;
912   orc_union16 var37;
913   orc_union16 var38;
914   orc_union16 var39;
915   orc_union16 var40;
916   orc_union32 var41;
917   orc_union16 var42;
918   orc_union16 var43;
919   orc_union16 var44;
920   orc_union32 var45;
921   orc_union16 var46;
922   orc_union32 var47;
923   orc_union32 var48;
924   orc_union32 var49;
925   orc_union32 var50;
926   orc_union16 var51;
927
928   ptr0 = (orc_union16 *)ex->arrays[0];
929   ptr4 = (orc_union16 *)ex->arrays[4];
930   ptr5 = (orc_union16 *)ex->arrays[5];
931   ptr6 = (orc_union16 *)ex->arrays[6];
932   ptr7 = (orc_union16 *)ex->arrays[7];
933   ptr8 = (orc_union16 *)ex->arrays[8];
934
935     /* 3: loadpw */
936     var38.i = 0x00000009; /* 9 or 4.44659e-323f */
937     /* 10: loadpl */
938     var41.i = ex->params[24];
939
940   for (i = 0; i < n; i++) {
941     /* 0: loadw */
942     var36 = ptr6[i];
943     /* 1: loadw */
944     var37 = ptr7[i];
945     /* 2: addw */
946     var44.i = var36.i + var37.i;
947     /* 4: mulswl */
948     var45.i = var44.i * var38.i;
949     /* 5: loadw */
950     var39 = ptr5[i];
951     /* 6: loadw */
952     var40 = ptr8[i];
953     /* 7: addw */
954     var46.i = var39.i + var40.i;
955     /* 8: convswl */
956     var47.i = var46.i;
957     /* 9: subl */
958     var48.i = var45.i - var47.i;
959     /* 11: addl */
960     var49.i = var48.i + var41.i;
961     /* 12: shrsl */
962     var50.i = var49.i >> ex->params[25];
963     /* 13: convlw */
964     var51.i = var50.i;
965     /* 14: loadw */
966     var42 = ptr4[i];
967     /* 15: addw */
968     var43.i = var42.i + var51.i;
969     /* 16: storew */
970     ptr0[i] = var43;
971   }
972
973 }
974
975 /* orc_mas4_across_add_s16_1991_ip */
976 static void
977 _backup_orc_mas4_across_add_s16_1991_ip (OrcExecutor * ORC_RESTRICT ex)
978 {
979   int i;
980   int n = ex->n;
981   orc_union16 * ORC_RESTRICT ptr0;
982   const orc_union16 * ORC_RESTRICT ptr4;
983   const orc_union16 * ORC_RESTRICT ptr5;
984   const orc_union16 * ORC_RESTRICT ptr6;
985   const orc_union16 * ORC_RESTRICT ptr7;
986   orc_union16 var36;
987   orc_union16 var37;
988   orc_union16 var38;
989   orc_union16 var39;
990   orc_union16 var40;
991   orc_union32 var41;
992   orc_union16 var42;
993   orc_union16 var43;
994   orc_union16 var44;
995   orc_union32 var45;
996   orc_union16 var46;
997   orc_union32 var47;
998   orc_union32 var48;
999   orc_union32 var49;
1000   orc_union32 var50;
1001   orc_union16 var51;
1002
1003   ptr0 = (orc_union16 *)ex->arrays[0];
1004   ptr4 = (orc_union16 *)ex->arrays[4];
1005   ptr5 = (orc_union16 *)ex->arrays[5];
1006   ptr6 = (orc_union16 *)ex->arrays[6];
1007   ptr7 = (orc_union16 *)ex->arrays[7];
1008
1009     /* 3: loadpw */
1010     var38.i = 0x00000009; /* 9 or 4.44659e-323f */
1011     /* 10: loadpl */
1012     var41.i = ex->params[24];
1013
1014   for (i = 0; i < n; i++) {
1015     /* 0: loadw */
1016     var36 = ptr5[i];
1017     /* 1: loadw */
1018     var37 = ptr6[i];
1019     /* 2: addw */
1020     var44.i = var36.i + var37.i;
1021     /* 4: mulswl */
1022     var45.i = var44.i * var38.i;
1023     /* 5: loadw */
1024     var39 = ptr4[i];
1025     /* 6: loadw */
1026     var40 = ptr7[i];
1027     /* 7: addw */
1028     var46.i = var39.i + var40.i;
1029     /* 8: convswl */
1030     var47.i = var46.i;
1031     /* 9: subl */
1032     var48.i = var45.i - var47.i;
1033     /* 11: addl */
1034     var49.i = var48.i + var41.i;
1035     /* 12: shrsl */
1036     var50.i = var49.i >> ex->params[25];
1037     /* 13: convlw */
1038     var51.i = var50.i;
1039     /* 14: loadw */
1040     var42 = ptr0[i];
1041     /* 15: addw */
1042     var43.i = var42.i + var51.i;
1043     /* 16: storew */
1044     ptr0[i] = var43;
1045   }
1046
1047 }
1048
1049 /* orc_mas4_across_sub_s16_1991_op */
1050 static void
1051 _backup_orc_mas4_across_sub_s16_1991_op (OrcExecutor * ORC_RESTRICT ex)
1052 {
1053   int i;
1054   int n = ex->n;
1055   orc_union16 * ORC_RESTRICT ptr0;
1056   const orc_union16 * ORC_RESTRICT ptr4;
1057   const orc_union16 * ORC_RESTRICT ptr5;
1058   const orc_union16 * ORC_RESTRICT ptr6;
1059   const orc_union16 * ORC_RESTRICT ptr7;
1060   const orc_union16 * ORC_RESTRICT ptr8;
1061   orc_union16 var36;
1062   orc_union16 var37;
1063   orc_union16 var38;
1064   orc_union16 var39;
1065   orc_union16 var40;
1066   orc_union32 var41;
1067   orc_union16 var42;
1068   orc_union16 var43;
1069   orc_union16 var44;
1070   orc_union32 var45;
1071   orc_union16 var46;
1072   orc_union32 var47;
1073   orc_union32 var48;
1074   orc_union32 var49;
1075   orc_union32 var50;
1076   orc_union16 var51;
1077
1078   ptr0 = (orc_union16 *)ex->arrays[0];
1079   ptr4 = (orc_union16 *)ex->arrays[4];
1080   ptr5 = (orc_union16 *)ex->arrays[5];
1081   ptr6 = (orc_union16 *)ex->arrays[6];
1082   ptr7 = (orc_union16 *)ex->arrays[7];
1083   ptr8 = (orc_union16 *)ex->arrays[8];
1084
1085     /* 3: loadpw */
1086     var38.i = 0x00000009; /* 9 or 4.44659e-323f */
1087     /* 10: loadpl */
1088     var41.i = ex->params[24];
1089
1090   for (i = 0; i < n; i++) {
1091     /* 0: loadw */
1092     var36 = ptr6[i];
1093     /* 1: loadw */
1094     var37 = ptr7[i];
1095     /* 2: addw */
1096     var44.i = var36.i + var37.i;
1097     /* 4: mulswl */
1098     var45.i = var44.i * var38.i;
1099     /* 5: loadw */
1100     var39 = ptr5[i];
1101     /* 6: loadw */
1102     var40 = ptr8[i];
1103     /* 7: addw */
1104     var46.i = var39.i + var40.i;
1105     /* 8: convswl */
1106     var47.i = var46.i;
1107     /* 9: subl */
1108     var48.i = var45.i - var47.i;
1109     /* 11: addl */
1110     var49.i = var48.i + var41.i;
1111     /* 12: shrsl */
1112     var50.i = var49.i >> ex->params[25];
1113     /* 13: convlw */
1114     var51.i = var50.i;
1115     /* 14: loadw */
1116     var42 = ptr4[i];
1117     /* 15: subw */
1118     var43.i = var42.i - var51.i;
1119     /* 16: storew */
1120     ptr0[i] = var43;
1121   }
1122
1123 }
1124
1125 /* orc_mas4_across_sub_s16_1991_ip */
1126 static void
1127 _backup_orc_mas4_across_sub_s16_1991_ip (OrcExecutor * ORC_RESTRICT ex)
1128 {
1129   int i;
1130   int n = ex->n;
1131   orc_union16 * ORC_RESTRICT ptr0;
1132   const orc_union16 * ORC_RESTRICT ptr4;
1133   const orc_union16 * ORC_RESTRICT ptr5;
1134   const orc_union16 * ORC_RESTRICT ptr6;
1135   const orc_union16 * ORC_RESTRICT ptr7;
1136   orc_union16 var36;
1137   orc_union16 var37;
1138   orc_union16 var38;
1139   orc_union16 var39;
1140   orc_union16 var40;
1141   orc_union32 var41;
1142   orc_union16 var42;
1143   orc_union16 var43;
1144   orc_union16 var44;
1145   orc_union32 var45;
1146   orc_union16 var46;
1147   orc_union32 var47;
1148   orc_union32 var48;
1149   orc_union32 var49;
1150   orc_union32 var50;
1151   orc_union16 var51;
1152
1153   ptr0 = (orc_union16 *)ex->arrays[0];
1154   ptr4 = (orc_union16 *)ex->arrays[4];
1155   ptr5 = (orc_union16 *)ex->arrays[5];
1156   ptr6 = (orc_union16 *)ex->arrays[6];
1157   ptr7 = (orc_union16 *)ex->arrays[7];
1158
1159     /* 3: loadpw */
1160     var38.i = 0x00000009; /* 9 or 4.44659e-323f */
1161     /* 10: loadpl */
1162     var41.i = ex->params[24];
1163
1164   for (i = 0; i < n; i++) {
1165     /* 0: loadw */
1166     var36 = ptr5[i];
1167     /* 1: loadw */
1168     var37 = ptr6[i];
1169     /* 2: addw */
1170     var44.i = var36.i + var37.i;
1171     /* 4: mulswl */
1172     var45.i = var44.i * var38.i;
1173     /* 5: loadw */
1174     var39 = ptr4[i];
1175     /* 6: loadw */
1176     var40 = ptr7[i];
1177     /* 7: addw */
1178     var46.i = var39.i + var40.i;
1179     /* 8: convswl */
1180     var47.i = var46.i;
1181     /* 9: subl */
1182     var48.i = var45.i - var47.i;
1183     /* 11: addl */
1184     var49.i = var48.i + var41.i;
1185     /* 12: shrsl */
1186     var50.i = var49.i >> ex->params[25];
1187     /* 13: convlw */
1188     var51.i = var50.i;
1189     /* 14: loadw */
1190     var42 = ptr0[i];
1191     /* 15: subw */
1192     var43.i = var42.i - var51.i;
1193     /* 16: storew */
1194     ptr0[i] = var43;
1195   }
1196
1197 }
1198
1199 /* orc_subtract_s16 */
1200 static void
1201 _backup_orc_subtract_s16 (OrcExecutor * ORC_RESTRICT ex)
1202 {
1203   int i;
1204   int n = ex->n;
1205   orc_union16 * ORC_RESTRICT ptr0;
1206   const orc_union16 * ORC_RESTRICT ptr4;
1207   const orc_union16 * ORC_RESTRICT ptr5;
1208   orc_union16 var32;
1209   orc_union16 var33;
1210   orc_union16 var34;
1211
1212   ptr0 = (orc_union16 *)ex->arrays[0];
1213   ptr4 = (orc_union16 *)ex->arrays[4];
1214   ptr5 = (orc_union16 *)ex->arrays[5];
1215
1216
1217   for (i = 0; i < n; i++) {
1218     /* 0: loadw */
1219     var32 = ptr4[i];
1220     /* 1: loadw */
1221     var33 = ptr5[i];
1222     /* 2: subw */
1223     var34.i = var32.i - var33.i;
1224     /* 3: storew */
1225     ptr0[i] = var34;
1226   }
1227
1228 }
1229
1230 /* orc_add_s16_u8 */
1231 static void
1232 _backup_orc_add_s16_u8 (OrcExecutor * ORC_RESTRICT ex)
1233 {
1234   int i;
1235   int n = ex->n;
1236   orc_union16 * ORC_RESTRICT ptr0;
1237   const orc_union16 * ORC_RESTRICT ptr4;
1238   const orc_int8 * ORC_RESTRICT ptr5;
1239   orc_int8 var33;
1240   orc_union16 var34;
1241   orc_union16 var35;
1242   orc_union16 var36;
1243
1244   ptr0 = (orc_union16 *)ex->arrays[0];
1245   ptr4 = (orc_union16 *)ex->arrays[4];
1246   ptr5 = (orc_int8 *)ex->arrays[5];
1247
1248
1249   for (i = 0; i < n; i++) {
1250     /* 0: loadb */
1251     var33 = ptr5[i];
1252     /* 1: convubw */
1253     var36.i = (orc_uint8)var33;
1254     /* 2: loadw */
1255     var34 = ptr4[i];
1256     /* 3: addw */
1257     var35.i = var36.i + var34.i;
1258     /* 4: storew */
1259     ptr0[i] = var35;
1260   }
1261
1262 }
1263
1264 /* orc_add_s16_u8_2d */
1265 static void
1266 _backup_orc_add_s16_u8_2d (OrcExecutor * ORC_RESTRICT ex)
1267 {
1268   int i;
1269   int j;
1270   int n = ex->n;
1271   int m = ex->params[ORC_VAR_A1];
1272   orc_union16 * ORC_RESTRICT ptr0;
1273   const orc_int8 * ORC_RESTRICT ptr4;
1274   orc_int8 var33;
1275   orc_union16 var34;
1276   orc_union16 var35;
1277   orc_union16 var36;
1278
1279   for (j = 0; j < m; j++) {
1280     ptr0 = ORC_PTR_OFFSET(ex->arrays[0], ex->params[0] * j);
1281     ptr4 = ORC_PTR_OFFSET(ex->arrays[4], ex->params[4] * j);
1282
1283
1284     for (i = 0; i < n; i++) {
1285       /* 0: loadb */
1286       var33 = ptr4[i];
1287       /* 1: convubw */
1288       var36.i = (orc_uint8)var33;
1289       /* 2: loadw */
1290       var34 = ptr0[i];
1291       /* 3: addw */
1292       var35.i = var34.i + var36.i;
1293       /* 4: storew */
1294       ptr0[i] = var35;
1295     }
1296   }
1297
1298 }
1299
1300 /* orc_convert_s16_u8 */
1301 static void
1302 _backup_orc_convert_s16_u8 (OrcExecutor * ORC_RESTRICT ex)
1303 {
1304   int i;
1305   int n = ex->n;
1306   orc_union16 * ORC_RESTRICT ptr0;
1307   const orc_int8 * ORC_RESTRICT ptr4;
1308   orc_int8 var32;
1309   orc_union16 var33;
1310
1311   ptr0 = (orc_union16 *)ex->arrays[0];
1312   ptr4 = (orc_int8 *)ex->arrays[4];
1313
1314
1315   for (i = 0; i < n; i++) {
1316     /* 0: loadb */
1317     var32 = ptr4[i];
1318     /* 1: convubw */
1319     var33.i = (orc_uint8)var32;
1320     /* 2: storew */
1321     ptr0[i] = var33;
1322   }
1323
1324 }
1325
1326 /* orc_convert_u8_s16 */
1327 static void
1328 _backup_orc_convert_u8_s16 (OrcExecutor * ORC_RESTRICT ex)
1329 {
1330   int i;
1331   int n = ex->n;
1332   orc_int8 * ORC_RESTRICT ptr0;
1333   const orc_union16 * ORC_RESTRICT ptr4;
1334   orc_union16 var32;
1335   orc_int8 var33;
1336
1337   ptr0 = (orc_int8 *)ex->arrays[0];
1338   ptr4 = (orc_union16 *)ex->arrays[4];
1339
1340
1341   for (i = 0; i < n; i++) {
1342     /* 0: loadw */
1343     var32 = ptr4[i];
1344     /* 1: convsuswb */
1345     var33 = ORC_CLAMP_UB(var32.i);
1346     /* 2: storeb */
1347     ptr0[i] = var33;
1348   }
1349
1350 }
1351
1352 /* orc_offsetconvert_u8_s16 */
1353 static void
1354 _backup_orc_offsetconvert_u8_s16 (OrcExecutor * ORC_RESTRICT ex)
1355 {
1356   int i;
1357   int n = ex->n;
1358   orc_int8 * ORC_RESTRICT ptr0;
1359   const orc_union16 * ORC_RESTRICT ptr4;
1360   orc_union16 var33;
1361   orc_union16 var34;
1362   orc_int8 var35;
1363   orc_union16 var36;
1364
1365   ptr0 = (orc_int8 *)ex->arrays[0];
1366   ptr4 = (orc_union16 *)ex->arrays[4];
1367
1368     /* 1: loadpw */
1369     var34.i = 0x00000080; /* 128 or 6.32404e-322f */
1370
1371   for (i = 0; i < n; i++) {
1372     /* 0: loadw */
1373     var33 = ptr4[i];
1374     /* 2: addw */
1375     var36.i = var33.i + var34.i;
1376     /* 3: convsuswb */
1377     var35 = ORC_CLAMP_UB(var36.i);
1378     /* 4: storeb */
1379     ptr0[i] = var35;
1380   }
1381
1382 }
1383
1384 /* orc_offsetconvert_s16_u8 */
1385 static void
1386 _backup_orc_offsetconvert_s16_u8 (OrcExecutor * ORC_RESTRICT ex)
1387 {
1388   int i;
1389   int n = ex->n;
1390   orc_union16 * ORC_RESTRICT ptr0;
1391   const orc_int8 * ORC_RESTRICT ptr4;
1392   orc_int8 var33;
1393   orc_union16 var34;
1394   orc_union16 var35;
1395   orc_union16 var36;
1396
1397   ptr0 = (orc_union16 *)ex->arrays[0];
1398   ptr4 = (orc_int8 *)ex->arrays[4];
1399
1400     /* 2: loadpw */
1401     var34.i = 0x00000080; /* 128 or 6.32404e-322f */
1402
1403   for (i = 0; i < n; i++) {
1404     /* 0: loadb */
1405     var33 = ptr4[i];
1406     /* 1: convubw */
1407     var36.i = (orc_uint8)var33;
1408     /* 3: subw */
1409     var35.i = var36.i - var34.i;
1410     /* 4: storew */
1411     ptr0[i] = var35;
1412   }
1413
1414 }
1415
1416 /* orc_subtract_s16_u8 */
1417 static void
1418 _backup_orc_subtract_s16_u8 (OrcExecutor * ORC_RESTRICT ex)
1419 {
1420   int i;
1421   int n = ex->n;
1422   orc_union16 * ORC_RESTRICT ptr0;
1423   const orc_union16 * ORC_RESTRICT ptr4;
1424   const orc_int8 * ORC_RESTRICT ptr5;
1425   orc_int8 var33;
1426   orc_union16 var34;
1427   orc_union16 var35;
1428   orc_union16 var36;
1429
1430   ptr0 = (orc_union16 *)ex->arrays[0];
1431   ptr4 = (orc_union16 *)ex->arrays[4];
1432   ptr5 = (orc_int8 *)ex->arrays[5];
1433
1434
1435   for (i = 0; i < n; i++) {
1436     /* 0: loadb */
1437     var33 = ptr5[i];
1438     /* 1: convubw */
1439     var36.i = (orc_uint8)var33;
1440     /* 2: loadw */
1441     var34 = ptr4[i];
1442     /* 3: subw */
1443     var35.i = var34.i - var36.i;
1444     /* 4: storew */
1445     ptr0[i] = var35;
1446   }
1447
1448 }
1449
1450 /* orc_multiply_and_add_s16_u8 */
1451 static void
1452 _backup_orc_multiply_and_add_s16_u8 (OrcExecutor * ORC_RESTRICT ex)
1453 {
1454   int i;
1455   int n = ex->n;
1456   orc_union16 * ORC_RESTRICT ptr0;
1457   const orc_union16 * ORC_RESTRICT ptr4;
1458   const orc_int8 * ORC_RESTRICT ptr5;
1459   orc_int8 var33;
1460   orc_union16 var34;
1461   orc_union16 var35;
1462   orc_union16 var36;
1463   orc_union16 var37;
1464   orc_union16 var38;
1465
1466   ptr0 = (orc_union16 *)ex->arrays[0];
1467   ptr4 = (orc_union16 *)ex->arrays[4];
1468   ptr5 = (orc_int8 *)ex->arrays[5];
1469
1470
1471   for (i = 0; i < n; i++) {
1472     /* 0: loadb */
1473     var33 = ptr5[i];
1474     /* 1: convubw */
1475     var37.i = (orc_uint8)var33;
1476     /* 2: loadw */
1477     var34 = ptr4[i];
1478     /* 3: mullw */
1479     var38.i = (var37.i * var34.i) & 0xffff;
1480     /* 4: loadw */
1481     var35 = ptr0[i];
1482     /* 5: addw */
1483     var36.i = var35.i + var38.i;
1484     /* 6: storew */
1485     ptr0[i] = var36;
1486   }
1487
1488 }
1489
1490 /* orc_splat_s16_ns */
1491 static void
1492 _backup_orc_splat_s16_ns (OrcExecutor * ORC_RESTRICT ex)
1493 {
1494   int i;
1495   int n = ex->n;
1496   orc_union16 * ORC_RESTRICT ptr0;
1497   orc_union16 var32;
1498   orc_union16 var33;
1499
1500   ptr0 = (orc_union16 *)ex->arrays[0];
1501
1502     /* 0: loadpw */
1503     var32.i = ex->params[24];
1504
1505   for (i = 0; i < n; i++) {
1506     /* 1: copyw */
1507     var33.i = var32.i;
1508     /* 2: storew */
1509     ptr0[i] = var33;
1510   }
1511
1512 }
1513
1514 /* orc_splat_s16_2d_4xn */
1515 static void
1516 _backup_orc_splat_s16_2d_4xn (OrcExecutor * ORC_RESTRICT ex)
1517 {
1518   int i;
1519   int j;
1520   int n = 4;
1521   int m = ex->params[ORC_VAR_A1];
1522   orc_union16 * ORC_RESTRICT ptr0;
1523   orc_union16 var32;
1524   orc_union16 var33;
1525
1526   for (j = 0; j < m; j++) {
1527     ptr0 = ORC_PTR_OFFSET(ex->arrays[0], ex->params[0] * j);
1528
1529       /* 0: loadpw */
1530         var32.i = ex->params[24];
1531
1532     for (i = 0; i < n; i++) {
1533       /* 1: copyw */
1534       var33.i = var32.i;
1535       /* 2: storew */
1536       ptr0[i] = var33;
1537     }
1538   }
1539
1540 }
1541
1542 /* orc_splat_s16_2d_8xn */
1543 static void
1544 _backup_orc_splat_s16_2d_8xn (OrcExecutor * ORC_RESTRICT ex)
1545 {
1546   int i;
1547   int j;
1548   int n = 8;
1549   int m = ex->params[ORC_VAR_A1];
1550   orc_union16 * ORC_RESTRICT ptr0;
1551   orc_union16 var32;
1552   orc_union16 var33;
1553
1554   for (j = 0; j < m; j++) {
1555     ptr0 = ORC_PTR_OFFSET(ex->arrays[0], ex->params[0] * j);
1556
1557       /* 0: loadpw */
1558         var32.i = ex->params[24];
1559
1560     for (i = 0; i < n; i++) {
1561       /* 1: copyw */
1562       var33.i = var32.i;
1563       /* 2: storew */
1564       ptr0[i] = var33;
1565     }
1566   }
1567
1568 }
1569
1570 /* orc_splat_s16_2d */
1571 static void
1572 _backup_orc_splat_s16_2d (OrcExecutor * ORC_RESTRICT ex)
1573 {
1574   int i;
1575   int j;
1576   int n = ex->n;
1577   int m = ex->params[ORC_VAR_A1];
1578   orc_union16 * ORC_RESTRICT ptr0;
1579   orc_union16 var32;
1580   orc_union16 var33;
1581
1582   for (j = 0; j < m; j++) {
1583     ptr0 = ORC_PTR_OFFSET(ex->arrays[0], ex->params[0] * j);
1584
1585       /* 0: loadpw */
1586         var32.i = ex->params[24];
1587
1588     for (i = 0; i < n; i++) {
1589       /* 1: copyw */
1590       var33.i = var32.i;
1591       /* 2: storew */
1592       ptr0[i] = var33;
1593     }
1594   }
1595
1596 }
1597
1598 /* orc_splat_u8_ns */
1599 static void
1600 _backup_orc_splat_u8_ns (OrcExecutor * ORC_RESTRICT ex)
1601 {
1602   int i;
1603   int n = ex->n;
1604   orc_int8 * ORC_RESTRICT ptr0;
1605   orc_int8 var32;
1606   orc_int8 var33;
1607
1608   ptr0 = (orc_int8 *)ex->arrays[0];
1609
1610     /* 0: loadpb */
1611     var32 = ex->params[24];
1612
1613   for (i = 0; i < n; i++) {
1614     /* 1: copyb */
1615     var33 = var32;
1616     /* 2: storeb */
1617     ptr0[i] = var33;
1618   }
1619
1620 }
1621
1622 /* orc_splat_u8_2d */
1623 static void
1624 _backup_orc_splat_u8_2d (OrcExecutor * ORC_RESTRICT ex)
1625 {
1626   int i;
1627   int j;
1628   int n = ex->n;
1629   int m = ex->params[ORC_VAR_A1];
1630   orc_int8 * ORC_RESTRICT ptr0;
1631   orc_int8 var32;
1632   orc_int8 var33;
1633
1634   for (j = 0; j < m; j++) {
1635     ptr0 = ORC_PTR_OFFSET(ex->arrays[0], ex->params[0] * j);
1636
1637       /* 0: loadpb */
1638         var32 = ex->params[24];
1639
1640     for (i = 0; i < n; i++) {
1641       /* 1: copyb */
1642       var33 = var32;
1643       /* 2: storeb */
1644       ptr0[i] = var33;
1645     }
1646   }
1647
1648 }
1649
1650 /* orc_average_u8 */
1651 static void
1652 _backup_orc_average_u8 (OrcExecutor * ORC_RESTRICT ex)
1653 {
1654   int i;
1655   int n = ex->n;
1656   orc_int8 * ORC_RESTRICT ptr0;
1657   const orc_int8 * ORC_RESTRICT ptr4;
1658   const orc_int8 * ORC_RESTRICT ptr5;
1659   orc_int8 var32;
1660   orc_int8 var33;
1661   orc_int8 var34;
1662
1663   ptr0 = (orc_int8 *)ex->arrays[0];
1664   ptr4 = (orc_int8 *)ex->arrays[4];
1665   ptr5 = (orc_int8 *)ex->arrays[5];
1666
1667
1668   for (i = 0; i < n; i++) {
1669     /* 0: loadb */
1670     var32 = ptr4[i];
1671     /* 1: loadb */
1672     var33 = ptr5[i];
1673     /* 2: avgub */
1674     var34 = ((orc_uint8)var32 + (orc_uint8)var33 + 1)>>1;
1675     /* 3: storeb */
1676     ptr0[i] = var34;
1677   }
1678
1679 }
1680
1681 /* orc_rrshift6_add_s16_2d */
1682 static void
1683 _backup_orc_rrshift6_add_s16_2d (OrcExecutor * ORC_RESTRICT ex)
1684 {
1685   int i;
1686   int j;
1687   int n = ex->n;
1688   int m = ex->params[ORC_VAR_A1];
1689   orc_int8 * ORC_RESTRICT ptr0;
1690   const orc_union16 * ORC_RESTRICT ptr4;
1691   const orc_union16 * ORC_RESTRICT ptr5;
1692   orc_union16 var33;
1693   orc_union16 var34;
1694   orc_union16 var35;
1695   orc_int8 var36;
1696   orc_union16 var37;
1697   orc_union16 var38;
1698   orc_union16 var39;
1699
1700   for (j = 0; j < m; j++) {
1701     ptr0 = ORC_PTR_OFFSET(ex->arrays[0], ex->params[0] * j);
1702     ptr4 = ORC_PTR_OFFSET(ex->arrays[4], ex->params[4] * j);
1703     ptr5 = ORC_PTR_OFFSET(ex->arrays[5], ex->params[5] * j);
1704
1705       /* 1: loadpw */
1706         var34.i = 0x00000020; /* 32 or 1.58101e-322f */
1707
1708     for (i = 0; i < n; i++) {
1709       /* 0: loadw */
1710       var33 = ptr5[i];
1711       /* 2: addw */
1712       var37.i = var33.i + var34.i;
1713       /* 3: shrsw */
1714       var38.i = var37.i >> 6;
1715       /* 4: loadw */
1716       var35 = ptr4[i];
1717       /* 5: addw */
1718       var39.i = var35.i + var38.i;
1719       /* 6: convsuswb */
1720       var36 = ORC_CLAMP_UB(var39.i);
1721       /* 7: storeb */
1722       ptr0[i] = var36;
1723     }
1724   }
1725
1726 }
1727
1728 /* orc_rrshift6_sub_s16_2d */
1729 static void
1730 _backup_orc_rrshift6_sub_s16_2d (OrcExecutor * ORC_RESTRICT ex)
1731 {
1732   int i;
1733   int j;
1734   int n = ex->n;
1735   int m = ex->params[ORC_VAR_A1];
1736   orc_union16 * ORC_RESTRICT ptr0;
1737   orc_union16 * ORC_RESTRICT ptr1;
1738   orc_union16 var33;
1739   orc_union16 var34;
1740   orc_union16 var35;
1741   orc_union16 var36;
1742   orc_union16 var37;
1743   orc_union16 var38;
1744   orc_union16 var39;
1745
1746   for (j = 0; j < m; j++) {
1747     ptr0 = ORC_PTR_OFFSET(ex->arrays[0], ex->params[0] * j);
1748     ptr1 = ORC_PTR_OFFSET(ex->arrays[1], ex->params[1] * j);
1749
1750       /* 1: loadpw */
1751         var34.i = 0x00001fe0; /* 8160 or 4.03158e-320f */
1752
1753     for (i = 0; i < n; i++) {
1754       /* 0: loadw */
1755       var33 = ptr1[i];
1756       /* 2: subw */
1757       var38.i = var33.i - var34.i;
1758       /* 3: shrsw */
1759       var39.i = var38.i >> 6;
1760       /* 4: copyw */
1761       var35.i = var39.i;
1762       /* 5: storew */
1763       ptr1[i] = var35;
1764       /* 6: loadw */
1765       var36 = ptr0[i];
1766       /* 7: subw */
1767       var37.i = var36.i - var39.i;
1768       /* 8: storew */
1769       ptr0[i] = var37;
1770     }
1771   }
1772
1773 }
1774
1775 /* orc_rrshift6_s16_ip_2d */
1776 static void
1777 _backup_orc_rrshift6_s16_ip_2d (OrcExecutor * ORC_RESTRICT ex)
1778 {
1779   int i;
1780   int j;
1781   int n = ex->n;
1782   int m = ex->params[ORC_VAR_A1];
1783   orc_union16 * ORC_RESTRICT ptr0;
1784   orc_union16 var33;
1785   orc_union16 var34;
1786   orc_union16 var35;
1787   orc_union16 var36;
1788
1789   for (j = 0; j < m; j++) {
1790     ptr0 = ORC_PTR_OFFSET(ex->arrays[0], ex->params[0] * j);
1791
1792       /* 1: loadpw */
1793         var34.i = 0x00001fe0; /* 8160 or 4.03158e-320f */
1794
1795     for (i = 0; i < n; i++) {
1796       /* 0: loadw */
1797       var33 = ptr0[i];
1798       /* 2: subw */
1799       var36.i = var33.i - var34.i;
1800       /* 3: shrsw */
1801       var35.i = var36.i >> 6;
1802       /* 4: storew */
1803       ptr0[i] = var35;
1804     }
1805   }
1806
1807 }
1808
1809 /* orc_rrshift6_s16_ip */
1810 static void
1811 _backup_orc_rrshift6_s16_ip (OrcExecutor * ORC_RESTRICT ex)
1812 {
1813   int i;
1814   int n = ex->n;
1815   orc_union16 * ORC_RESTRICT ptr0;
1816   orc_union16 var33;
1817   orc_union16 var34;
1818   orc_union16 var35;
1819   orc_union16 var36;
1820
1821   ptr0 = (orc_union16 *)ex->arrays[0];
1822
1823     /* 1: loadpw */
1824     var34.i = 0x00001fe0; /* 8160 or 4.03158e-320f */
1825
1826   for (i = 0; i < n; i++) {
1827     /* 0: loadw */
1828     var33 = ptr0[i];
1829     /* 2: subw */
1830     var36.i = var33.i - var34.i;
1831     /* 3: shrsw */
1832     var35.i = var36.i >> 6;
1833     /* 4: storew */
1834     ptr0[i] = var35;
1835   }
1836
1837 }
1838
1839 /* orc_unpack_yuyv_y */
1840 static void
1841 _backup_orc_unpack_yuyv_y (OrcExecutor * ORC_RESTRICT ex)
1842 {
1843   int i;
1844   int n = ex->n;
1845   orc_int8 * ORC_RESTRICT ptr0;
1846   const orc_union16 * ORC_RESTRICT ptr4;
1847   orc_union16 var32;
1848   orc_int8 var33;
1849
1850   ptr0 = (orc_int8 *)ex->arrays[0];
1851   ptr4 = (orc_union16 *)ex->arrays[4];
1852
1853
1854   for (i = 0; i < n; i++) {
1855     /* 0: loadw */
1856     var32 = ptr4[i];
1857     /* 1: select0wb */
1858     var33 = (orc_uint16)var32.i & 0xff;
1859     /* 2: storeb */
1860     ptr0[i] = var33;
1861   }
1862
1863 }
1864
1865 /* orc_unpack_yuyv_u */
1866 static void
1867 _backup_orc_unpack_yuyv_u (OrcExecutor * ORC_RESTRICT ex)
1868 {
1869   int i;
1870   int n = ex->n;
1871   orc_int8 * ORC_RESTRICT ptr0;
1872   const orc_union32 * ORC_RESTRICT ptr4;
1873   orc_union32 var33;
1874   orc_int8 var34;
1875   orc_union16 var35;
1876
1877   ptr0 = (orc_int8 *)ex->arrays[0];
1878   ptr4 = (orc_union32 *)ex->arrays[4];
1879
1880
1881   for (i = 0; i < n; i++) {
1882     /* 0: loadl */
1883     var33 = ptr4[i];
1884     /* 1: select0lw */
1885     var35.i = (orc_uint32)var33.i & 0xffff;
1886     /* 2: select1wb */
1887     var34 = ((orc_uint16)var35.i >> 8)&0xff;
1888     /* 3: storeb */
1889     ptr0[i] = var34;
1890   }
1891
1892 }
1893
1894 /* orc_unpack_yuyv_v */
1895 static void
1896 _backup_orc_unpack_yuyv_v (OrcExecutor * ORC_RESTRICT ex)
1897 {
1898   int i;
1899   int n = ex->n;
1900   orc_int8 * ORC_RESTRICT ptr0;
1901   const orc_union32 * ORC_RESTRICT ptr4;
1902   orc_union32 var33;
1903   orc_int8 var34;
1904   orc_union16 var35;
1905
1906   ptr0 = (orc_int8 *)ex->arrays[0];
1907   ptr4 = (orc_union32 *)ex->arrays[4];
1908
1909
1910   for (i = 0; i < n; i++) {
1911     /* 0: loadl */
1912     var33 = ptr4[i];
1913     /* 1: select1lw */
1914     var35.i = ((orc_uint32)var33.i >> 16)&0xffff;
1915     /* 2: select1wb */
1916     var34 = ((orc_uint16)var35.i >> 8)&0xff;
1917     /* 3: storeb */
1918     ptr0[i] = var34;
1919   }
1920
1921 }
1922
1923 /* orc_packyuyv */
1924 static void
1925 _backup_orc_packyuyv (OrcExecutor * ORC_RESTRICT ex)
1926 {
1927   int i;
1928   int n = ex->n;
1929   orc_union32 * ORC_RESTRICT ptr0;
1930   const orc_union16 * ORC_RESTRICT ptr4;
1931   const orc_int8 * ORC_RESTRICT ptr5;
1932   const orc_int8 * ORC_RESTRICT ptr6;
1933   orc_union16 var37;
1934   orc_int8 var38;
1935   orc_int8 var39;
1936   orc_union32 var40;
1937   orc_union16 var41;
1938   orc_int8 var42;
1939   orc_int8 var43;
1940   orc_union16 var44;
1941   orc_union16 var45;
1942
1943   ptr0 = (orc_union32 *)ex->arrays[0];
1944   ptr4 = (orc_union16 *)ex->arrays[4];
1945   ptr5 = (orc_int8 *)ex->arrays[5];
1946   ptr6 = (orc_int8 *)ex->arrays[6];
1947
1948
1949   for (i = 0; i < n; i++) {
1950     /* 0: loadw */
1951     var37 = ptr4[i];
1952     /* 1: copyw */
1953     var41.i = var37.i;
1954     /* 2: select0wb */
1955     var42 = (orc_uint16)var41.i & 0xff;
1956     /* 3: select1wb */
1957     var43 = ((orc_uint16)var41.i >> 8)&0xff;
1958     /* 4: loadb */
1959     var38 = ptr5[i];
1960     /* 5: mergebw */
1961     var44.i = ((orc_uint8)var42 & 0x00ff) | ((orc_uint8)var38 << 8);
1962     /* 6: loadb */
1963     var39 = ptr6[i];
1964     /* 7: mergebw */
1965     var45.i = ((orc_uint8)var43 & 0x00ff) | ((orc_uint8)var39 << 8);
1966     /* 8: mergewl */
1967     var40.i = ((orc_uint16)var44.i & 0x0000ffff) | ((orc_uint16)var45.i << 16);
1968     /* 9: storel */
1969     ptr0[i] = var40;
1970   }
1971
1972 }
1973
1974 /* orc_unpack_uyvy_y */
1975 static void
1976 _backup_orc_unpack_uyvy_y (OrcExecutor * ORC_RESTRICT ex)
1977 {
1978   int i;
1979   int n = ex->n;
1980   orc_int8 * ORC_RESTRICT ptr0;
1981   const orc_union16 * ORC_RESTRICT ptr4;
1982   orc_union16 var32;
1983   orc_int8 var33;
1984
1985   ptr0 = (orc_int8 *)ex->arrays[0];
1986   ptr4 = (orc_union16 *)ex->arrays[4];
1987
1988
1989   for (i = 0; i < n; i++) {
1990     /* 0: loadw */
1991     var32 = ptr4[i];
1992     /* 1: select1wb */
1993     var33 = ((orc_uint16)var32.i >> 8)&0xff;
1994     /* 2: storeb */
1995     ptr0[i] = var33;
1996   }
1997
1998 }
1999
2000 /* orc_unpack_uyvy_u */
2001 static void
2002 _backup_orc_unpack_uyvy_u (OrcExecutor * ORC_RESTRICT ex)
2003 {
2004   int i;
2005   int n = ex->n;
2006   orc_int8 * ORC_RESTRICT ptr0;
2007   const orc_union32 * ORC_RESTRICT ptr4;
2008   orc_union32 var33;
2009   orc_int8 var34;
2010   orc_union16 var35;
2011
2012   ptr0 = (orc_int8 *)ex->arrays[0];
2013   ptr4 = (orc_union32 *)ex->arrays[4];
2014
2015
2016   for (i = 0; i < n; i++) {
2017     /* 0: loadl */
2018     var33 = ptr4[i];
2019     /* 1: select0lw */
2020     var35.i = (orc_uint32)var33.i & 0xffff;
2021     /* 2: select0wb */
2022     var34 = (orc_uint16)var35.i & 0xff;
2023     /* 3: storeb */
2024     ptr0[i] = var34;
2025   }
2026
2027 }
2028
2029 /* orc_unpack_uyvy_v */
2030 static void
2031 _backup_orc_unpack_uyvy_v (OrcExecutor * ORC_RESTRICT ex)
2032 {
2033   int i;
2034   int n = ex->n;
2035   orc_int8 * ORC_RESTRICT ptr0;
2036   const orc_union32 * ORC_RESTRICT ptr4;
2037   orc_union32 var33;
2038   orc_int8 var34;
2039   orc_union16 var35;
2040
2041   ptr0 = (orc_int8 *)ex->arrays[0];
2042   ptr4 = (orc_union32 *)ex->arrays[4];
2043
2044
2045   for (i = 0; i < n; i++) {
2046     /* 0: loadl */
2047     var33 = ptr4[i];
2048     /* 1: select1lw */
2049     var35.i = ((orc_uint32)var33.i >> 16)&0xffff;
2050     /* 2: select0wb */
2051     var34 = (orc_uint16)var35.i & 0xff;
2052     /* 3: storeb */
2053     ptr0[i] = var34;
2054   }
2055
2056 }
2057
2058 /* orc_interleave2_s16 */
2059 static void
2060 _backup_orc_interleave2_s16 (OrcExecutor * ORC_RESTRICT ex)
2061 {
2062   int i;
2063   int n = ex->n;
2064   orc_union32 * ORC_RESTRICT ptr0;
2065   const orc_union16 * ORC_RESTRICT ptr4;
2066   const orc_union16 * ORC_RESTRICT ptr5;
2067   orc_union16 var32;
2068   orc_union16 var33;
2069   orc_union32 var34;
2070
2071   ptr0 = (orc_union32 *)ex->arrays[0];
2072   ptr4 = (orc_union16 *)ex->arrays[4];
2073   ptr5 = (orc_union16 *)ex->arrays[5];
2074
2075
2076   for (i = 0; i < n; i++) {
2077     /* 0: loadw */
2078     var32 = ptr4[i];
2079     /* 1: loadw */
2080     var33 = ptr5[i];
2081     /* 2: mergewl */
2082     var34.i = ((orc_uint16)var32.i & 0x0000ffff) | ((orc_uint16)var33.i << 16);
2083     /* 3: storel */
2084     ptr0[i] = var34;
2085   }
2086
2087 }
2088
2089 /* orc_interleave2_rrshift1_s16 */
2090 static void
2091 _backup_orc_interleave2_rrshift1_s16 (OrcExecutor * ORC_RESTRICT ex)
2092 {
2093   int i;
2094   int n = ex->n;
2095   orc_union32 * ORC_RESTRICT ptr0;
2096   const orc_union16 * ORC_RESTRICT ptr4;
2097   const orc_union16 * ORC_RESTRICT ptr5;
2098   orc_union16 var34;
2099   orc_union16 var35;
2100   orc_union16 var36;
2101   orc_union16 var37;
2102   orc_union32 var38;
2103   orc_union16 var39;
2104   orc_union16 var40;
2105   orc_union16 var41;
2106   orc_union16 var42;
2107
2108   ptr0 = (orc_union32 *)ex->arrays[0];
2109   ptr4 = (orc_union16 *)ex->arrays[4];
2110   ptr5 = (orc_union16 *)ex->arrays[5];
2111
2112     /* 1: loadpw */
2113     var35.i = 0x00000001; /* 1 or 4.94066e-324f */
2114     /* 5: loadpw */
2115     var37.i = 0x00000001; /* 1 or 4.94066e-324f */
2116
2117   for (i = 0; i < n; i++) {
2118     /* 0: loadw */
2119     var34 = ptr4[i];
2120     /* 2: addw */
2121     var39.i = var34.i + var35.i;
2122     /* 3: shrsw */
2123     var40.i = var39.i >> 1;
2124     /* 4: loadw */
2125     var36 = ptr5[i];
2126     /* 6: addw */
2127     var41.i = var36.i + var37.i;
2128     /* 7: shrsw */
2129     var42.i = var41.i >> 1;
2130     /* 8: mergewl */
2131     var38.i = ((orc_uint16)var40.i & 0x0000ffff) | ((orc_uint16)var42.i << 16);
2132     /* 9: storel */
2133     ptr0[i] = var38;
2134   }
2135
2136 }
2137
2138 /* orc_deinterleave2_s16 */
2139 static void
2140 _backup_orc_deinterleave2_s16 (OrcExecutor * ORC_RESTRICT ex)
2141 {
2142   int i;
2143   int n = ex->n;
2144   orc_union16 * ORC_RESTRICT ptr0;
2145   orc_union16 * ORC_RESTRICT ptr1;
2146   const orc_union32 * ORC_RESTRICT ptr4;
2147   orc_union32 var33;
2148   orc_union16 var34;
2149   orc_union16 var35;
2150   orc_union32 var36;
2151
2152   ptr0 = (orc_union16 *)ex->arrays[0];
2153   ptr1 = (orc_union16 *)ex->arrays[1];
2154   ptr4 = (orc_union32 *)ex->arrays[4];
2155
2156
2157   for (i = 0; i < n; i++) {
2158     /* 0: loadl */
2159     var33 = ptr4[i];
2160     /* 1: copyl */
2161     var36.i = var33.i;
2162     /* 2: select0lw */
2163     var34.i = (orc_uint32)var36.i & 0xffff;
2164     /* 3: storew */
2165     ptr0[i] = var34;
2166     /* 4: select1lw */
2167     var35.i = ((orc_uint32)var36.i >> 16)&0xffff;
2168     /* 5: storew */
2169     ptr1[i] = var35;
2170   }
2171
2172 }
2173
2174 /* orc_deinterleave2_lshift1_s16 */
2175 static void
2176 _backup_orc_deinterleave2_lshift1_s16 (OrcExecutor * ORC_RESTRICT ex)
2177 {
2178   int i;
2179   int n = ex->n;
2180   orc_union16 * ORC_RESTRICT ptr0;
2181   orc_union16 * ORC_RESTRICT ptr1;
2182   const orc_union32 * ORC_RESTRICT ptr4;
2183   orc_union32 var35;
2184   orc_union16 var36;
2185   orc_union16 var37;
2186   orc_union32 var38;
2187   orc_union16 var39;
2188   orc_union16 var40;
2189
2190   ptr0 = (orc_union16 *)ex->arrays[0];
2191   ptr1 = (orc_union16 *)ex->arrays[1];
2192   ptr4 = (orc_union32 *)ex->arrays[4];
2193
2194
2195   for (i = 0; i < n; i++) {
2196     /* 0: loadl */
2197     var35 = ptr4[i];
2198     /* 1: copyl */
2199     var38.i = var35.i;
2200     /* 2: select0lw */
2201     var39.i = (orc_uint32)var38.i & 0xffff;
2202     /* 3: shlw */
2203     var36.i = var39.i << 1;
2204     /* 4: storew */
2205     ptr0[i] = var36;
2206     /* 5: select1lw */
2207     var40.i = ((orc_uint32)var38.i >> 16)&0xffff;
2208     /* 6: shlw */
2209     var37.i = var40.i << 1;
2210     /* 7: storew */
2211     ptr1[i] = var37;
2212   }
2213
2214 }
2215
2216 /* orc_haar_deint_lshift1_split_s16 */
2217 static void
2218 _backup_orc_haar_deint_lshift1_split_s16 (OrcExecutor * ORC_RESTRICT ex)
2219 {
2220   int i;
2221   int n = ex->n;
2222   orc_union16 * ORC_RESTRICT ptr0;
2223   orc_union16 * ORC_RESTRICT ptr1;
2224   const orc_union32 * ORC_RESTRICT ptr4;
2225   orc_union32 var35;
2226   orc_union16 var36;
2227   orc_union16 var37;
2228   orc_union16 var38;
2229   orc_union32 var39;
2230   orc_union16 var40;
2231   orc_union16 var41;
2232   orc_union16 var42;
2233   orc_union16 var43;
2234   orc_union16 var44;
2235   orc_union16 var45;
2236
2237   ptr0 = (orc_union16 *)ex->arrays[0];
2238   ptr1 = (orc_union16 *)ex->arrays[1];
2239   ptr4 = (orc_union32 *)ex->arrays[4];
2240
2241     /* 9: loadpw */
2242     var37.i = 0x00000000; /* 0 or 0f */
2243
2244   for (i = 0; i < n; i++) {
2245     /* 0: loadl */
2246     var35 = ptr4[i];
2247     /* 1: copyl */
2248     var39.i = var35.i;
2249     /* 2: select0lw */
2250     var40.i = (orc_uint32)var39.i & 0xffff;
2251     /* 3: select1lw */
2252     var41.i = ((orc_uint32)var39.i >> 16)&0xffff;
2253     /* 4: shlw */
2254     var42.i = var40.i << 1;
2255     /* 5: shlw */
2256     var43.i = var41.i << 1;
2257     /* 6: subw */
2258     var44.i = var43.i - var42.i;
2259     /* 7: copyw */
2260     var36.i = var44.i;
2261     /* 8: storew */
2262     ptr1[i] = var36;
2263     /* 10: avgsw */
2264     var45.i = (var44.i + var37.i + 1)>>1;
2265     /* 11: addw */
2266     var38.i = var42.i + var45.i;
2267     /* 12: storew */
2268     ptr0[i] = var38;
2269   }
2270
2271 }
2272
2273 /* orc_haar_deint_split_s16 */
2274 static void
2275 _backup_orc_haar_deint_split_s16 (OrcExecutor * ORC_RESTRICT ex)
2276 {
2277   int i;
2278   int n = ex->n;
2279   orc_union16 * ORC_RESTRICT ptr0;
2280   orc_union16 * ORC_RESTRICT ptr1;
2281   const orc_union32 * ORC_RESTRICT ptr4;
2282   orc_union32 var35;
2283   orc_union16 var36;
2284   orc_union16 var37;
2285   orc_union16 var38;
2286   orc_union32 var39;
2287   orc_union16 var40;
2288   orc_union16 var41;
2289   orc_union16 var42;
2290   orc_union16 var43;
2291
2292   ptr0 = (orc_union16 *)ex->arrays[0];
2293   ptr1 = (orc_union16 *)ex->arrays[1];
2294   ptr4 = (orc_union32 *)ex->arrays[4];
2295
2296     /* 7: loadpw */
2297     var37.i = 0x00000000; /* 0 or 0f */
2298
2299   for (i = 0; i < n; i++) {
2300     /* 0: loadl */
2301     var35 = ptr4[i];
2302     /* 1: copyl */
2303     var39.i = var35.i;
2304     /* 2: select0lw */
2305     var40.i = (orc_uint32)var39.i & 0xffff;
2306     /* 3: select1lw */
2307     var41.i = ((orc_uint32)var39.i >> 16)&0xffff;
2308     /* 4: subw */
2309     var42.i = var41.i - var40.i;
2310     /* 5: copyw */
2311     var36.i = var42.i;
2312     /* 6: storew */
2313     ptr1[i] = var36;
2314     /* 8: avgsw */
2315     var43.i = (var42.i + var37.i + 1)>>1;
2316     /* 9: addw */
2317     var38.i = var40.i + var43.i;
2318     /* 10: storew */
2319     ptr0[i] = var38;
2320   }
2321
2322 }
2323
2324 /* orc_haar_split_s16_lo */
2325 static void
2326 _backup_orc_haar_split_s16_lo (OrcExecutor * ORC_RESTRICT ex)
2327 {
2328   int i;
2329   int n = ex->n;
2330   orc_union16 * ORC_RESTRICT ptr0;
2331   const orc_union16 * ORC_RESTRICT ptr4;
2332   const orc_union16 * ORC_RESTRICT ptr5;
2333   orc_union16 var34;
2334   orc_union16 var35;
2335   orc_union16 var36;
2336   orc_union16 var37;
2337   orc_union16 var38;
2338   orc_union16 var39;
2339   orc_union16 var40;
2340
2341   ptr0 = (orc_union16 *)ex->arrays[0];
2342   ptr4 = (orc_union16 *)ex->arrays[4];
2343   ptr5 = (orc_union16 *)ex->arrays[5];
2344
2345     /* 4: loadpw */
2346     var36.i = 0x00000000; /* 0 or 0f */
2347
2348   for (i = 0; i < n; i++) {
2349     /* 0: loadw */
2350     var34 = ptr4[i];
2351     /* 1: copyw */
2352     var38.i = var34.i;
2353     /* 2: loadw */
2354     var35 = ptr5[i];
2355     /* 3: subw */
2356     var39.i = var35.i - var38.i;
2357     /* 5: avgsw */
2358     var40.i = (var39.i + var36.i + 1)>>1;
2359     /* 6: addw */
2360     var37.i = var38.i + var40.i;
2361     /* 7: storew */
2362     ptr0[i] = var37;
2363   }
2364
2365 }
2366
2367 /* orc_haar_split_s16_hi */
2368 static void
2369 _backup_orc_haar_split_s16_hi (OrcExecutor * ORC_RESTRICT ex)
2370 {
2371   int i;
2372   int n = ex->n;
2373   orc_union16 * ORC_RESTRICT ptr0;
2374   const orc_union16 * ORC_RESTRICT ptr4;
2375   const orc_union16 * ORC_RESTRICT ptr5;
2376   orc_union16 var32;
2377   orc_union16 var33;
2378   orc_union16 var34;
2379
2380   ptr0 = (orc_union16 *)ex->arrays[0];
2381   ptr4 = (orc_union16 *)ex->arrays[4];
2382   ptr5 = (orc_union16 *)ex->arrays[5];
2383
2384
2385   for (i = 0; i < n; i++) {
2386     /* 0: loadw */
2387     var32 = ptr5[i];
2388     /* 1: loadw */
2389     var33 = ptr4[i];
2390     /* 2: subw */
2391     var34.i = var32.i - var33.i;
2392     /* 3: storew */
2393     ptr0[i] = var34;
2394   }
2395
2396 }
2397
2398 /* orc_haar_split_s16_op */
2399 static void
2400 _backup_orc_haar_split_s16_op (OrcExecutor * ORC_RESTRICT ex)
2401 {
2402   int i;
2403   int n = ex->n;
2404   orc_union16 * ORC_RESTRICT ptr0;
2405   orc_union16 * ORC_RESTRICT ptr1;
2406   const orc_union16 * ORC_RESTRICT ptr4;
2407   const orc_union16 * ORC_RESTRICT ptr5;
2408   orc_union16 var34;
2409   orc_union16 var35;
2410   orc_union16 var36;
2411   orc_union16 var37;
2412   orc_union16 var38;
2413   orc_union16 var39;
2414   orc_union16 var40;
2415   orc_union16 var41;
2416
2417   ptr0 = (orc_union16 *)ex->arrays[0];
2418   ptr1 = (orc_union16 *)ex->arrays[1];
2419   ptr4 = (orc_union16 *)ex->arrays[4];
2420   ptr5 = (orc_union16 *)ex->arrays[5];
2421
2422     /* 6: loadpw */
2423     var37.i = 0x00000000; /* 0 or 0f */
2424
2425   for (i = 0; i < n; i++) {
2426     /* 0: loadw */
2427     var34 = ptr4[i];
2428     /* 1: copyw */
2429     var39.i = var34.i;
2430     /* 2: loadw */
2431     var35 = ptr5[i];
2432     /* 3: subw */
2433     var40.i = var35.i - var39.i;
2434     /* 4: copyw */
2435     var36.i = var40.i;
2436     /* 5: storew */
2437     ptr1[i] = var36;
2438     /* 7: avgsw */
2439     var41.i = (var40.i + var37.i + 1)>>1;
2440     /* 8: addw */
2441     var38.i = var39.i + var41.i;
2442     /* 9: storew */
2443     ptr0[i] = var38;
2444   }
2445
2446 }
2447
2448 /* orc_haar_split_s16 */
2449 static void
2450 _backup_orc_haar_split_s16 (OrcExecutor * ORC_RESTRICT ex)
2451 {
2452   int i;
2453   int n = ex->n;
2454   orc_union16 * ORC_RESTRICT ptr0;
2455   orc_union16 * ORC_RESTRICT ptr1;
2456   orc_union16 var34;
2457   orc_union16 var35;
2458   orc_union16 var36;
2459   orc_union16 var37;
2460   orc_union16 var38;
2461   orc_union16 var39;
2462   orc_union16 var40;
2463   orc_union16 var41;
2464   orc_union16 var42;
2465
2466   ptr0 = (orc_union16 *)ex->arrays[0];
2467   ptr1 = (orc_union16 *)ex->arrays[1];
2468
2469     /* 7: loadpw */
2470     var37.i = 0x00000000; /* 0 or 0f */
2471
2472   for (i = 0; i < n; i++) {
2473     /* 0: loadw */
2474     var34 = ptr0[i];
2475     /* 1: copyw */
2476     var39.i = var34.i;
2477     /* 2: loadw */
2478     var35 = ptr1[i];
2479     /* 3: copyw */
2480     var40.i = var35.i;
2481     /* 4: subw */
2482     var41.i = var40.i - var39.i;
2483     /* 5: copyw */
2484     var36.i = var41.i;
2485     /* 6: storew */
2486     ptr1[i] = var36;
2487     /* 8: avgsw */
2488     var42.i = (var41.i + var37.i + 1)>>1;
2489     /* 9: addw */
2490     var38.i = var39.i + var42.i;
2491     /* 10: storew */
2492     ptr0[i] = var38;
2493   }
2494
2495 }
2496
2497 /* orc_haar_synth_s16_lo */
2498 static void
2499 _backup_orc_haar_synth_s16_lo (OrcExecutor * ORC_RESTRICT ex)
2500 {
2501   int i;
2502   int n = ex->n;
2503   orc_union16 * ORC_RESTRICT ptr0;
2504   const orc_union16 * ORC_RESTRICT ptr4;
2505   const orc_union16 * ORC_RESTRICT ptr5;
2506   orc_union16 var33;
2507   orc_union16 var34;
2508   orc_union16 var35;
2509   orc_union16 var36;
2510   orc_union16 var37;
2511
2512   ptr0 = (orc_union16 *)ex->arrays[0];
2513   ptr4 = (orc_union16 *)ex->arrays[4];
2514   ptr5 = (orc_union16 *)ex->arrays[5];
2515
2516     /* 1: loadpw */
2517     var34.i = 0x00000000; /* 0 or 0f */
2518
2519   for (i = 0; i < n; i++) {
2520     /* 0: loadw */
2521     var33 = ptr5[i];
2522     /* 2: avgsw */
2523     var37.i = (var33.i + var34.i + 1)>>1;
2524     /* 3: loadw */
2525     var35 = ptr4[i];
2526     /* 4: subw */
2527     var36.i = var35.i - var37.i;
2528     /* 5: storew */
2529     ptr0[i] = var36;
2530   }
2531
2532 }
2533
2534 /* orc_haar_synth_s16_hi */
2535 static void
2536 _backup_orc_haar_synth_s16_hi (OrcExecutor * ORC_RESTRICT ex)
2537 {
2538   int i;
2539   int n = ex->n;
2540   orc_union16 * ORC_RESTRICT ptr0;
2541   const orc_union16 * ORC_RESTRICT ptr4;
2542   const orc_union16 * ORC_RESTRICT ptr5;
2543   orc_union16 var35;
2544   orc_union16 var36;
2545   orc_union16 var37;
2546   orc_union16 var38;
2547   orc_union16 var39;
2548   orc_union16 var40;
2549   orc_union16 var41;
2550
2551   ptr0 = (orc_union16 *)ex->arrays[0];
2552   ptr4 = (orc_union16 *)ex->arrays[4];
2553   ptr5 = (orc_union16 *)ex->arrays[5];
2554
2555     /* 2: loadpw */
2556     var36.i = 0x00000000; /* 0 or 0f */
2557
2558   for (i = 0; i < n; i++) {
2559     /* 0: loadw */
2560     var35 = ptr5[i];
2561     /* 1: copyw */
2562     var39.i = var35.i;
2563     /* 3: avgsw */
2564     var40.i = (var39.i + var36.i + 1)>>1;
2565     /* 4: loadw */
2566     var37 = ptr4[i];
2567     /* 5: subw */
2568     var41.i = var37.i - var40.i;
2569     /* 6: addw */
2570     var38.i = var39.i + var41.i;
2571     /* 7: storew */
2572     ptr0[i] = var38;
2573   }
2574
2575 }
2576
2577 /* orc_haar_synth_s16_op */
2578 static void
2579 _backup_orc_haar_synth_s16_op (OrcExecutor * ORC_RESTRICT ex)
2580 {
2581   int i;
2582   int n = ex->n;
2583   orc_union16 * ORC_RESTRICT ptr0;
2584   orc_union16 * ORC_RESTRICT ptr1;
2585   const orc_union16 * ORC_RESTRICT ptr4;
2586   const orc_union16 * ORC_RESTRICT ptr5;
2587   orc_union16 var35;
2588   orc_union16 var36;
2589   orc_union16 var37;
2590   orc_union16 var38;
2591   orc_union16 var39;
2592   orc_union16 var40;
2593   orc_union16 var41;
2594   orc_union16 var42;
2595
2596   ptr0 = (orc_union16 *)ex->arrays[0];
2597   ptr1 = (orc_union16 *)ex->arrays[1];
2598   ptr4 = (orc_union16 *)ex->arrays[4];
2599   ptr5 = (orc_union16 *)ex->arrays[5];
2600
2601     /* 2: loadpw */
2602     var36.i = 0x00000000; /* 0 or 0f */
2603
2604   for (i = 0; i < n; i++) {
2605     /* 0: loadw */
2606     var35 = ptr5[i];
2607     /* 1: copyw */
2608     var40.i = var35.i;
2609     /* 3: avgsw */
2610     var41.i = (var40.i + var36.i + 1)>>1;
2611     /* 4: loadw */
2612     var37 = ptr4[i];
2613     /* 5: subw */
2614     var42.i = var37.i - var41.i;
2615     /* 6: copyw */
2616     var38.i = var42.i;
2617     /* 7: storew */
2618     ptr0[i] = var38;
2619     /* 8: addw */
2620     var39.i = var40.i + var42.i;
2621     /* 9: storew */
2622     ptr1[i] = var39;
2623   }
2624
2625 }
2626
2627 /* orc_haar_synth_s16 */
2628 static void
2629 _backup_orc_haar_synth_s16 (OrcExecutor * ORC_RESTRICT ex)
2630 {
2631   int i;
2632   int n = ex->n;
2633   orc_union16 * ORC_RESTRICT ptr0;
2634   orc_union16 * ORC_RESTRICT ptr1;
2635   orc_union16 var35;
2636   orc_union16 var36;
2637   orc_union16 var37;
2638   orc_union16 var38;
2639   orc_union16 var39;
2640   orc_union16 var40;
2641   orc_union16 var41;
2642   orc_union16 var42;
2643   orc_union16 var43;
2644
2645   ptr0 = (orc_union16 *)ex->arrays[0];
2646   ptr1 = (orc_union16 *)ex->arrays[1];
2647
2648     /* 4: loadpw */
2649     var37.i = 0x00000000; /* 0 or 0f */
2650
2651   for (i = 0; i < n; i++) {
2652     /* 0: loadw */
2653     var35 = ptr0[i];
2654     /* 1: copyw */
2655     var40.i = var35.i;
2656     /* 2: loadw */
2657     var36 = ptr1[i];
2658     /* 3: copyw */
2659     var41.i = var36.i;
2660     /* 5: avgsw */
2661     var42.i = (var41.i + var37.i + 1)>>1;
2662     /* 6: subw */
2663     var43.i = var40.i - var42.i;
2664     /* 7: copyw */
2665     var38.i = var43.i;
2666     /* 8: storew */
2667     ptr0[i] = var38;
2668     /* 9: addw */
2669     var39.i = var41.i + var43.i;
2670     /* 10: storew */
2671     ptr1[i] = var39;
2672   }
2673
2674 }
2675
2676 /* orc_haar_synth_rrshift1_int_s16 */
2677 static void
2678 _backup_orc_haar_synth_rrshift1_int_s16 (OrcExecutor * ORC_RESTRICT ex)
2679 {
2680   int i;
2681   int n = ex->n;
2682   orc_union32 * ORC_RESTRICT ptr0;
2683   const orc_union16 * ORC_RESTRICT ptr4;
2684   const orc_union16 * ORC_RESTRICT ptr5;
2685   orc_union16 var34;
2686   orc_union16 var35;
2687   orc_union16 var36;
2688   orc_union16 var37;
2689   orc_union16 var38;
2690   orc_union32 var39;
2691   orc_union16 var40;
2692   orc_union16 var41;
2693   orc_union16 var42;
2694   orc_union16 var43;
2695   orc_union16 var44;
2696   orc_union16 var45;
2697
2698   ptr0 = (orc_union32 *)ex->arrays[0];
2699   ptr4 = (orc_union16 *)ex->arrays[4];
2700   ptr5 = (orc_union16 *)ex->arrays[5];
2701
2702     /* 2: loadpw */
2703     var35.i = 0x00000000; /* 0 or 0f */
2704     /* 7: loadpw */
2705     var37.i = 0x00000000; /* 0 or 0f */
2706     /* 9: loadpw */
2707     var38.i = 0x00000000; /* 0 or 0f */
2708
2709   for (i = 0; i < n; i++) {
2710     /* 0: loadw */
2711     var34 = ptr5[i];
2712     /* 1: copyw */
2713     var40.i = var34.i;
2714     /* 3: avgsw */
2715     var41.i = (var40.i + var35.i + 1)>>1;
2716     /* 4: loadw */
2717     var36 = ptr4[i];
2718     /* 5: subw */
2719     var42.i = var36.i - var41.i;
2720     /* 6: addw */
2721     var43.i = var40.i + var42.i;
2722     /* 8: avgsw */
2723     var44.i = (var42.i + var37.i + 1)>>1;
2724     /* 10: avgsw */
2725     var45.i = (var43.i + var38.i + 1)>>1;
2726     /* 11: mergewl */
2727     var39.i = ((orc_uint16)var44.i & 0x0000ffff) | ((orc_uint16)var45.i << 16);
2728     /* 12: storel */
2729     ptr0[i] = var39;
2730   }
2731
2732 }
2733
2734 /* orc_haar_synth_int_s16 */
2735 static void
2736 _backup_orc_haar_synth_int_s16 (OrcExecutor * ORC_RESTRICT ex)
2737 {
2738   int i;
2739   int n = ex->n;
2740   orc_union32 * ORC_RESTRICT ptr0;
2741   const orc_union16 * ORC_RESTRICT ptr4;
2742   const orc_union16 * ORC_RESTRICT ptr5;
2743   orc_union16 var34;
2744   orc_union16 var35;
2745   orc_union16 var36;
2746   orc_union32 var37;
2747   orc_union16 var38;
2748   orc_union16 var39;
2749   orc_union16 var40;
2750   orc_union16 var41;
2751
2752   ptr0 = (orc_union32 *)ex->arrays[0];
2753   ptr4 = (orc_union16 *)ex->arrays[4];
2754   ptr5 = (orc_union16 *)ex->arrays[5];
2755
2756     /* 2: loadpw */
2757     var35.i = 0x00000000; /* 0 or 0f */
2758
2759   for (i = 0; i < n; i++) {
2760     /* 0: loadw */
2761     var34 = ptr5[i];
2762     /* 1: copyw */
2763     var38.i = var34.i;
2764     /* 3: avgsw */
2765     var39.i = (var38.i + var35.i + 1)>>1;
2766     /* 4: loadw */
2767     var36 = ptr4[i];
2768     /* 5: subw */
2769     var40.i = var36.i - var39.i;
2770     /* 6: addw */
2771     var41.i = var38.i + var40.i;
2772     /* 7: mergewl */
2773     var37.i = ((orc_uint16)var40.i & 0x0000ffff) | ((orc_uint16)var41.i << 16);
2774     /* 8: storel */
2775     ptr0[i] = var37;
2776   }
2777
2778 }
2779
2780 /* orc_haar_sub_s16 */
2781 static void
2782 _backup_orc_haar_sub_s16 (OrcExecutor * ORC_RESTRICT ex)
2783 {
2784   int i;
2785   int n = ex->n;
2786   orc_union16 * ORC_RESTRICT ptr0;
2787   const orc_union16 * ORC_RESTRICT ptr4;
2788   orc_union16 var32;
2789   orc_union16 var33;
2790   orc_union16 var34;
2791
2792   ptr0 = (orc_union16 *)ex->arrays[0];
2793   ptr4 = (orc_union16 *)ex->arrays[4];
2794
2795
2796   for (i = 0; i < n; i++) {
2797     /* 0: loadw */
2798     var32 = ptr0[i];
2799     /* 1: loadw */
2800     var33 = ptr4[i];
2801     /* 2: subw */
2802     var34.i = var32.i - var33.i;
2803     /* 3: storew */
2804     ptr0[i] = var34;
2805   }
2806
2807 }
2808
2809 /* orc_haar_add_half_s16 */
2810 static void
2811 _backup_orc_haar_add_half_s16 (OrcExecutor * ORC_RESTRICT ex)
2812 {
2813   int i;
2814   int n = ex->n;
2815   orc_union16 * ORC_RESTRICT ptr0;
2816   const orc_union16 * ORC_RESTRICT ptr4;
2817   orc_union16 var33;
2818   orc_union16 var34;
2819   orc_union16 var35;
2820   orc_union16 var36;
2821   orc_union16 var37;
2822
2823   ptr0 = (orc_union16 *)ex->arrays[0];
2824   ptr4 = (orc_union16 *)ex->arrays[4];
2825
2826     /* 1: loadpw */
2827     var34.i = 0x00000000; /* 0 or 0f */
2828
2829   for (i = 0; i < n; i++) {
2830     /* 0: loadw */
2831     var33 = ptr4[i];
2832     /* 2: avgsw */
2833     var37.i = (var33.i + var34.i + 1)>>1;
2834     /* 3: loadw */
2835     var35 = ptr0[i];
2836     /* 4: addw */
2837     var36.i = var35.i + var37.i;
2838     /* 5: storew */
2839     ptr0[i] = var36;
2840   }
2841
2842 }
2843
2844 /* orc_haar_add_s16 */
2845 static void
2846 _backup_orc_haar_add_s16 (OrcExecutor * ORC_RESTRICT ex)
2847 {
2848   int i;
2849   int n = ex->n;
2850   orc_union16 * ORC_RESTRICT ptr0;
2851   const orc_union16 * ORC_RESTRICT ptr4;
2852   orc_union16 var32;
2853   orc_union16 var33;
2854   orc_union16 var34;
2855
2856   ptr0 = (orc_union16 *)ex->arrays[0];
2857   ptr4 = (orc_union16 *)ex->arrays[4];
2858
2859
2860   for (i = 0; i < n; i++) {
2861     /* 0: loadw */
2862     var32 = ptr0[i];
2863     /* 1: loadw */
2864     var33 = ptr4[i];
2865     /* 2: addw */
2866     var34.i = var32.i + var33.i;
2867     /* 3: storew */
2868     ptr0[i] = var34;
2869   }
2870
2871 }
2872
2873 /* orc_haar_sub_half_s16 */
2874 static void
2875 _backup_orc_haar_sub_half_s16 (OrcExecutor * ORC_RESTRICT ex)
2876 {
2877   int i;
2878   int n = ex->n;
2879   orc_union16 * ORC_RESTRICT ptr0;
2880   const orc_union16 * ORC_RESTRICT ptr4;
2881   orc_union16 var33;
2882   orc_union16 var34;
2883   orc_union16 var35;
2884   orc_union16 var36;
2885   orc_union16 var37;
2886
2887   ptr0 = (orc_union16 *)ex->arrays[0];
2888   ptr4 = (orc_union16 *)ex->arrays[4];
2889
2890     /* 1: loadpw */
2891     var34.i = 0x00000000; /* 0 or 0f */
2892
2893   for (i = 0; i < n; i++) {
2894     /* 0: loadw */
2895     var33 = ptr4[i];
2896     /* 2: avgsw */
2897     var37.i = (var33.i + var34.i + 1)>>1;
2898     /* 3: loadw */
2899     var35 = ptr0[i];
2900     /* 4: subw */
2901     var36.i = var35.i - var37.i;
2902     /* 5: storew */
2903     ptr0[i] = var36;
2904   }
2905
2906 }
2907
2908 /* orc_sum_u8 */
2909 static void
2910 _backup_orc_sum_u8 (OrcExecutor * ORC_RESTRICT ex)
2911 {
2912   int i;
2913   int n = ex->n;
2914   const orc_int8 * ORC_RESTRICT ptr4;
2915   orc_union32 var12 =  { 0 };
2916   orc_int8 var34;
2917   orc_union16 var35;
2918   orc_union32 var36;
2919
2920   ptr4 = (orc_int8 *)ex->arrays[4];
2921
2922
2923   for (i = 0; i < n; i++) {
2924     /* 0: loadb */
2925     var34 = ptr4[i];
2926     /* 1: convubw */
2927     var35.i = (orc_uint8)var34;
2928     /* 2: convuwl */
2929     var36.i = (orc_uint16)var35.i;
2930     /* 3: accl */
2931     var12.i = var12.i + var36.i;
2932   }
2933   ex->accumulators[0] = var12.i;
2934
2935 }
2936
2937 /* orc_sum_s16 */
2938 static void
2939 _backup_orc_sum_s16 (OrcExecutor * ORC_RESTRICT ex)
2940 {
2941   int i;
2942   int n = ex->n;
2943   const orc_union16 * ORC_RESTRICT ptr4;
2944   orc_union32 var12 =  { 0 };
2945   orc_union16 var33;
2946   orc_union32 var34;
2947
2948   ptr4 = (orc_union16 *)ex->arrays[4];
2949
2950
2951   for (i = 0; i < n; i++) {
2952     /* 0: loadw */
2953     var33 = ptr4[i];
2954     /* 1: convswl */
2955     var34.i = var33.i;
2956     /* 2: accl */
2957     var12.i = var12.i + var34.i;
2958   }
2959   ex->accumulators[0] = var12.i;
2960
2961 }
2962
2963 /* orc_sum_square_diff_u8 */
2964 static void
2965 _backup_orc_sum_square_diff_u8 (OrcExecutor * ORC_RESTRICT ex)
2966 {
2967   int i;
2968   int n = ex->n;
2969   const orc_int8 * ORC_RESTRICT ptr4;
2970   const orc_int8 * ORC_RESTRICT ptr5;
2971   orc_union32 var12 =  { 0 };
2972   orc_int8 var35;
2973   orc_int8 var36;
2974   orc_union16 var37;
2975   orc_union16 var38;
2976   orc_union16 var39;
2977   orc_union16 var40;
2978   orc_union32 var41;
2979
2980   ptr4 = (orc_int8 *)ex->arrays[4];
2981   ptr5 = (orc_int8 *)ex->arrays[5];
2982
2983
2984   for (i = 0; i < n; i++) {
2985     /* 0: loadb */
2986     var35 = ptr4[i];
2987     /* 1: convubw */
2988     var37.i = (orc_uint8)var35;
2989     /* 2: loadb */
2990     var36 = ptr5[i];
2991     /* 3: convubw */
2992     var38.i = (orc_uint8)var36;
2993     /* 4: subw */
2994     var39.i = var37.i - var38.i;
2995     /* 5: mullw */
2996     var40.i = (var39.i * var39.i) & 0xffff;
2997     /* 6: convuwl */
2998     var41.i = (orc_uint16)var40.i;
2999     /* 7: accl */
3000     var12.i = var12.i + var41.i;
3001   }
3002   ex->accumulators[0] = var12.i;
3003
3004 }
3005
3006 /* orc_dequantise_s16_2d_4xn */
3007 static void
3008 _backup_orc_dequantise_s16_2d_4xn (OrcExecutor * ORC_RESTRICT ex)
3009 {
3010   int i;
3011   int j;
3012   int n = 4;
3013   int m = ex->params[ORC_VAR_A1];
3014   orc_union16 * ORC_RESTRICT ptr0;
3015   const orc_union16 * ORC_RESTRICT ptr4;
3016   orc_union16 var34;
3017   orc_union16 var35;
3018   orc_union16 var36;
3019   orc_union16 var37;
3020   orc_union16 var38;
3021   orc_union16 var39;
3022   orc_union16 var40;
3023   orc_union16 var41;
3024   orc_union16 var42;
3025   orc_union16 var43;
3026
3027   for (j = 0; j < m; j++) {
3028     ptr0 = ORC_PTR_OFFSET(ex->arrays[0], ex->params[0] * j);
3029     ptr4 = ORC_PTR_OFFSET(ex->arrays[4], ex->params[4] * j);
3030
3031       /* 4: loadpw */
3032         var35.i = ex->params[24];
3033       /* 6: loadpw */
3034         var36.i = ex->params[25];
3035
3036     for (i = 0; i < n; i++) {
3037       /* 0: loadw */
3038       var34 = ptr4[i];
3039       /* 1: copyw */
3040       var38.i = var34.i;
3041       /* 2: signw */
3042       var39.i = ORC_CLAMP(var38.i,-1,1);
3043       /* 3: absw */
3044       var40.i = ORC_ABS(var38.i);
3045       /* 5: mullw */
3046       var41.i = (var40.i * var35.i) & 0xffff;
3047       /* 7: addw */
3048       var42.i = var41.i + var36.i;
3049       /* 8: shrsw */
3050       var43.i = var42.i >> 2;
3051       /* 9: mullw */
3052       var37.i = (var43.i * var39.i) & 0xffff;
3053       /* 10: storew */
3054       ptr0[i] = var37;
3055     }
3056   }
3057
3058 }
3059
3060 /* orc_dequantise_s16_2d_8xn */
3061 static void
3062 _backup_orc_dequantise_s16_2d_8xn (OrcExecutor * ORC_RESTRICT ex)
3063 {
3064   int i;
3065   int j;
3066   int n = 8;
3067   int m = ex->params[ORC_VAR_A1];
3068   orc_union16 * ORC_RESTRICT ptr0;
3069   const orc_union16 * ORC_RESTRICT ptr4;
3070   orc_union16 var34;
3071   orc_union16 var35;
3072   orc_union16 var36;
3073   orc_union16 var37;
3074   orc_union16 var38;
3075   orc_union16 var39;
3076   orc_union16 var40;
3077   orc_union16 var41;
3078   orc_union16 var42;
3079   orc_union16 var43;
3080
3081   for (j = 0; j < m; j++) {
3082     ptr0 = ORC_PTR_OFFSET(ex->arrays[0], ex->params[0] * j);
3083     ptr4 = ORC_PTR_OFFSET(ex->arrays[4], ex->params[4] * j);
3084
3085       /* 4: loadpw */
3086         var35.i = ex->params[24];
3087       /* 6: loadpw */
3088         var36.i = ex->params[25];
3089
3090     for (i = 0; i < n; i++) {
3091       /* 0: loadw */
3092       var34 = ptr4[i];
3093       /* 1: copyw */
3094       var38.i = var34.i;
3095       /* 2: signw */
3096       var39.i = ORC_CLAMP(var38.i,-1,1);
3097       /* 3: absw */
3098       var40.i = ORC_ABS(var38.i);
3099       /* 5: mullw */
3100       var41.i = (var40.i * var35.i) & 0xffff;
3101       /* 7: addw */
3102       var42.i = var41.i + var36.i;
3103       /* 8: shrsw */
3104       var43.i = var42.i >> 2;
3105       /* 9: mullw */
3106       var37.i = (var43.i * var39.i) & 0xffff;
3107       /* 10: storew */
3108       ptr0[i] = var37;
3109     }
3110   }
3111
3112 }
3113
3114 /* orc_dequantise_s16_ip_2d_8xn */
3115 static void
3116 _backup_orc_dequantise_s16_ip_2d_8xn (OrcExecutor * ORC_RESTRICT ex)
3117 {
3118   int i;
3119   int j;
3120   int n = 8;
3121   int m = ex->params[ORC_VAR_A1];
3122   orc_union16 * ORC_RESTRICT ptr0;
3123   orc_union16 var34;
3124   orc_union16 var35;
3125   orc_union16 var36;
3126   orc_union16 var37;
3127   orc_union16 var38;
3128   orc_union16 var39;
3129   orc_union16 var40;
3130   orc_union16 var41;
3131   orc_union16 var42;
3132   orc_union16 var43;
3133
3134   for (j = 0; j < m; j++) {
3135     ptr0 = ORC_PTR_OFFSET(ex->arrays[0], ex->params[0] * j);
3136
3137       /* 4: loadpw */
3138         var35.i = ex->params[24];
3139       /* 6: loadpw */
3140         var36.i = ex->params[25];
3141
3142     for (i = 0; i < n; i++) {
3143       /* 0: loadw */
3144       var34 = ptr0[i];
3145       /* 1: copyw */
3146       var38.i = var34.i;
3147       /* 2: signw */
3148       var39.i = ORC_CLAMP(var38.i,-1,1);
3149       /* 3: absw */
3150       var40.i = ORC_ABS(var38.i);
3151       /* 5: mullw */
3152       var41.i = (var40.i * var35.i) & 0xffff;
3153       /* 7: addw */
3154       var42.i = var41.i + var36.i;
3155       /* 8: shrsw */
3156       var43.i = var42.i >> 2;
3157       /* 9: mullw */
3158       var37.i = (var43.i * var39.i) & 0xffff;
3159       /* 10: storew */
3160       ptr0[i] = var37;
3161     }
3162   }
3163
3164 }
3165
3166 /* orc_dequantise_s16_ip_2d */
3167 static void
3168 _backup_orc_dequantise_s16_ip_2d (OrcExecutor * ORC_RESTRICT ex)
3169 {
3170   int i;
3171   int j;
3172   int n = ex->n;
3173   int m = ex->params[ORC_VAR_A1];
3174   orc_union16 * ORC_RESTRICT ptr0;
3175   orc_union16 var34;
3176   orc_union16 var35;
3177   orc_union16 var36;
3178   orc_union16 var37;
3179   orc_union16 var38;
3180   orc_union16 var39;
3181   orc_union16 var40;
3182   orc_union16 var41;
3183   orc_union16 var42;
3184   orc_union16 var43;
3185
3186   for (j = 0; j < m; j++) {
3187     ptr0 = ORC_PTR_OFFSET(ex->arrays[0], ex->params[0] * j);
3188
3189       /* 4: loadpw */
3190         var35.i = ex->params[24];
3191       /* 6: loadpw */
3192         var36.i = ex->params[25];
3193
3194     for (i = 0; i < n; i++) {
3195       /* 0: loadw */
3196       var34 = ptr0[i];
3197       /* 1: copyw */
3198       var38.i = var34.i;
3199       /* 2: signw */
3200       var39.i = ORC_CLAMP(var38.i,-1,1);
3201       /* 3: absw */
3202       var40.i = ORC_ABS(var38.i);
3203       /* 5: mullw */
3204       var41.i = (var40.i * var35.i) & 0xffff;
3205       /* 7: addw */
3206       var42.i = var41.i + var36.i;
3207       /* 8: shrsw */
3208       var43.i = var42.i >> 2;
3209       /* 9: mullw */
3210       var37.i = (var43.i * var39.i) & 0xffff;
3211       /* 10: storew */
3212       ptr0[i] = var37;
3213     }
3214   }
3215
3216 }
3217
3218 /* orc_dequantise_s16_ip */
3219 static void
3220 _backup_orc_dequantise_s16_ip (OrcExecutor * ORC_RESTRICT ex)
3221 {
3222   int i;
3223   int n = ex->n;
3224   orc_union16 * ORC_RESTRICT ptr0;
3225   orc_union16 var34;
3226   orc_union16 var35;
3227   orc_union16 var36;
3228   orc_union16 var37;
3229   orc_union16 var38;
3230   orc_union16 var39;
3231   orc_union16 var40;
3232   orc_union16 var41;
3233   orc_union16 var42;
3234   orc_union16 var43;
3235
3236   ptr0 = (orc_union16 *)ex->arrays[0];
3237
3238     /* 4: loadpw */
3239     var35.i = ex->params[24];
3240     /* 6: loadpw */
3241     var36.i = ex->params[25];
3242
3243   for (i = 0; i < n; i++) {
3244     /* 0: loadw */
3245     var34 = ptr0[i];
3246     /* 1: copyw */
3247     var38.i = var34.i;
3248     /* 2: signw */
3249     var39.i = ORC_CLAMP(var38.i,-1,1);
3250     /* 3: absw */
3251     var40.i = ORC_ABS(var38.i);
3252     /* 5: mullw */
3253     var41.i = (var40.i * var35.i) & 0xffff;
3254     /* 7: addw */
3255     var42.i = var41.i + var36.i;
3256     /* 8: shrsw */
3257     var43.i = var42.i >> 2;
3258     /* 9: mullw */
3259     var37.i = (var43.i * var39.i) & 0xffff;
3260     /* 10: storew */
3261     ptr0[i] = var37;
3262   }
3263
3264 }
3265
3266 /* orc_dequantise_s16 */
3267 static void
3268 _backup_orc_dequantise_s16 (OrcExecutor * ORC_RESTRICT ex)
3269 {
3270   int i;
3271   int n = ex->n;
3272   orc_union16 * ORC_RESTRICT ptr0;
3273   const orc_union16 * ORC_RESTRICT ptr4;
3274   orc_union16 var34;
3275   orc_union16 var35;
3276   orc_union16 var36;
3277   orc_union16 var37;
3278   orc_union16 var38;
3279   orc_union16 var39;
3280   orc_union16 var40;
3281   orc_union16 var41;
3282   orc_union16 var42;
3283   orc_union16 var43;
3284
3285   ptr0 = (orc_union16 *)ex->arrays[0];
3286   ptr4 = (orc_union16 *)ex->arrays[4];
3287
3288     /* 4: loadpw */
3289     var35.i = ex->params[24];
3290     /* 6: loadpw */
3291     var36.i = ex->params[25];
3292
3293   for (i = 0; i < n; i++) {
3294     /* 0: loadw */
3295     var34 = ptr4[i];
3296     /* 1: copyw */
3297     var38.i = var34.i;
3298     /* 2: signw */
3299     var39.i = ORC_CLAMP(var38.i,-1,1);
3300     /* 3: absw */
3301     var40.i = ORC_ABS(var38.i);
3302     /* 5: mullw */
3303     var41.i = (var40.i * var35.i) & 0xffff;
3304     /* 7: addw */
3305     var42.i = var41.i + var36.i;
3306     /* 8: shrsw */
3307     var43.i = var42.i >> 2;
3308     /* 9: mullw */
3309     var37.i = (var43.i * var39.i) & 0xffff;
3310     /* 10: storew */
3311     ptr0[i] = var37;
3312   }
3313
3314 }
3315
3316 /* orc_dequantise_var_s16_ip */
3317 static void
3318 _backup_orc_dequantise_var_s16_ip (OrcExecutor * ORC_RESTRICT ex)
3319 {
3320   int i;
3321   int n = ex->n;
3322   orc_union16 * ORC_RESTRICT ptr0;
3323   const orc_union16 * ORC_RESTRICT ptr4;
3324   const orc_union16 * ORC_RESTRICT ptr5;
3325   orc_union16 var34;
3326   orc_union16 var35;
3327   orc_union16 var36;
3328   orc_union16 var37;
3329   orc_union16 var38;
3330   orc_union16 var39;
3331   orc_union16 var40;
3332   orc_union16 var41;
3333   orc_union16 var42;
3334   orc_union16 var43;
3335
3336   ptr0 = (orc_union16 *)ex->arrays[0];
3337   ptr4 = (orc_union16 *)ex->arrays[4];
3338   ptr5 = (orc_union16 *)ex->arrays[5];
3339
3340
3341   for (i = 0; i < n; i++) {
3342     /* 0: loadw */
3343     var34 = ptr0[i];
3344     /* 1: copyw */
3345     var38.i = var34.i;
3346     /* 2: signw */
3347     var39.i = ORC_CLAMP(var38.i,-1,1);
3348     /* 3: absw */
3349     var40.i = ORC_ABS(var38.i);
3350     /* 4: loadw */
3351     var35 = ptr4[i];
3352     /* 5: mullw */
3353     var41.i = (var40.i * var35.i) & 0xffff;
3354     /* 6: loadw */
3355     var36 = ptr5[i];
3356     /* 7: addw */
3357     var42.i = var41.i + var36.i;
3358     /* 8: shrsw */
3359     var43.i = var42.i >> 2;
3360     /* 9: mullw */
3361     var37.i = (var43.i * var39.i) & 0xffff;
3362     /* 10: storew */
3363     ptr0[i] = var37;
3364   }
3365
3366 }
3367
3368 /* orc_quantise1_s16 */
3369 static void
3370 _backup_orc_quantise1_s16 (OrcExecutor * ORC_RESTRICT ex)
3371 {
3372   int i;
3373   int n = ex->n;
3374   orc_union16 * ORC_RESTRICT ptr0;
3375   const orc_union16 * ORC_RESTRICT ptr4;
3376   orc_union16 var34;
3377   orc_union16 var35;
3378   orc_union16 var36;
3379   orc_union16 var37;
3380   orc_union16 var38;
3381   orc_union16 var39;
3382   orc_union16 var40;
3383   orc_union16 var41;
3384   orc_union16 var42;
3385   orc_union16 var43;
3386   orc_union16 var44;
3387
3388   ptr0 = (orc_union16 *)ex->arrays[0];
3389   ptr4 = (orc_union16 *)ex->arrays[4];
3390
3391     /* 5: loadpw */
3392     var35.i = ex->params[25];
3393     /* 7: loadpw */
3394     var36.i = ex->params[24];
3395
3396   for (i = 0; i < n; i++) {
3397     /* 0: loadw */
3398     var34 = ptr4[i];
3399     /* 1: copyw */
3400     var38.i = var34.i;
3401     /* 2: signw */
3402     var39.i = ORC_CLAMP(var38.i,-1,1);
3403     /* 3: absw */
3404     var40.i = ORC_ABS(var38.i);
3405     /* 4: shlw */
3406     var41.i = var40.i << 2;
3407     /* 6: subw */
3408     var42.i = var41.i - var35.i;
3409     /* 8: mulhuw */
3410     var43.i = ((orc_uint32)((orc_uint16)var42.i) * (orc_uint32)((orc_uint16)var36.i)) >> 16;
3411     /* 9: shruw */
3412     var44.i = ((orc_uint16)var43.i) >> ex->params[26];
3413     /* 10: mullw */
3414     var37.i = (var44.i * var39.i) & 0xffff;
3415     /* 11: storew */
3416     ptr0[i] = var37;
3417   }
3418
3419 }
3420
3421 /* orc_quantise2_s16 */
3422 static void
3423 _backup_orc_quantise2_s16 (OrcExecutor * ORC_RESTRICT ex)
3424 {
3425   int i;
3426   int n = ex->n;
3427   orc_union16 * ORC_RESTRICT ptr0;
3428   const orc_union16 * ORC_RESTRICT ptr4;
3429   orc_union16 var34;
3430   orc_union16 var35;
3431   orc_union16 var36;
3432   orc_union16 var37;
3433   orc_union16 var38;
3434   orc_union16 var39;
3435   orc_union16 var40;
3436   orc_union16 var41;
3437   orc_union16 var42;
3438
3439   ptr0 = (orc_union16 *)ex->arrays[0];
3440   ptr4 = (orc_union16 *)ex->arrays[4];
3441
3442     /* 5: loadpw */
3443     var35.i = ex->params[25];
3444
3445   for (i = 0; i < n; i++) {
3446     /* 0: loadw */
3447     var34 = ptr4[i];
3448     /* 1: copyw */
3449     var37.i = var34.i;
3450     /* 2: signw */
3451     var38.i = ORC_CLAMP(var37.i,-1,1);
3452     /* 3: absw */
3453     var39.i = ORC_ABS(var37.i);
3454     /* 4: shlw */
3455     var40.i = var39.i << 2;
3456     /* 6: subw */
3457     var41.i = var40.i - var35.i;
3458     /* 7: shruw */
3459     var42.i = ((orc_uint16)var41.i) >> ex->params[24];
3460     /* 8: mullw */
3461     var36.i = (var42.i * var38.i) & 0xffff;
3462     /* 9: storew */
3463     ptr0[i] = var36;
3464   }
3465
3466 }
3467
3468 /* orc_quantdequant1_s16 */
3469 static void
3470 _backup_orc_quantdequant1_s16 (OrcExecutor * ORC_RESTRICT ex)
3471 {
3472   int i;
3473   int n = ex->n;
3474   orc_union16 * ORC_RESTRICT ptr0;
3475   orc_union16 * ORC_RESTRICT ptr1;
3476   orc_union16 var34;
3477   orc_union16 var35;
3478   orc_union16 var36;
3479   orc_union16 var37;
3480   orc_union16 var38;
3481   orc_union16 var39;
3482   orc_union16 var40;
3483   orc_union16 var41;
3484   orc_union16 var42;
3485   orc_union16 var43;
3486   orc_union16 var44;
3487   orc_union16 var45;
3488   orc_union16 var46;
3489   orc_union16 var47;
3490   orc_union16 var48;
3491   orc_union16 var49;
3492   orc_union16 var50;
3493   orc_union16 var51;
3494   orc_union16 var52;
3495
3496   ptr0 = (orc_union16 *)ex->arrays[0];
3497   ptr1 = (orc_union16 *)ex->arrays[1];
3498
3499     /* 5: loadpw */
3500     var35.i = ex->params[25];
3501     /* 7: loadpw */
3502     var36.i = ex->params[24];
3503     /* 14: loadpw */
3504     var38.i = ex->params[27];
3505     /* 16: loadpw */
3506     var39.i = ex->params[28];
3507
3508   for (i = 0; i < n; i++) {
3509     /* 0: loadw */
3510     var34 = ptr1[i];
3511     /* 1: copyw */
3512     var41.i = var34.i;
3513     /* 2: signw */
3514     var42.i = ORC_CLAMP(var41.i,-1,1);
3515     /* 3: absw */
3516     var43.i = ORC_ABS(var41.i);
3517     /* 4: shlw */
3518     var44.i = var43.i << 2;
3519     /* 6: subw */
3520     var45.i = var44.i - var35.i;
3521     /* 8: mulhuw */
3522     var46.i = ((orc_uint32)((orc_uint16)var45.i) * (orc_uint32)((orc_uint16)var36.i)) >> 16;
3523     /* 9: shruw */
3524     var47.i = ((orc_uint16)var46.i) >> ex->params[26];
3525     /* 10: mullw */
3526     var48.i = (var47.i * var42.i) & 0xffff;
3527     /* 11: copyw */
3528     var37.i = var48.i;
3529     /* 12: storew */
3530     ptr0[i] = var37;
3531     /* 13: signw */
3532     var49.i = ORC_CLAMP(var48.i,-1,1);
3533     /* 15: mullw */
3534     var50.i = (var47.i * var38.i) & 0xffff;
3535     /* 17: addw */
3536     var51.i = var50.i + var39.i;
3537     /* 18: shrsw */
3538     var52.i = var51.i >> 2;
3539     /* 19: mullw */
3540     var40.i = (var52.i * var49.i) & 0xffff;
3541     /* 20: storew */
3542     ptr1[i] = var40;
3543   }
3544
3545 }
3546
3547 /* orc_quantdequant3_s16 */
3548 static void
3549 _backup_orc_quantdequant3_s16 (OrcExecutor * ORC_RESTRICT ex)
3550 {
3551   int i;
3552   int n = ex->n;
3553   orc_union16 * ORC_RESTRICT ptr0;
3554   orc_union16 * ORC_RESTRICT ptr1;
3555   orc_union16 var35;
3556   orc_union16 var36;
3557   orc_union16 var37;
3558   orc_union32 var38;
3559   orc_union16 var39;
3560   orc_union16 var40;
3561   orc_union16 var41;
3562   orc_union16 var42;
3563   orc_union16 var43;
3564   orc_union16 var44;
3565   orc_union16 var45;
3566   orc_union16 var46;
3567   orc_union16 var47;
3568   orc_union32 var48;
3569   orc_union32 var49;
3570   orc_union32 var50;
3571   orc_union16 var51;
3572   orc_union16 var52;
3573   orc_union16 var53;
3574   orc_union16 var54;
3575   orc_union16 var55;
3576   orc_union16 var56;
3577
3578   ptr0 = (orc_union16 *)ex->arrays[0];
3579   ptr1 = (orc_union16 *)ex->arrays[1];
3580
3581     /* 5: loadpw */
3582     var36.i = ex->params[25];
3583     /* 7: loadpw */
3584     var37.i = ex->params[24];
3585     /* 9: loadpl */
3586     var38.i = ex->params[29];
3587     /* 17: loadpw */
3588     var40.i = ex->params[27];
3589     /* 19: loadpw */
3590     var41.i = ex->params[28];
3591
3592   for (i = 0; i < n; i++) {
3593     /* 0: loadw */
3594     var35 = ptr1[i];
3595     /* 1: copyw */
3596     var43.i = var35.i;
3597     /* 2: signw */
3598     var44.i = ORC_CLAMP(var43.i,-1,1);
3599     /* 3: absw */
3600     var45.i = ORC_ABS(var43.i);
3601     /* 4: shlw */
3602     var46.i = var45.i << 2;
3603     /* 6: subw */
3604     var47.i = var46.i - var36.i;
3605     /* 8: muluwl */
3606     var48.i = ((orc_uint16)var47.i) * ((orc_uint16)var37.i);
3607     /* 10: addl */
3608     var49.i = var48.i + var38.i;
3609     /* 11: shrul */
3610     var50.i = ((orc_uint32)var49.i) >> ex->params[26];
3611     /* 12: convlw */
3612     var51.i = var50.i;
3613     /* 13: mullw */
3614     var52.i = (var51.i * var44.i) & 0xffff;
3615     /* 14: copyw */
3616     var39.i = var52.i;
3617     /* 15: storew */
3618     ptr0[i] = var39;
3619     /* 16: signw */
3620     var53.i = ORC_CLAMP(var52.i,-1,1);
3621     /* 18: mullw */
3622     var54.i = (var51.i * var40.i) & 0xffff;
3623     /* 20: addw */
3624     var55.i = var54.i + var41.i;
3625     /* 21: shrsw */
3626     var56.i = var55.i >> 2;
3627     /* 22: mullw */
3628     var42.i = (var56.i * var53.i) & 0xffff;
3629     /* 23: storew */
3630     ptr1[i] = var42;
3631   }
3632
3633 }
3634
3635 /* orc_quantdequant2_s16 */
3636 static void
3637 _backup_orc_quantdequant2_s16 (OrcExecutor * ORC_RESTRICT ex)
3638 {
3639   int i;
3640   int n = ex->n;
3641   orc_union16 * ORC_RESTRICT ptr0;
3642   orc_union16 * ORC_RESTRICT ptr1;
3643   orc_union16 var34;
3644   orc_union16 var35;
3645   orc_union16 var36;
3646   orc_union16 var37;
3647   orc_union16 var38;
3648   orc_union16 var39;
3649   orc_union16 var40;
3650   orc_union16 var41;
3651   orc_union16 var42;
3652   orc_union16 var43;
3653   orc_union16 var44;
3654   orc_union16 var45;
3655   orc_union16 var46;
3656   orc_union16 var47;
3657   orc_union16 var48;
3658   orc_union16 var49;
3659   orc_union16 var50;
3660
3661   ptr0 = (orc_union16 *)ex->arrays[0];
3662   ptr1 = (orc_union16 *)ex->arrays[1];
3663
3664     /* 5: loadpw */
3665     var35.i = ex->params[25];
3666     /* 12: loadpw */
3667     var37.i = ex->params[26];
3668     /* 14: loadpw */
3669     var38.i = ex->params[27];
3670
3671   for (i = 0; i < n; i++) {
3672     /* 0: loadw */
3673     var34 = ptr1[i];
3674     /* 1: copyw */
3675     var40.i = var34.i;
3676     /* 2: signw */
3677     var41.i = ORC_CLAMP(var40.i,-1,1);
3678     /* 3: absw */
3679     var42.i = ORC_ABS(var40.i);
3680     /* 4: shlw */
3681     var43.i = var42.i << 2;
3682     /* 6: subw */
3683     var44.i = var43.i - var35.i;
3684     /* 7: shruw */
3685     var45.i = ((orc_uint16)var44.i) >> ex->params[24];
3686     /* 8: mullw */
3687     var46.i = (var45.i * var41.i) & 0xffff;
3688     /* 9: copyw */
3689     var36.i = var46.i;
3690     /* 10: storew */
3691     ptr0[i] = var36;
3692     /* 11: signw */
3693     var47.i = ORC_CLAMP(var46.i,-1,1);
3694     /* 13: mullw */
3695     var48.i = (var45.i * var37.i) & 0xffff;
3696     /* 15: addw */
3697     var49.i = var48.i + var38.i;
3698     /* 16: shrsw */
3699     var50.i = var49.i >> 2;
3700     /* 17: mullw */
3701     var39.i = (var50.i * var47.i) & 0xffff;
3702     /* 18: storew */
3703     ptr1[i] = var39;
3704   }
3705
3706 }
3707
3708 /* orc_downsample_vert_u8 */
3709 static void
3710 _backup_orc_downsample_vert_u8 (OrcExecutor * ORC_RESTRICT ex)
3711 {
3712   int i;
3713   int n = ex->n;
3714   orc_int8 * ORC_RESTRICT ptr0;
3715   const orc_int8 * ORC_RESTRICT ptr4;
3716   const orc_int8 * ORC_RESTRICT ptr5;
3717   const orc_int8 * ORC_RESTRICT ptr6;
3718   const orc_int8 * ORC_RESTRICT ptr7;
3719   orc_int8 var35;
3720   orc_int8 var36;
3721   orc_union16 var37;
3722   orc_int8 var38;
3723   orc_int8 var39;
3724   orc_union16 var40;
3725   orc_union16 var41;
3726   orc_int8 var42;
3727   orc_union16 var43;
3728   orc_union16 var44;
3729   orc_union16 var45;
3730   orc_union16 var46;
3731   orc_union16 var47;
3732   orc_union16 var48;
3733   orc_union16 var49;
3734   orc_union16 var50;
3735   orc_union16 var51;
3736   orc_union16 var52;
3737   orc_union16 var53;
3738
3739   ptr0 = (orc_int8 *)ex->arrays[0];
3740   ptr4 = (orc_int8 *)ex->arrays[4];
3741   ptr5 = (orc_int8 *)ex->arrays[5];
3742   ptr6 = (orc_int8 *)ex->arrays[6];
3743   ptr7 = (orc_int8 *)ex->arrays[7];
3744
3745     /* 5: loadpw */
3746     var37.i = 0x00000006; /* 6 or 2.96439e-323f */
3747     /* 12: loadpw */
3748     var40.i = 0x0000001a; /* 26 or 1.28457e-322f */
3749     /* 15: loadpw */
3750     var41.i = 0x00000020; /* 32 or 1.58101e-322f */
3751
3752   for (i = 0; i < n; i++) {
3753     /* 0: loadb */
3754     var35 = ptr4[i];
3755     /* 1: convubw */
3756     var43.i = (orc_uint8)var35;
3757     /* 2: loadb */
3758     var36 = ptr7[i];
3759     /* 3: convubw */
3760     var44.i = (orc_uint8)var36;
3761     /* 4: addw */
3762     var45.i = var43.i + var44.i;
3763     /* 6: mullw */
3764     var46.i = (var45.i * var37.i) & 0xffff;
3765     /* 7: loadb */
3766     var38 = ptr5[i];
3767     /* 8: convubw */
3768     var47.i = (orc_uint8)var38;
3769     /* 9: loadb */
3770     var39 = ptr6[i];
3771     /* 10: convubw */
3772     var48.i = (orc_uint8)var39;
3773     /* 11: addw */
3774     var49.i = var47.i + var48.i;
3775     /* 13: mullw */
3776     var50.i = (var49.i * var40.i) & 0xffff;
3777     /* 14: addw */
3778     var51.i = var50.i + var46.i;
3779     /* 16: addw */
3780     var52.i = var51.i + var41.i;
3781     /* 17: shruw */
3782     var53.i = ((orc_uint16)var52.i) >> 6;
3783     /* 18: convwb */
3784     var42 = var53.i;
3785     /* 19: storeb */
3786     ptr0[i] = var42;
3787   }
3788
3789 }
3790
3791 /* orc_downsample_horiz_u8 */
3792 static void
3793 _backup_orc_downsample_horiz_u8 (OrcExecutor * ORC_RESTRICT ex)
3794 {
3795   int i;
3796   int n = ex->n;
3797   orc_int8 * ORC_RESTRICT ptr0;
3798   const orc_union16 * ORC_RESTRICT ptr4;
3799   const orc_union16 * ORC_RESTRICT ptr5;
3800   orc_union16 var38;
3801   orc_union16 var39;
3802   orc_union16 var40;
3803   orc_union16 var41;
3804   orc_union16 var42;
3805   orc_int8 var43;
3806   orc_union16 var44;
3807   orc_union16 var45;
3808   orc_int8 var46;
3809   orc_union16 var47;
3810   orc_int8 var48;
3811   orc_union16 var49;
3812   orc_union16 var50;
3813   orc_union16 var51;
3814   orc_int8 var52;
3815   orc_union16 var53;
3816   orc_int8 var54;
3817   orc_union16 var55;
3818   orc_union16 var56;
3819   orc_union16 var57;
3820   orc_union16 var58;
3821   orc_union16 var59;
3822   orc_union16 var60;
3823
3824   ptr0 = (orc_int8 *)ex->arrays[0];
3825   ptr4 = (orc_union16 *)ex->arrays[4];
3826   ptr5 = (orc_union16 *)ex->arrays[5];
3827
3828     /* 9: loadpw */
3829     var40.i = 0x00000006; /* 6 or 2.96439e-323f */
3830     /* 16: loadpw */
3831     var41.i = 0x0000001a; /* 26 or 1.28457e-322f */
3832     /* 19: loadpw */
3833     var42.i = 0x00000020; /* 32 or 1.58101e-322f */
3834
3835   for (i = 0; i < n; i++) {
3836     /* 0: loadw */
3837     var38 = ptr4[i];
3838     /* 1: copyw */
3839     var44.i = var38.i;
3840     /* 2: loadw */
3841     var39 = ptr5[i];
3842     /* 3: copyw */
3843     var45.i = var39.i;
3844     /* 4: select0wb */
3845     var46 = (orc_uint16)var44.i & 0xff;
3846     /* 5: convubw */
3847     var47.i = (orc_uint8)var46;
3848     /* 6: select1wb */
3849     var48 = ((orc_uint16)var45.i >> 8)&0xff;
3850     /* 7: convubw */
3851     var49.i = (orc_uint8)var48;
3852     /* 8: addw */
3853     var50.i = var47.i + var49.i;
3854     /* 10: mullw */
3855     var51.i = (var50.i * var40.i) & 0xffff;
3856     /* 11: select1wb */
3857     var52 = ((orc_uint16)var44.i >> 8)&0xff;
3858     /* 12: convubw */
3859     var53.i = (orc_uint8)var52;
3860     /* 13: select0wb */
3861     var54 = (orc_uint16)var45.i & 0xff;
3862     /* 14: convubw */
3863     var55.i = (orc_uint8)var54;
3864     /* 15: addw */
3865     var56.i = var53.i + var55.i;
3866     /* 17: mullw */
3867     var57.i = (var56.i * var41.i) & 0xffff;
3868     /* 18: addw */
3869     var58.i = var51.i + var57.i;
3870     /* 20: addw */
3871     var59.i = var58.i + var42.i;
3872     /* 21: shruw */
3873     var60.i = ((orc_uint16)var59.i) >> 6;
3874     /* 22: convwb */
3875     var43 = var60.i;
3876     /* 23: storeb */
3877     ptr0[i] = var43;
3878   }
3879
3880 }
3881
3882 /* orc_stats_moment_s16 */
3883 static void
3884 _backup_orc_stats_moment_s16 (OrcExecutor * ORC_RESTRICT ex)
3885 {
3886   int i;
3887   int n = ex->n;
3888   const orc_union16 * ORC_RESTRICT ptr4;
3889   orc_union32 var12 =  { 0 };
3890   orc_union16 var34;
3891   orc_union16 var35;
3892   orc_union16 var36;
3893   orc_union16 var37;
3894   orc_union16 var38;
3895   orc_union16 var39;
3896   orc_union32 var40;
3897
3898   ptr4 = (orc_union16 *)ex->arrays[4];
3899
3900     /* 2: loadpw */
3901     var35.i = 0x00000002; /* 2 or 9.88131e-324f */
3902     /* 4: loadpw */
3903     var36.i = 0x00000000; /* 0 or 0f */
3904
3905   for (i = 0; i < n; i++) {
3906     /* 0: loadw */
3907     var34 = ptr4[i];
3908     /* 1: absw */
3909     var37.i = ORC_ABS(var34.i);
3910     /* 3: subw */
3911     var38.i = var37.i - var35.i;
3912     /* 5: maxsw */
3913     var39.i = ORC_MAX(var38.i, var36.i);
3914     /* 6: convuwl */
3915     var40.i = (orc_uint16)var39.i;
3916     /* 7: accl */
3917     var12.i = var12.i + var40.i;
3918   }
3919   ex->accumulators[0] = var12.i;
3920
3921 }
3922
3923 /* orc_stats_above_s16 */
3924 static void
3925 _backup_orc_stats_above_s16 (OrcExecutor * ORC_RESTRICT ex)
3926 {
3927   int i;
3928   int n = ex->n;
3929   const orc_union16 * ORC_RESTRICT ptr4;
3930   orc_union32 var12 =  { 0 };
3931   orc_union16 var34;
3932   orc_union16 var35;
3933   orc_union16 var36;
3934   orc_union16 var37;
3935   orc_union16 var38;
3936   orc_union16 var39;
3937   orc_union16 var40;
3938   orc_union16 var41;
3939   orc_union32 var42;
3940
3941   ptr4 = (orc_union16 *)ex->arrays[4];
3942
3943     /* 2: loadpw */
3944     var35.i = 0x00000001; /* 1 or 4.94066e-324f */
3945     /* 4: loadpw */
3946     var36.i = 0x00000000; /* 0 or 0f */
3947     /* 6: loadpw */
3948     var37.i = 0x00000001; /* 1 or 4.94066e-324f */
3949
3950   for (i = 0; i < n; i++) {
3951     /* 0: loadw */
3952     var34 = ptr4[i];
3953     /* 1: absw */
3954     var38.i = ORC_ABS(var34.i);
3955     /* 3: subw */
3956     var39.i = var38.i - var35.i;
3957     /* 5: maxsw */
3958     var40.i = ORC_MAX(var39.i, var36.i);
3959     /* 7: minsw */
3960     var41.i = ORC_MIN(var40.i, var37.i);
3961     /* 8: convuwl */
3962     var42.i = (orc_uint16)var41.i;
3963     /* 9: accl */
3964     var12.i = var12.i + var42.i;
3965   }
3966   ex->accumulators[0] = var12.i;
3967
3968 }
3969
3970 /* orc_accw */
3971 static void
3972 _backup_orc_accw (OrcExecutor * ORC_RESTRICT ex)
3973 {
3974   int i;
3975   int n = ex->n;
3976   const orc_union16 * ORC_RESTRICT ptr4;
3977   orc_union16 var12 =  { 0 };
3978   orc_union16 var33;
3979   orc_union16 var34;
3980
3981   ptr4 = (orc_union16 *)ex->arrays[4];
3982
3983
3984   for (i = 0; i < n; i++) {
3985     /* 0: loadw */
3986     var33 = ptr4[i];
3987     /* 1: absw */
3988     var34.i = ORC_ABS(var33.i);
3989     /* 2: accw */
3990     var12.i = var12.i + var34.i;
3991   }
3992   ex->accumulators[0] = (var12.i & 0xffff);
3993
3994 }
3995
3996 /* orc_avg2_8xn_u8 */
3997 static void
3998 _backup_orc_avg2_8xn_u8 (OrcExecutor * ORC_RESTRICT ex)
3999 {
4000   int i;
4001   int j;
4002   int n = 8;
4003   int m = ex->params[ORC_VAR_A1];
4004   orc_int8 * ORC_RESTRICT ptr0;
4005   const orc_int8 * ORC_RESTRICT ptr4;
4006   const orc_int8 * ORC_RESTRICT ptr5;
4007   orc_int8 var32;
4008   orc_int8 var33;
4009   orc_int8 var34;
4010
4011   for (j = 0; j < m; j++) {
4012     ptr0 = ORC_PTR_OFFSET(ex->arrays[0], ex->params[0] * j);
4013     ptr4 = ORC_PTR_OFFSET(ex->arrays[4], ex->params[4] * j);
4014     ptr5 = ORC_PTR_OFFSET(ex->arrays[5], ex->params[5] * j);
4015
4016
4017     for (i = 0; i < n; i++) {
4018       /* 0: loadb */
4019       var32 = ptr4[i];
4020       /* 1: loadb */
4021       var33 = ptr5[i];
4022       /* 2: avgub */
4023       var34 = ((orc_uint8)var32 + (orc_uint8)var33 + 1)>>1;
4024       /* 3: storeb */
4025       ptr0[i] = var34;
4026     }
4027   }
4028
4029 }
4030
4031 /* orc_avg2_12xn_u8 */
4032 static void
4033 _backup_orc_avg2_12xn_u8 (OrcExecutor * ORC_RESTRICT ex)
4034 {
4035   int i;
4036   int j;
4037   int n = 12;
4038   int m = ex->params[ORC_VAR_A1];
4039   orc_int8 * ORC_RESTRICT ptr0;
4040   const orc_int8 * ORC_RESTRICT ptr4;
4041   const orc_int8 * ORC_RESTRICT ptr5;
4042   orc_int8 var32;
4043   orc_int8 var33;
4044   orc_int8 var34;
4045
4046   for (j = 0; j < m; j++) {
4047     ptr0 = ORC_PTR_OFFSET(ex->arrays[0], ex->params[0] * j);
4048     ptr4 = ORC_PTR_OFFSET(ex->arrays[4], ex->params[4] * j);
4049     ptr5 = ORC_PTR_OFFSET(ex->arrays[5], ex->params[5] * j);
4050
4051
4052     for (i = 0; i < n; i++) {
4053       /* 0: loadb */
4054       var32 = ptr4[i];
4055       /* 1: loadb */
4056       var33 = ptr5[i];
4057       /* 2: avgub */
4058       var34 = ((orc_uint8)var32 + (orc_uint8)var33 + 1)>>1;
4059       /* 3: storeb */
4060       ptr0[i] = var34;
4061     }
4062   }
4063
4064 }
4065
4066 /* orc_avg2_16xn_u8 */
4067 static void
4068 _backup_orc_avg2_16xn_u8 (OrcExecutor * ORC_RESTRICT ex)
4069 {
4070   int i;
4071   int j;
4072   int n = 16;
4073   int m = ex->params[ORC_VAR_A1];
4074   orc_int8 * ORC_RESTRICT ptr0;
4075   const orc_int8 * ORC_RESTRICT ptr4;
4076   const orc_int8 * ORC_RESTRICT ptr5;
4077   orc_int8 var32;
4078   orc_int8 var33;
4079   orc_int8 var34;
4080
4081   for (j = 0; j < m; j++) {
4082     ptr0 = ORC_PTR_OFFSET(ex->arrays[0], ex->params[0] * j);
4083     ptr4 = ORC_PTR_OFFSET(ex->arrays[4], ex->params[4] * j);
4084     ptr5 = ORC_PTR_OFFSET(ex->arrays[5], ex->params[5] * j);
4085
4086
4087     for (i = 0; i < n; i++) {
4088       /* 0: loadb */
4089       var32 = ptr4[i];
4090       /* 1: loadb */
4091       var33 = ptr5[i];
4092       /* 2: avgub */
4093       var34 = ((orc_uint8)var32 + (orc_uint8)var33 + 1)>>1;
4094       /* 3: storeb */
4095       ptr0[i] = var34;
4096     }
4097   }
4098
4099 }
4100
4101 /* orc_avg2_32xn_u8 */
4102 static void
4103 _backup_orc_avg2_32xn_u8 (OrcExecutor * ORC_RESTRICT ex)
4104 {
4105   int i;
4106   int j;
4107   int n = 32;
4108   int m = ex->params[ORC_VAR_A1];
4109   orc_int8 * ORC_RESTRICT ptr0;
4110   const orc_int8 * ORC_RESTRICT ptr4;
4111   const orc_int8 * ORC_RESTRICT ptr5;
4112   orc_int8 var32;
4113   orc_int8 var33;
4114   orc_int8 var34;
4115
4116   for (j = 0; j < m; j++) {
4117     ptr0 = ORC_PTR_OFFSET(ex->arrays[0], ex->params[0] * j);
4118     ptr4 = ORC_PTR_OFFSET(ex->arrays[4], ex->params[4] * j);
4119     ptr5 = ORC_PTR_OFFSET(ex->arrays[5], ex->params[5] * j);
4120
4121
4122     for (i = 0; i < n; i++) {
4123       /* 0: loadb */
4124       var32 = ptr4[i];
4125       /* 1: loadb */
4126       var33 = ptr5[i];
4127       /* 2: avgub */
4128       var34 = ((orc_uint8)var32 + (orc_uint8)var33 + 1)>>1;
4129       /* 3: storeb */
4130       ptr0[i] = var34;
4131     }
4132   }
4133
4134 }
4135
4136 /* orc_avg2_nxm_u8 */
4137 static void
4138 _backup_orc_avg2_nxm_u8 (OrcExecutor * ORC_RESTRICT ex)
4139 {
4140   int i;
4141   int j;
4142   int n = ex->n;
4143   int m = ex->params[ORC_VAR_A1];
4144   orc_int8 * ORC_RESTRICT ptr0;
4145   const orc_int8 * ORC_RESTRICT ptr4;
4146   const orc_int8 * ORC_RESTRICT ptr5;
4147   orc_int8 var32;
4148   orc_int8 var33;
4149   orc_int8 var34;
4150
4151   for (j = 0; j < m; j++) {
4152     ptr0 = ORC_PTR_OFFSET(ex->arrays[0], ex->params[0] * j);
4153     ptr4 = ORC_PTR_OFFSET(ex->arrays[4], ex->params[4] * j);
4154     ptr5 = ORC_PTR_OFFSET(ex->arrays[5], ex->params[5] * j);
4155
4156
4157     for (i = 0; i < n; i++) {
4158       /* 0: loadb */
4159       var32 = ptr4[i];
4160       /* 1: loadb */
4161       var33 = ptr5[i];
4162       /* 2: avgub */
4163       var34 = ((orc_uint8)var32 + (orc_uint8)var33 + 1)>>1;
4164       /* 3: storeb */
4165       ptr0[i] = var34;
4166     }
4167   }
4168
4169 }
4170
4171 /* orc_combine4_8xn_u8 */
4172 static void
4173 _backup_orc_combine4_8xn_u8 (OrcExecutor * ORC_RESTRICT ex)
4174 {
4175   int i;
4176   int j;
4177   int n = 8;
4178   int m = ex->params[ORC_VAR_A1];
4179   orc_int8 * ORC_RESTRICT ptr0;
4180   const orc_int8 * ORC_RESTRICT ptr4;
4181   const orc_int8 * ORC_RESTRICT ptr5;
4182   const orc_int8 * ORC_RESTRICT ptr6;
4183   const orc_int8 * ORC_RESTRICT ptr7;
4184   orc_int8 var34;
4185   orc_union16 var35;
4186   orc_int8 var36;
4187   orc_union16 var37;
4188   orc_int8 var38;
4189   orc_union16 var39;
4190   orc_int8 var40;
4191   orc_union16 var41;
4192   orc_union16 var42;
4193   orc_int8 var43;
4194   orc_union16 var44;
4195   orc_union16 var45;
4196   orc_union16 var46;
4197   orc_union16 var47;
4198   orc_union16 var48;
4199   orc_union16 var49;
4200   orc_union16 var50;
4201   orc_union16 var51;
4202   orc_union16 var52;
4203   orc_union16 var53;
4204   orc_union16 var54;
4205   orc_union16 var55;
4206
4207   for (j = 0; j < m; j++) {
4208     ptr0 = ORC_PTR_OFFSET(ex->arrays[0], ex->params[0] * j);
4209     ptr4 = ORC_PTR_OFFSET(ex->arrays[4], ex->params[4] * j);
4210     ptr5 = ORC_PTR_OFFSET(ex->arrays[5], ex->params[5] * j);
4211     ptr6 = ORC_PTR_OFFSET(ex->arrays[6], ex->params[6] * j);
4212     ptr7 = ORC_PTR_OFFSET(ex->arrays[7], ex->params[7] * j);
4213
4214       /* 2: loadpw */
4215         var35.i = ex->params[24];
4216       /* 6: loadpw */
4217         var37.i = ex->params[25];
4218       /* 11: loadpw */
4219         var39.i = ex->params[26];
4220       /* 16: loadpw */
4221         var41.i = ex->params[27];
4222       /* 19: loadpw */
4223         var42.i = 0x00000008; /* 8 or 3.95253e-323f */
4224
4225     for (i = 0; i < n; i++) {
4226       /* 0: loadb */
4227       var34 = ptr4[i];
4228       /* 1: convubw */
4229       var44.i = (orc_uint8)var34;
4230       /* 3: mullw */
4231       var45.i = (var44.i * var35.i) & 0xffff;
4232       /* 4: loadb */
4233       var36 = ptr5[i];
4234       /* 5: convubw */
4235       var46.i = (orc_uint8)var36;
4236       /* 7: mullw */
4237       var47.i = (var46.i * var37.i) & 0xffff;
4238       /* 8: addw */
4239       var48.i = var45.i + var47.i;
4240       /* 9: loadb */
4241       var38 = ptr6[i];
4242       /* 10: convubw */
4243       var49.i = (orc_uint8)var38;
4244       /* 12: mullw */
4245       var50.i = (var49.i * var39.i) & 0xffff;
4246       /* 13: addw */
4247       var51.i = var48.i + var50.i;
4248       /* 14: loadb */
4249       var40 = ptr7[i];
4250       /* 15: convubw */
4251       var52.i = (orc_uint8)var40;
4252       /* 17: mullw */
4253       var53.i = (var52.i * var41.i) & 0xffff;
4254       /* 18: addw */
4255       var54.i = var51.i + var53.i;
4256       /* 20: addw */
4257       var55.i = var54.i + var42.i;
4258       /* 21: convsuswb */
4259       var43 = ORC_CLAMP_UB(var55.i);
4260       /* 22: storeb */
4261       ptr0[i] = var43;
4262     }
4263   }
4264
4265 }
4266
4267 /* orc_combine4_12xn_u8 */
4268 static void
4269 _backup_orc_combine4_12xn_u8 (OrcExecutor * ORC_RESTRICT ex)
4270 {
4271   int i;
4272   int j;
4273   int n = 12;
4274   int m = ex->params[ORC_VAR_A1];
4275   orc_int8 * ORC_RESTRICT ptr0;
4276   const orc_int8 * ORC_RESTRICT ptr4;
4277   const orc_int8 * ORC_RESTRICT ptr5;
4278   const orc_int8 * ORC_RESTRICT ptr6;
4279   const orc_int8 * ORC_RESTRICT ptr7;
4280   orc_int8 var34;
4281   orc_union16 var35;
4282   orc_int8 var36;
4283   orc_union16 var37;
4284   orc_int8 var38;
4285   orc_union16 var39;
4286   orc_int8 var40;
4287   orc_union16 var41;
4288   orc_union16 var42;
4289   orc_int8 var43;
4290   orc_union16 var44;
4291   orc_union16 var45;
4292   orc_union16 var46;
4293   orc_union16 var47;
4294   orc_union16 var48;
4295   orc_union16 var49;
4296   orc_union16 var50;
4297   orc_union16 var51;
4298   orc_union16 var52;
4299   orc_union16 var53;
4300   orc_union16 var54;
4301   orc_union16 var55;
4302
4303   for (j = 0; j < m; j++) {
4304     ptr0 = ORC_PTR_OFFSET(ex->arrays[0], ex->params[0] * j);
4305     ptr4 = ORC_PTR_OFFSET(ex->arrays[4], ex->params[4] * j);
4306     ptr5 = ORC_PTR_OFFSET(ex->arrays[5], ex->params[5] * j);
4307     ptr6 = ORC_PTR_OFFSET(ex->arrays[6], ex->params[6] * j);
4308     ptr7 = ORC_PTR_OFFSET(ex->arrays[7], ex->params[7] * j);
4309
4310       /* 2: loadpw */
4311         var35.i = ex->params[24];
4312       /* 6: loadpw */
4313         var37.i = ex->params[25];
4314       /* 11: loadpw */
4315         var39.i = ex->params[26];
4316       /* 16: loadpw */
4317         var41.i = ex->params[27];
4318       /* 19: loadpw */
4319         var42.i = 0x00000008; /* 8 or 3.95253e-323f */
4320
4321     for (i = 0; i < n; i++) {
4322       /* 0: loadb */
4323       var34 = ptr4[i];
4324       /* 1: convubw */
4325       var44.i = (orc_uint8)var34;
4326       /* 3: mullw */
4327       var45.i = (var44.i * var35.i) & 0xffff;
4328       /* 4: loadb */
4329       var36 = ptr5[i];
4330       /* 5: convubw */
4331       var46.i = (orc_uint8)var36;
4332       /* 7: mullw */
4333       var47.i = (var46.i * var37.i) & 0xffff;
4334       /* 8: addw */
4335       var48.i = var45.i + var47.i;
4336       /* 9: loadb */
4337       var38 = ptr6[i];
4338       /* 10: convubw */
4339       var49.i = (orc_uint8)var38;
4340       /* 12: mullw */
4341       var50.i = (var49.i * var39.i) & 0xffff;
4342       /* 13: addw */
4343       var51.i = var48.i + var50.i;
4344       /* 14: loadb */
4345       var40 = ptr7[i];
4346       /* 15: convubw */
4347       var52.i = (orc_uint8)var40;
4348       /* 17: mullw */
4349       var53.i = (var52.i * var41.i) & 0xffff;
4350       /* 18: addw */
4351       var54.i = var51.i + var53.i;
4352       /* 20: addw */
4353       var55.i = var54.i + var42.i;
4354       /* 21: convsuswb */
4355       var43 = ORC_CLAMP_UB(var55.i);
4356       /* 22: storeb */
4357       ptr0[i] = var43;
4358     }
4359   }
4360
4361 }
4362
4363 /* orc_combine4_16xn_u8 */
4364 static void
4365 _backup_orc_combine4_16xn_u8 (OrcExecutor * ORC_RESTRICT ex)
4366 {
4367   int i;
4368   int j;
4369   int n = 16;
4370   int m = ex->params[ORC_VAR_A1];
4371   orc_int8 * ORC_RESTRICT ptr0;
4372   const orc_int8 * ORC_RESTRICT ptr4;
4373   const orc_int8 * ORC_RESTRICT ptr5;
4374   const orc_int8 * ORC_RESTRICT ptr6;
4375   const orc_int8 * ORC_RESTRICT ptr7;
4376   orc_int8 var34;
4377   orc_union16 var35;
4378   orc_int8 var36;
4379   orc_union16 var37;
4380   orc_int8 var38;
4381   orc_union16 var39;
4382   orc_int8 var40;
4383   orc_union16 var41;
4384   orc_union16 var42;
4385   orc_int8 var43;
4386   orc_union16 var44;
4387   orc_union16 var45;
4388   orc_union16 var46;
4389   orc_union16 var47;
4390   orc_union16 var48;
4391   orc_union16 var49;
4392   orc_union16 var50;
4393   orc_union16 var51;
4394   orc_union16 var52;
4395   orc_union16 var53;
4396   orc_union16 var54;
4397   orc_union16 var55;
4398
4399   for (j = 0; j < m; j++) {
4400     ptr0 = ORC_PTR_OFFSET(ex->arrays[0], ex->params[0] * j);
4401     ptr4 = ORC_PTR_OFFSET(ex->arrays[4], ex->params[4] * j);
4402     ptr5 = ORC_PTR_OFFSET(ex->arrays[5], ex->params[5] * j);
4403     ptr6 = ORC_PTR_OFFSET(ex->arrays[6], ex->params[6] * j);
4404     ptr7 = ORC_PTR_OFFSET(ex->arrays[7], ex->params[7] * j);
4405
4406       /* 2: loadpw */
4407         var35.i = ex->params[24];
4408       /* 6: loadpw */
4409         var37.i = ex->params[25];
4410       /* 11: loadpw */
4411         var39.i = ex->params[26];
4412       /* 16: loadpw */
4413         var41.i = ex->params[27];
4414       /* 19: loadpw */
4415         var42.i = 0x00000008; /* 8 or 3.95253e-323f */
4416
4417     for (i = 0; i < n; i++) {
4418       /* 0: loadb */
4419       var34 = ptr4[i];
4420       /* 1: convubw */
4421       var44.i = (orc_uint8)var34;
4422       /* 3: mullw */
4423       var45.i = (var44.i * var35.i) & 0xffff;
4424       /* 4: loadb */
4425       var36 = ptr5[i];
4426       /* 5: convubw */
4427       var46.i = (orc_uint8)var36;
4428       /* 7: mullw */
4429       var47.i = (var46.i * var37.i) & 0xffff;
4430       /* 8: addw */
4431       var48.i = var45.i + var47.i;
4432       /* 9: loadb */
4433       var38 = ptr6[i];
4434       /* 10: convubw */
4435       var49.i = (orc_uint8)var38;
4436       /* 12: mullw */
4437       var50.i = (var49.i * var39.i) & 0xffff;
4438       /* 13: addw */
4439       var51.i = var48.i + var50.i;
4440       /* 14: loadb */
4441       var40 = ptr7[i];
4442       /* 15: convubw */
4443       var52.i = (orc_uint8)var40;
4444       /* 17: mullw */
4445       var53.i = (var52.i * var41.i) & 0xffff;
4446       /* 18: addw */
4447       var54.i = var51.i + var53.i;
4448       /* 20: addw */
4449       var55.i = var54.i + var42.i;
4450       /* 21: convsuswb */
4451       var43 = ORC_CLAMP_UB(var55.i);
4452       /* 22: storeb */
4453       ptr0[i] = var43;
4454     }
4455   }
4456
4457 }
4458
4459 /* orc_combine4_24xn_u8 */
4460 static void
4461 _backup_orc_combine4_24xn_u8 (OrcExecutor * ORC_RESTRICT ex)
4462 {
4463   int i;
4464   int j;
4465   int n = 24;
4466   int m = ex->params[ORC_VAR_A1];
4467   orc_int8 * ORC_RESTRICT ptr0;
4468   const orc_int8 * ORC_RESTRICT ptr4;
4469   const orc_int8 * ORC_RESTRICT ptr5;
4470   const orc_int8 * ORC_RESTRICT ptr6;
4471   const orc_int8 * ORC_RESTRICT ptr7;
4472   orc_int8 var34;
4473   orc_union16 var35;
4474   orc_int8 var36;
4475   orc_union16 var37;
4476   orc_int8 var38;
4477   orc_union16 var39;
4478   orc_int8 var40;
4479   orc_union16 var41;
4480   orc_union16 var42;
4481   orc_int8 var43;
4482   orc_union16 var44;
4483   orc_union16 var45;
4484   orc_union16 var46;
4485   orc_union16 var47;
4486   orc_union16 var48;
4487   orc_union16 var49;
4488   orc_union16 var50;
4489   orc_union16 var51;
4490   orc_union16 var52;
4491   orc_union16 var53;
4492   orc_union16 var54;
4493   orc_union16 var55;
4494
4495   for (j = 0; j < m; j++) {
4496     ptr0 = ORC_PTR_OFFSET(ex->arrays[0], ex->params[0] * j);
4497     ptr4 = ORC_PTR_OFFSET(ex->arrays[4], ex->params[4] * j);
4498     ptr5 = ORC_PTR_OFFSET(ex->arrays[5], ex->params[5] * j);
4499     ptr6 = ORC_PTR_OFFSET(ex->arrays[6], ex->params[6] * j);
4500     ptr7 = ORC_PTR_OFFSET(ex->arrays[7], ex->params[7] * j);
4501
4502       /* 2: loadpw */
4503         var35.i = ex->params[24];
4504       /* 6: loadpw */
4505         var37.i = ex->params[25];
4506       /* 11: loadpw */
4507         var39.i = ex->params[26];
4508       /* 16: loadpw */
4509         var41.i = ex->params[27];
4510       /* 19: loadpw */
4511         var42.i = 0x00000008; /* 8 or 3.95253e-323f */
4512
4513     for (i = 0; i < n; i++) {
4514       /* 0: loadb */
4515       var34 = ptr4[i];
4516       /* 1: convubw */
4517       var44.i = (orc_uint8)var34;
4518       /* 3: mullw */
4519       var45.i = (var44.i * var35.i) & 0xffff;
4520       /* 4: loadb */
4521       var36 = ptr5[i];
4522       /* 5: convubw */
4523       var46.i = (orc_uint8)var36;
4524       /* 7: mullw */
4525       var47.i = (var46.i * var37.i) & 0xffff;
4526       /* 8: addw */
4527       var48.i = var45.i + var47.i;
4528       /* 9: loadb */
4529       var38 = ptr6[i];
4530       /* 10: convubw */
4531       var49.i = (orc_uint8)var38;
4532       /* 12: mullw */
4533       var50.i = (var49.i * var39.i) & 0xffff;
4534       /* 13: addw */
4535       var51.i = var48.i + var50.i;
4536       /* 14: loadb */
4537       var40 = ptr7[i];
4538       /* 15: convubw */
4539       var52.i = (orc_uint8)var40;
4540       /* 17: mullw */
4541       var53.i = (var52.i * var41.i) & 0xffff;
4542       /* 18: addw */
4543       var54.i = var51.i + var53.i;
4544       /* 20: addw */
4545       var55.i = var54.i + var42.i;
4546       /* 21: convsuswb */
4547       var43 = ORC_CLAMP_UB(var55.i);
4548       /* 22: storeb */
4549       ptr0[i] = var43;
4550     }
4551   }
4552
4553 }
4554
4555 /* orc_combine4_32xn_u8 */
4556 static void
4557 _backup_orc_combine4_32xn_u8 (OrcExecutor * ORC_RESTRICT ex)
4558 {
4559   int i;
4560   int j;
4561   int n = 32;
4562   int m = ex->params[ORC_VAR_A1];
4563   orc_int8 * ORC_RESTRICT ptr0;
4564   const orc_int8 * ORC_RESTRICT ptr4;
4565   const orc_int8 * ORC_RESTRICT ptr5;
4566   const orc_int8 * ORC_RESTRICT ptr6;
4567   const orc_int8 * ORC_RESTRICT ptr7;
4568   orc_int8 var34;
4569   orc_union16 var35;
4570   orc_int8 var36;
4571   orc_union16 var37;
4572   orc_int8 var38;
4573   orc_union16 var39;
4574   orc_int8 var40;
4575   orc_union16 var41;
4576   orc_union16 var42;
4577   orc_int8 var43;
4578   orc_union16 var44;
4579   orc_union16 var45;
4580   orc_union16 var46;
4581   orc_union16 var47;
4582   orc_union16 var48;
4583   orc_union16 var49;
4584   orc_union16 var50;
4585   orc_union16 var51;
4586   orc_union16 var52;
4587   orc_union16 var53;
4588   orc_union16 var54;
4589   orc_union16 var55;
4590
4591   for (j = 0; j < m; j++) {
4592     ptr0 = ORC_PTR_OFFSET(ex->arrays[0], ex->params[0] * j);
4593     ptr4 = ORC_PTR_OFFSET(ex->arrays[4], ex->params[4] * j);
4594     ptr5 = ORC_PTR_OFFSET(ex->arrays[5], ex->params[5] * j);
4595     ptr6 = ORC_PTR_OFFSET(ex->arrays[6], ex->params[6] * j);
4596     ptr7 = ORC_PTR_OFFSET(ex->arrays[7], ex->params[7] * j);
4597
4598       /* 2: loadpw */
4599         var35.i = ex->params[24];
4600       /* 6: loadpw */
4601         var37.i = ex->params[25];
4602       /* 11: loadpw */
4603         var39.i = ex->params[26];
4604       /* 16: loadpw */
4605         var41.i = ex->params[27];
4606       /* 19: loadpw */
4607         var42.i = 0x00000008; /* 8 or 3.95253e-323f */
4608
4609     for (i = 0; i < n; i++) {
4610       /* 0: loadb */
4611       var34 = ptr4[i];
4612       /* 1: convubw */
4613       var44.i = (orc_uint8)var34;
4614       /* 3: mullw */
4615       var45.i = (var44.i * var35.i) & 0xffff;
4616       /* 4: loadb */
4617       var36 = ptr5[i];
4618       /* 5: convubw */
4619       var46.i = (orc_uint8)var36;
4620       /* 7: mullw */
4621       var47.i = (var46.i * var37.i) & 0xffff;
4622       /* 8: addw */
4623       var48.i = var45.i + var47.i;
4624       /* 9: loadb */
4625       var38 = ptr6[i];
4626       /* 10: convubw */
4627       var49.i = (orc_uint8)var38;
4628       /* 12: mullw */
4629       var50.i = (var49.i * var39.i) & 0xffff;
4630       /* 13: addw */
4631       var51.i = var48.i + var50.i;
4632       /* 14: loadb */
4633       var40 = ptr7[i];
4634       /* 15: convubw */
4635       var52.i = (orc_uint8)var40;
4636       /* 17: mullw */
4637       var53.i = (var52.i * var41.i) & 0xffff;
4638       /* 18: addw */
4639       var54.i = var51.i + var53.i;
4640       /* 20: addw */
4641       var55.i = var54.i + var42.i;
4642       /* 21: convsuswb */
4643       var43 = ORC_CLAMP_UB(var55.i);
4644       /* 22: storeb */
4645       ptr0[i] = var43;
4646     }
4647   }
4648
4649 }
4650
4651 /* orc_combine4_nxm_u8 */
4652 static void
4653 _backup_orc_combine4_nxm_u8 (OrcExecutor * ORC_RESTRICT ex)
4654 {
4655   int i;
4656   int j;
4657   int n = ex->n;
4658   int m = ex->params[ORC_VAR_A1];
4659   orc_int8 * ORC_RESTRICT ptr0;
4660   const orc_int8 * ORC_RESTRICT ptr4;
4661   const orc_int8 * ORC_RESTRICT ptr5;
4662   const orc_int8 * ORC_RESTRICT ptr6;
4663   const orc_int8 * ORC_RESTRICT ptr7;
4664   orc_int8 var34;
4665   orc_union16 var35;
4666   orc_int8 var36;
4667   orc_union16 var37;
4668   orc_int8 var38;
4669   orc_union16 var39;
4670   orc_int8 var40;
4671   orc_union16 var41;
4672   orc_union16 var42;
4673   orc_int8 var43;
4674   orc_union16 var44;
4675   orc_union16 var45;
4676   orc_union16 var46;
4677   orc_union16 var47;
4678   orc_union16 var48;
4679   orc_union16 var49;
4680   orc_union16 var50;
4681   orc_union16 var51;
4682   orc_union16 var52;
4683   orc_union16 var53;
4684   orc_union16 var54;
4685   orc_union16 var55;
4686   orc_union16 var56;
4687
4688   for (j = 0; j < m; j++) {
4689     ptr0 = ORC_PTR_OFFSET(ex->arrays[0], ex->params[0] * j);
4690     ptr4 = ORC_PTR_OFFSET(ex->arrays[4], ex->params[4] * j);
4691     ptr5 = ORC_PTR_OFFSET(ex->arrays[5], ex->params[5] * j);
4692     ptr6 = ORC_PTR_OFFSET(ex->arrays[6], ex->params[6] * j);
4693     ptr7 = ORC_PTR_OFFSET(ex->arrays[7], ex->params[7] * j);
4694
4695       /* 2: loadpw */
4696         var35.i = ex->params[24];
4697       /* 6: loadpw */
4698         var37.i = ex->params[25];
4699       /* 11: loadpw */
4700         var39.i = ex->params[26];
4701       /* 16: loadpw */
4702         var41.i = ex->params[27];
4703       /* 19: loadpw */
4704         var42.i = 0x00000008; /* 8 or 3.95253e-323f */
4705
4706     for (i = 0; i < n; i++) {
4707       /* 0: loadb */
4708       var34 = ptr4[i];
4709       /* 1: convubw */
4710       var44.i = (orc_uint8)var34;
4711       /* 3: mullw */
4712       var45.i = (var44.i * var35.i) & 0xffff;
4713       /* 4: loadb */
4714       var36 = ptr5[i];
4715       /* 5: convubw */
4716       var46.i = (orc_uint8)var36;
4717       /* 7: mullw */
4718       var47.i = (var46.i * var37.i) & 0xffff;
4719       /* 8: addw */
4720       var48.i = var45.i + var47.i;
4721       /* 9: loadb */
4722       var38 = ptr6[i];
4723       /* 10: convubw */
4724       var49.i = (orc_uint8)var38;
4725       /* 12: mullw */
4726       var50.i = (var49.i * var39.i) & 0xffff;
4727       /* 13: addw */
4728       var51.i = var48.i + var50.i;
4729       /* 14: loadb */
4730       var40 = ptr7[i];
4731       /* 15: convubw */
4732       var52.i = (orc_uint8)var40;
4733       /* 17: mullw */
4734       var53.i = (var52.i * var41.i) & 0xffff;
4735       /* 18: addw */
4736       var54.i = var51.i + var53.i;
4737       /* 20: addw */
4738       var55.i = var54.i + var42.i;
4739       /* 21: shrsw */
4740       var56.i = var55.i >> 4;
4741       /* 22: convsuswb */
4742       var43 = ORC_CLAMP_UB(var56.i);
4743       /* 23: storeb */
4744       ptr0[i] = var43;
4745     }
4746   }
4747
4748 }
4749
4750 /* orc_combine2_8xn_u8 */
4751 static void
4752 _backup_orc_combine2_8xn_u8 (OrcExecutor * ORC_RESTRICT ex)
4753 {
4754   int i;
4755   int j;
4756   int n = 8;
4757   int m = ex->params[ORC_VAR_A1];
4758   orc_int8 * ORC_RESTRICT ptr0;
4759   const orc_int8 * ORC_RESTRICT ptr4;
4760   const orc_int8 * ORC_RESTRICT ptr5;
4761   orc_int8 var34;
4762   orc_int8 var35;
4763   orc_union16 var36;
4764   orc_union16 var37;
4765   orc_union16 var38;
4766   orc_int8 var39;
4767   orc_union16 var40;
4768   orc_union16 var41;
4769   orc_union16 var42;
4770   orc_union16 var43;
4771   orc_union16 var44;
4772   orc_union16 var45;
4773   orc_union16 var46;
4774
4775   for (j = 0; j < m; j++) {
4776     ptr0 = ORC_PTR_OFFSET(ex->arrays[0], ex->params[0] * j);
4777     ptr4 = ORC_PTR_OFFSET(ex->arrays[4], ex->params[4] * j);
4778     ptr5 = ORC_PTR_OFFSET(ex->arrays[5], ex->params[5] * j);
4779
4780       /* 4: loadpw */
4781         var36.i = ex->params[24];
4782       /* 6: loadpw */
4783         var37.i = ex->params[25];
4784       /* 9: loadpw */
4785         var38.i = ex->params[26];
4786
4787     for (i = 0; i < n; i++) {
4788       /* 0: loadb */
4789       var34 = ptr4[i];
4790       /* 1: convubw */
4791       var40.i = (orc_uint8)var34;
4792       /* 2: loadb */
4793       var35 = ptr5[i];
4794       /* 3: convubw */
4795       var41.i = (orc_uint8)var35;
4796       /* 5: mullw */
4797       var42.i = (var40.i * var36.i) & 0xffff;
4798       /* 7: mullw */
4799       var43.i = (var41.i * var37.i) & 0xffff;
4800       /* 8: addw */
4801       var44.i = var42.i + var43.i;
4802       /* 10: addw */
4803       var45.i = var44.i + var38.i;
4804       /* 11: shrsw */
4805       var46.i = var45.i >> ex->params[27];
4806       /* 12: convsuswb */
4807       var39 = ORC_CLAMP_UB(var46.i);
4808       /* 13: storeb */
4809       ptr0[i] = var39;
4810     }
4811   }
4812
4813 }
4814
4815 /* orc_combine2_12xn_u8 */
4816 static void
4817 _backup_orc_combine2_12xn_u8 (OrcExecutor * ORC_RESTRICT ex)
4818 {
4819   int i;
4820   int j;
4821   int n = 12;
4822   int m = ex->params[ORC_VAR_A1];
4823   orc_int8 * ORC_RESTRICT ptr0;
4824   const orc_int8 * ORC_RESTRICT ptr4;
4825   const orc_int8 * ORC_RESTRICT ptr5;
4826   orc_int8 var34;
4827   orc_int8 var35;
4828   orc_union16 var36;
4829   orc_union16 var37;
4830   orc_union16 var38;
4831   orc_int8 var39;
4832   orc_union16 var40;
4833   orc_union16 var41;
4834   orc_union16 var42;
4835   orc_union16 var43;
4836   orc_union16 var44;
4837   orc_union16 var45;
4838   orc_union16 var46;
4839
4840   for (j = 0; j < m; j++) {
4841     ptr0 = ORC_PTR_OFFSET(ex->arrays[0], ex->params[0] * j);
4842     ptr4 = ORC_PTR_OFFSET(ex->arrays[4], ex->params[4] * j);
4843     ptr5 = ORC_PTR_OFFSET(ex->arrays[5], ex->params[5] * j);
4844
4845       /* 4: loadpw */
4846         var36.i = ex->params[24];
4847       /* 6: loadpw */
4848         var37.i = ex->params[25];
4849       /* 9: loadpw */
4850         var38.i = ex->params[26];
4851
4852     for (i = 0; i < n; i++) {
4853       /* 0: loadb */
4854       var34 = ptr4[i];
4855       /* 1: convubw */
4856       var40.i = (orc_uint8)var34;
4857       /* 2: loadb */
4858       var35 = ptr5[i];
4859       /* 3: convubw */
4860       var41.i = (orc_uint8)var35;
4861       /* 5: mullw */
4862       var42.i = (var40.i * var36.i) & 0xffff;
4863       /* 7: mullw */
4864       var43.i = (var41.i * var37.i) & 0xffff;
4865       /* 8: addw */
4866       var44.i = var42.i + var43.i;
4867       /* 10: addw */
4868       var45.i = var44.i + var38.i;
4869       /* 11: shrsw */
4870       var46.i = var45.i >> ex->params[27];
4871       /* 12: convsuswb */
4872       var39 = ORC_CLAMP_UB(var46.i);
4873       /* 13: storeb */
4874       ptr0[i] = var39;
4875     }
4876   }
4877
4878 }
4879
4880 /* orc_combine2_16xn_u8 */
4881 static void
4882 _backup_orc_combine2_16xn_u8 (OrcExecutor * ORC_RESTRICT ex)
4883 {
4884   int i;
4885   int j;
4886   int n = 16;
4887   int m = ex->params[ORC_VAR_A1];
4888   orc_int8 * ORC_RESTRICT ptr0;
4889   const orc_int8 * ORC_RESTRICT ptr4;
4890   const orc_int8 * ORC_RESTRICT ptr5;
4891   orc_int8 var34;
4892   orc_int8 var35;
4893   orc_union16 var36;
4894   orc_union16 var37;
4895   orc_union16 var38;
4896   orc_int8 var39;
4897   orc_union16 var40;
4898   orc_union16 var41;
4899   orc_union16 var42;
4900   orc_union16 var43;
4901   orc_union16 var44;
4902   orc_union16 var45;
4903   orc_union16 var46;
4904
4905   for (j = 0; j < m; j++) {
4906     ptr0 = ORC_PTR_OFFSET(ex->arrays[0], ex->params[0] * j);
4907     ptr4 = ORC_PTR_OFFSET(ex->arrays[4], ex->params[4] * j);
4908     ptr5 = ORC_PTR_OFFSET(ex->arrays[5], ex->params[5] * j);
4909
4910       /* 4: loadpw */
4911         var36.i = ex->params[24];
4912       /* 6: loadpw */
4913         var37.i = ex->params[25];
4914       /* 9: loadpw */
4915         var38.i = ex->params[26];
4916
4917     for (i = 0; i < n; i++) {
4918       /* 0: loadb */
4919       var34 = ptr4[i];
4920       /* 1: convubw */
4921       var40.i = (orc_uint8)var34;
4922       /* 2: loadb */
4923       var35 = ptr5[i];
4924       /* 3: convubw */
4925       var41.i = (orc_uint8)var35;
4926       /* 5: mullw */
4927       var42.i = (var40.i * var36.i) & 0xffff;
4928       /* 7: mullw */
4929       var43.i = (var41.i * var37.i) & 0xffff;
4930       /* 8: addw */
4931       var44.i = var42.i + var43.i;
4932       /* 10: addw */
4933       var45.i = var44.i + var38.i;
4934       /* 11: shrsw */
4935       var46.i = var45.i >> ex->params[27];
4936       /* 12: convsuswb */
4937       var39 = ORC_CLAMP_UB(var46.i);
4938       /* 13: storeb */
4939       ptr0[i] = var39;
4940     }
4941   }
4942
4943 }
4944
4945 /* orc_combine2_nxm_u8 */
4946 static void
4947 _backup_orc_combine2_nxm_u8 (OrcExecutor * ORC_RESTRICT ex)
4948 {
4949   int i;
4950   int j;
4951   int n = ex->n;
4952   int m = ex->params[ORC_VAR_A1];
4953   orc_int8 * ORC_RESTRICT ptr0;
4954   const orc_int8 * ORC_RESTRICT ptr4;
4955   const orc_int8 * ORC_RESTRICT ptr5;
4956   orc_int8 var34;
4957   orc_int8 var35;
4958   orc_union16 var36;
4959   orc_union16 var37;
4960   orc_union16 var38;
4961   orc_int8 var39;
4962   orc_union16 var40;
4963   orc_union16 var41;
4964   orc_union16 var42;
4965   orc_union16 var43;
4966   orc_union16 var44;
4967   orc_union16 var45;
4968   orc_union16 var46;
4969
4970   for (j = 0; j < m; j++) {
4971     ptr0 = ORC_PTR_OFFSET(ex->arrays[0], ex->params[0] * j);
4972     ptr4 = ORC_PTR_OFFSET(ex->arrays[4], ex->params[4] * j);
4973     ptr5 = ORC_PTR_OFFSET(ex->arrays[5], ex->params[5] * j);
4974
4975       /* 4: loadpw */
4976         var36.i = ex->params[24];
4977       /* 6: loadpw */
4978         var37.i = ex->params[25];
4979       /* 9: loadpw */
4980         var38.i = ex->params[26];
4981
4982     for (i = 0; i < n; i++) {
4983       /* 0: loadb */
4984       var34 = ptr4[i];
4985       /* 1: convubw */
4986       var40.i = (orc_uint8)var34;
4987       /* 2: loadb */
4988       var35 = ptr5[i];
4989       /* 3: convubw */
4990       var41.i = (orc_uint8)var35;
4991       /* 5: mullw */
4992       var42.i = (var40.i * var36.i) & 0xffff;
4993       /* 7: mullw */
4994       var43.i = (var41.i * var37.i) & 0xffff;
4995       /* 8: addw */
4996       var44.i = var42.i + var43.i;
4997       /* 10: addw */
4998       var45.i = var44.i + var38.i;
4999       /* 11: shrsw */
5000       var46.i = var45.i >> ex->params[27];
5001       /* 12: convsuswb */
5002       var39 = ORC_CLAMP_UB(var46.i);
5003       /* 13: storeb */
5004       ptr0[i] = var39;
5005     }
5006   }
5007
5008 }
5009
5010 /* orc_sad_nxm_u8 */
5011 static void
5012 _backup_orc_sad_nxm_u8 (OrcExecutor * ORC_RESTRICT ex)
5013 {
5014   int i;
5015   int j;
5016   int n = ex->n;
5017   int m = ex->params[ORC_VAR_A1];
5018   const orc_int8 * ORC_RESTRICT ptr4;
5019   const orc_int8 * ORC_RESTRICT ptr5;
5020   orc_union32 var12 =  { 0 };
5021   orc_int8 var32;
5022   orc_int8 var33;
5023
5024   for (j = 0; j < m; j++) {
5025     ptr4 = ORC_PTR_OFFSET(ex->arrays[4], ex->params[4] * j);
5026     ptr5 = ORC_PTR_OFFSET(ex->arrays[5], ex->params[5] * j);
5027
5028
5029     for (i = 0; i < n; i++) {
5030       /* 0: loadb */
5031       var32 = ptr4[i];
5032       /* 1: loadb */
5033       var33 = ptr5[i];
5034       /* 2: accsadubl */
5035       var12.i = var12.i + ORC_ABS((orc_int32)(orc_uint8)var32 - (orc_int32)(orc_uint8)var33);
5036     }
5037   }
5038   ex->accumulators[0] = var12.i;
5039
5040 }
5041
5042 /* orc_sad_8x8_u8 */
5043 static void
5044 _backup_orc_sad_8x8_u8 (OrcExecutor * ORC_RESTRICT ex)
5045 {
5046   int i;
5047   int j;
5048   int n = 8;
5049   int m = 8;
5050   const orc_int8 * ORC_RESTRICT ptr4;
5051   const orc_int8 * ORC_RESTRICT ptr5;
5052   orc_union32 var12 =  { 0 };
5053   orc_int8 var32;
5054   orc_int8 var33;
5055
5056   for (j = 0; j < m; j++) {
5057     ptr4 = ORC_PTR_OFFSET(ex->arrays[4], ex->params[4] * j);
5058     ptr5 = ORC_PTR_OFFSET(ex->arrays[5], ex->params[5] * j);
5059
5060
5061     for (i = 0; i < n; i++) {
5062       /* 0: loadb */
5063       var32 = ptr4[i];
5064       /* 1: loadb */
5065       var33 = ptr5[i];
5066       /* 2: accsadubl */
5067       var12.i = var12.i + ORC_ABS((orc_int32)(orc_uint8)var32 - (orc_int32)(orc_uint8)var33);
5068     }
5069   }
5070   ex->accumulators[0] = var12.i;
5071
5072 }
5073
5074 /* orc_sad_12x12_u8 */
5075 static void
5076 _backup_orc_sad_12x12_u8 (OrcExecutor * ORC_RESTRICT ex)
5077 {
5078   int i;
5079   int j;
5080   int n = 12;
5081   int m = 12;
5082   const orc_int8 * ORC_RESTRICT ptr4;
5083   const orc_int8 * ORC_RESTRICT ptr5;
5084   orc_union32 var12 =  { 0 };
5085   orc_int8 var32;
5086   orc_int8 var33;
5087
5088   for (j = 0; j < m; j++) {
5089     ptr4 = ORC_PTR_OFFSET(ex->arrays[4], ex->params[4] * j);
5090     ptr5 = ORC_PTR_OFFSET(ex->arrays[5], ex->params[5] * j);
5091
5092
5093     for (i = 0; i < n; i++) {
5094       /* 0: loadb */
5095       var32 = ptr4[i];
5096       /* 1: loadb */
5097       var33 = ptr5[i];
5098       /* 2: accsadubl */
5099       var12.i = var12.i + ORC_ABS((orc_int32)(orc_uint8)var32 - (orc_int32)(orc_uint8)var33);
5100     }
5101   }
5102   ex->accumulators[0] = var12.i;
5103
5104 }
5105
5106 /* orc_sad_16xn_u8 */
5107 static void
5108 _backup_orc_sad_16xn_u8 (OrcExecutor * ORC_RESTRICT ex)
5109 {
5110   int i;
5111   int j;
5112   int n = 16;
5113   int m = ex->params[ORC_VAR_A1];
5114   const orc_int8 * ORC_RESTRICT ptr4;
5115   const orc_int8 * ORC_RESTRICT ptr5;
5116   orc_union32 var12 =  { 0 };
5117   orc_int8 var32;
5118   orc_int8 var33;
5119
5120   for (j = 0; j < m; j++) {
5121     ptr4 = ORC_PTR_OFFSET(ex->arrays[4], ex->params[4] * j);
5122     ptr5 = ORC_PTR_OFFSET(ex->arrays[5], ex->params[5] * j);
5123
5124
5125     for (i = 0; i < n; i++) {
5126       /* 0: loadb */
5127       var32 = ptr4[i];
5128       /* 1: loadb */
5129       var33 = ptr5[i];
5130       /* 2: accsadubl */
5131       var12.i = var12.i + ORC_ABS((orc_int32)(orc_uint8)var32 - (orc_int32)(orc_uint8)var33);
5132     }
5133   }
5134   ex->accumulators[0] = var12.i;
5135
5136 }
5137
5138 /* orc_sad_32xn_u8 */
5139 static void
5140 _backup_orc_sad_32xn_u8 (OrcExecutor * ORC_RESTRICT ex)
5141 {
5142   int i;
5143   int j;
5144   int n = 32;
5145   int m = ex->params[ORC_VAR_A1];
5146   const orc_int8 * ORC_RESTRICT ptr4;
5147   const orc_int8 * ORC_RESTRICT ptr5;
5148   orc_union32 var12 =  { 0 };
5149   orc_int8 var32;
5150   orc_int8 var33;
5151
5152   for (j = 0; j < m; j++) {
5153     ptr4 = ORC_PTR_OFFSET(ex->arrays[4], ex->params[4] * j);
5154     ptr5 = ORC_PTR_OFFSET(ex->arrays[5], ex->params[5] * j);
5155
5156
5157     for (i = 0; i < n; i++) {
5158       /* 0: loadb */
5159       var32 = ptr4[i];
5160       /* 1: loadb */
5161       var33 = ptr5[i];
5162       /* 2: accsadubl */
5163       var12.i = var12.i + ORC_ABS((orc_int32)(orc_uint8)var32 - (orc_int32)(orc_uint8)var33);
5164     }
5165   }
5166   ex->accumulators[0] = var12.i;
5167
5168 }
5169
5170 /* convert_rgb_to_gray */
5171 static void
5172 _backup_convert_rgb_to_gray (OrcExecutor * ORC_RESTRICT ex)
5173 {
5174   int i;
5175   int n = ex->n;
5176   orc_int8 * ORC_RESTRICT ptr0;
5177   const orc_union32 * ORC_RESTRICT ptr4;
5178   orc_union32 var35;
5179   orc_union16 var36;
5180   orc_union32 var37;
5181   orc_union16 var38;
5182   orc_union32 var39;
5183   orc_union16 var40;
5184   orc_union16 var41;
5185   orc_int8 var42;
5186   orc_union16 var43;
5187   orc_int8 var44;
5188   orc_union16 var45;
5189   orc_union16 var46;
5190   orc_union16 var47;
5191   orc_union16 var48;
5192   orc_int8 var49;
5193   orc_union16 var50;
5194   orc_union16 var51;
5195   orc_union16 var52;
5196   orc_union16 var53;
5197   orc_union16 var54;
5198   orc_int8 var55;
5199   orc_union16 var56;
5200   orc_union16 var57;
5201   orc_union16 var58;
5202   orc_union16 var59;
5203   orc_union16 var60;
5204
5205   ptr0 = (orc_int8 *)ex->arrays[0];
5206   ptr4 = (orc_union32 *)ex->arrays[4];
5207
5208     /* 5: loadpw */
5209     var36.i = 0x00004c8b; /* 19595 or 9.68122e-320f */
5210     /* 12: loadpw */
5211     var38.i = 0x00009646; /* 38470 or 1.90067e-319f */
5212     /* 20: loadpw */
5213     var40.i = 0x00001d2f; /* 7471 or 3.69116e-320f */
5214     /* 23: loadpw */
5215     var41.i = 0x00000080; /* 128 or 6.32404e-322f */
5216
5217   for (i = 0; i < n; i++) {
5218     /* 0: loadl */
5219     var35 = ptr4[i];
5220     /* 1: select0lw */
5221     var43.i = (orc_uint32)var35.i & 0xffff;
5222     /* 2: select0wb */
5223     var44 = (orc_uint16)var43.i & 0xff;
5224     /* 3: convubw */
5225     var45.i = (orc_uint8)var44;
5226     /* 4: swapw */
5227     var46.i = ORC_SWAP_W(var45.i);
5228     /* 6: mulhuw */
5229     var47.i = ((orc_uint32)((orc_uint16)var46.i) * (orc_uint32)((orc_uint16)var36.i)) >> 16;
5230     /* 7: loadl */
5231     var37 = ptr4[i];
5232     /* 8: select0lw */
5233     var48.i = (orc_uint32)var37.i & 0xffff;
5234     /* 9: select1wb */
5235     var49 = ((orc_uint16)var48.i >> 8)&0xff;
5236     /* 10: convubw */
5237     var50.i = (orc_uint8)var49;
5238     /* 11: swapw */
5239     var51.i = ORC_SWAP_W(var50.i);
5240     /* 13: mulhuw */
5241     var52.i = ((orc_uint32)((orc_uint16)var51.i) * (orc_uint32)((orc_uint16)var38.i)) >> 16;
5242     /* 14: addusw */
5243     var53.i = ORC_CLAMP_UW((orc_uint16)var47.i + (orc_uint16)var52.i);
5244     /* 15: loadl */
5245     var39 = ptr4[i];
5246     /* 16: select1lw */
5247     var54.i = ((orc_uint32)var39.i >> 16)&0xffff;
5248     /* 17: select0wb */
5249     var55 = (orc_uint16)var54.i & 0xff;
5250     /* 18: convubw */
5251     var56.i = (orc_uint8)var55;
5252     /* 19: swapw */
5253     var57.i = ORC_SWAP_W(var56.i);
5254     /* 21: mulhuw */
5255     var58.i = ((orc_uint32)((orc_uint16)var57.i) * (orc_uint32)((orc_uint16)var40.i)) >> 16;
5256     /* 22: addusw */
5257     var59.i = ORC_CLAMP_UW((orc_uint16)var53.i + (orc_uint16)var58.i);
5258     /* 24: addusw */
5259     var60.i = ORC_CLAMP_UW((orc_uint16)var59.i + (orc_uint16)var41.i);
5260     /* 25: select1wb */
5261     var42 = ((orc_uint16)var60.i >> 8)&0xff;
5262     /* 26: storeb */
5263     ptr0[i] = var42;
5264   }
5265
5266 }
5267
5268 /* canny_calc_delta_x */
5269 static void
5270 _backup_canny_calc_delta_x (OrcExecutor * ORC_RESTRICT ex)
5271 {
5272   int i;
5273   int n = ex->n;
5274   orc_union32 * ORC_RESTRICT ptr0;
5275   const orc_union32 * ORC_RESTRICT ptr4;
5276   const orc_union32 * ORC_RESTRICT ptr5;
5277   orc_union32 var40;
5278   orc_union32 var41;
5279   orc_union32 var42;
5280   orc_union32 var43;
5281   orc_union32 var44;
5282   orc_union32 var45;
5283   orc_union32 var46;
5284   orc_union16 var47;
5285   orc_int8 var48;
5286   orc_union16 var49;
5287   orc_int8 var50;
5288   orc_union16 var51;
5289   orc_union16 var52;
5290   orc_union16 var53;
5291   orc_union32 var54;
5292   orc_union32 var55;
5293   orc_union16 var56;
5294   orc_int8 var57;
5295   orc_union16 var58;
5296   orc_int8 var59;
5297   orc_union16 var60;
5298   orc_union16 var61;
5299   orc_union16 var62;
5300   orc_union32 var63;
5301   orc_union32 var64;
5302   orc_union32 var65;
5303   orc_union16 var66;
5304   orc_int8 var67;
5305   orc_union16 var68;
5306   orc_int8 var69;
5307   orc_union16 var70;
5308   orc_union16 var71;
5309   orc_union16 var72;
5310   orc_union32 var73;
5311   orc_union32 var74;
5312
5313   ptr0 = (orc_union32 *)ex->arrays[0];
5314   ptr4 = (orc_union32 *)ex->arrays[4];
5315   ptr5 = (orc_union32 *)ex->arrays[5];
5316
5317
5318   for (i = 0; i < n; i++) {
5319     /* 0: loadl */
5320     var40 = ptr4[i];
5321     /* 1: select0lw */
5322     var47.i = (orc_uint32)var40.i & 0xffff;
5323     /* 2: select1wb */
5324     var48 = ((orc_uint16)var47.i >> 8)&0xff;
5325     /* 3: loadl */
5326     var41 = ptr5[i];
5327     /* 4: select0lw */
5328     var49.i = (orc_uint32)var41.i & 0xffff;
5329     /* 5: select1wb */
5330     var50 = ((orc_uint16)var49.i >> 8)&0xff;
5331     /* 6: convubw */
5332     var51.i = (orc_uint8)var48;
5333     /* 7: convubw */
5334     var52.i = (orc_uint8)var50;
5335     /* 8: subw */
5336     var53.i = var51.i - var52.i;
5337     /* 9: convswl */
5338     var54.i = var53.i;
5339     /* 10: mulll */
5340     var55.i = (var54.i * var54.i) & 0xffffffff;
5341     /* 11: loadl */
5342     var42 = ptr4[i];
5343     /* 12: select1lw */
5344     var56.i = ((orc_uint32)var42.i >> 16)&0xffff;
5345     /* 13: select0wb */
5346     var57 = (orc_uint16)var56.i & 0xff;
5347     /* 14: loadl */
5348     var43 = ptr5[i];
5349     /* 15: select1lw */
5350     var58.i = ((orc_uint32)var43.i >> 16)&0xffff;
5351     /* 16: select0wb */
5352     var59 = (orc_uint16)var58.i & 0xff;
5353     /* 17: convubw */
5354     var60.i = (orc_uint8)var57;
5355     /* 18: convubw */
5356     var61.i = (orc_uint8)var59;
5357     /* 19: subw */
5358     var62.i = var60.i - var61.i;
5359     /* 20: convswl */
5360     var63.i = var62.i;
5361     /* 21: mulll */
5362     var64.i = (var63.i * var63.i) & 0xffffffff;
5363     /* 22: addl */
5364     var65.i = var55.i + var64.i;
5365     /* 23: loadl */
5366     var44 = ptr4[i];
5367     /* 24: select1lw */
5368     var66.i = ((orc_uint32)var44.i >> 16)&0xffff;
5369     /* 25: select1wb */
5370     var67 = ((orc_uint16)var66.i >> 8)&0xff;
5371     /* 26: loadl */
5372     var45 = ptr5[i];
5373     /* 27: select1lw */
5374     var68.i = ((orc_uint32)var45.i >> 16)&0xffff;
5375     /* 28: select1wb */
5376     var69 = ((orc_uint16)var68.i >> 8)&0xff;
5377     /* 29: convubw */
5378     var70.i = (orc_uint8)var67;
5379     /* 30: convubw */
5380     var71.i = (orc_uint8)var69;
5381     /* 31: subw */
5382     var72.i = var70.i - var71.i;
5383     /* 32: convswl */
5384     var73.i = var72.i;
5385     /* 33: mulll */
5386     var74.i = (var73.i * var73.i) & 0xffffffff;
5387     /* 34: addl */
5388     var46.i = var65.i + var74.i;
5389     /* 35: storel */
5390     ptr0[i] = var46;
5391   }
5392
5393 }
5394
5395 /* i420_to_ayuv */
5396 static void
5397 _backup_i420_to_ayuv (OrcExecutor * ORC_RESTRICT ex)
5398 {
5399   int i;
5400   int n = ex->n;
5401   orc_union32 * ORC_RESTRICT ptr0;
5402   const orc_int8 * ORC_RESTRICT ptr4;
5403   const orc_int8 * ORC_RESTRICT ptr5;
5404   const orc_int8 * ORC_RESTRICT ptr6;
5405   orc_int8 var37;
5406   orc_union32 var38;
5407   orc_int8 var39;
5408   orc_int8 var40;
5409   orc_int8 var41;
5410   orc_union16 var42;
5411   orc_union16 var43;
5412
5413   ptr0 = (orc_union32 *)ex->arrays[0];
5414   ptr4 = (orc_int8 *)ex->arrays[4];
5415   ptr5 = (orc_int8 *)ex->arrays[5];
5416   ptr6 = (orc_int8 *)ex->arrays[6];
5417
5418     /* 3: loadpb */
5419     var37 = ex->params[24];
5420
5421   for (i = 0; i < n; i++) {
5422     /* 0: loadupdb */
5423     var39 = ptr5[i>>1];
5424     /* 1: loadupdb */
5425     var40 = ptr6[i>>1];
5426     /* 2: loadb */
5427     var41 = ptr4[i];
5428     /* 4: mergebw */
5429     var42.i = ((orc_uint8)var37 & 0x00ff) | ((orc_uint8)var41 << 8);
5430     /* 5: mergebw */
5431     var43.i = ((orc_uint8)var39 & 0x00ff) | ((orc_uint8)var40 << 8);
5432     /* 6: mergewl */
5433     var38.i = ((orc_uint16)var42.i & 0x0000ffff) | ((orc_uint16)var43.i << 16);
5434     /* 7: storel */
5435     ptr0[i] = var38;
5436   }
5437
5438 }
5439
5440 /* test_4x */
5441 static void
5442 _backup_test_4x (OrcExecutor * ORC_RESTRICT ex)
5443 {
5444   int i;
5445   int n = ex->n;
5446   orc_union32 * ORC_RESTRICT ptr0;
5447   const orc_union32 * ORC_RESTRICT ptr4;
5448   const orc_union32 * ORC_RESTRICT ptr5;
5449   orc_union32 var32;
5450   orc_union32 var33;
5451   orc_union32 var34;
5452
5453   ptr0 = (orc_union32 *)ex->arrays[0];
5454   ptr4 = (orc_union32 *)ex->arrays[4];
5455   ptr5 = (orc_union32 *)ex->arrays[5];
5456
5457
5458   for (i = 0; i < n; i++) {
5459     /* 0: loadl */
5460     var32 = ptr4[i];
5461     /* 1: loadl */
5462     var33 = ptr5[i];
5463     /* 2: addusb */
5464     var34.x4[0] = ORC_CLAMP_UB((orc_uint8)var32.x4[0] + (orc_uint8)var33.x4[0]);
5465     var34.x4[1] = ORC_CLAMP_UB((orc_uint8)var32.x4[1] + (orc_uint8)var33.x4[1]);
5466     var34.x4[2] = ORC_CLAMP_UB((orc_uint8)var32.x4[2] + (orc_uint8)var33.x4[2]);
5467     var34.x4[3] = ORC_CLAMP_UB((orc_uint8)var32.x4[3] + (orc_uint8)var33.x4[3]);
5468     /* 3: storel */
5469     ptr0[i] = var34;
5470   }
5471
5472 }
5473
5474 /* test_4x_2 */
5475 static void
5476 _backup_test_4x_2 (OrcExecutor * ORC_RESTRICT ex)
5477 {
5478   int i;
5479   int n = ex->n;
5480   orc_union32 * ORC_RESTRICT ptr0;
5481   const orc_union32 * ORC_RESTRICT ptr4;
5482   orc_union32 var32;
5483   orc_union32 var33;
5484   orc_union32 var34;
5485
5486   ptr0 = (orc_union32 *)ex->arrays[0];
5487   ptr4 = (orc_union32 *)ex->arrays[4];
5488
5489     /* 1: loadpb */
5490     var33.x4[0] = ex->params[24];
5491     var33.x4[1] = ex->params[24];
5492     var33.x4[2] = ex->params[24];
5493     var33.x4[3] = ex->params[24];
5494
5495   for (i = 0; i < n; i++) {
5496     /* 0: loadl */
5497     var32 = ptr4[i];
5498     /* 2: addusb */
5499     var34.x4[0] = ORC_CLAMP_UB((orc_uint8)var32.x4[0] + (orc_uint8)var33.x4[0]);
5500     var34.x4[1] = ORC_CLAMP_UB((orc_uint8)var32.x4[1] + (orc_uint8)var33.x4[1]);
5501     var34.x4[2] = ORC_CLAMP_UB((orc_uint8)var32.x4[2] + (orc_uint8)var33.x4[2]);
5502     var34.x4[3] = ORC_CLAMP_UB((orc_uint8)var32.x4[3] + (orc_uint8)var33.x4[3]);
5503     /* 3: storel */
5504     ptr0[i] = var34;
5505   }
5506
5507 }
5508
5509 /* orc_splat_u16 */
5510 static void
5511 _backup_orc_splat_u16 (OrcExecutor * ORC_RESTRICT ex)
5512 {
5513   int i;
5514   int n = ex->n;
5515   orc_union16 * ORC_RESTRICT ptr0;
5516   orc_union16 var32;
5517   orc_union16 var33;
5518
5519   ptr0 = (orc_union16 *)ex->arrays[0];
5520
5521     /* 0: loadpw */
5522     var32.i = ex->params[24];
5523
5524   for (i = 0; i < n; i++) {
5525     /* 1: copyw */
5526     var33.i = var32.i;
5527     /* 2: storew */
5528     ptr0[i] = var33;
5529   }
5530
5531 }
5532
5533 /* orc_splat_u32 */
5534 static void
5535 _backup_orc_splat_u32 (OrcExecutor * ORC_RESTRICT ex)
5536 {
5537   int i;
5538   int n = ex->n;
5539   orc_union32 * ORC_RESTRICT ptr0;
5540   orc_union32 var32;
5541   orc_union32 var33;
5542
5543   ptr0 = (orc_union32 *)ex->arrays[0];
5544
5545     /* 0: loadpl */
5546     var32.i = ex->params[24];
5547
5548   for (i = 0; i < n; i++) {
5549     /* 1: copyl */
5550     var33.i = var32.i;
5551     /* 2: storel */
5552     ptr0[i] = var33;
5553   }
5554
5555 }
5556
5557 /* orc_splat_u16_2d */
5558 static void
5559 _backup_orc_splat_u16_2d (OrcExecutor * ORC_RESTRICT ex)
5560 {
5561   int i;
5562   int j;
5563   int n = ex->n;
5564   int m = ex->params[ORC_VAR_A1];
5565   orc_union16 * ORC_RESTRICT ptr0;
5566   orc_union16 var32;
5567   orc_union16 var33;
5568
5569   for (j = 0; j < m; j++) {
5570     ptr0 = ORC_PTR_OFFSET(ex->arrays[0], ex->params[0] * j);
5571
5572       /* 0: loadpw */
5573         var32.i = ex->params[24];
5574
5575     for (i = 0; i < n; i++) {
5576       /* 1: copyw */
5577       var33.i = var32.i;
5578       /* 2: storew */
5579       ptr0[i] = var33;
5580     }
5581   }
5582
5583 }
5584
5585 /* orc_splat_u32_2d */
5586 static void
5587 _backup_orc_splat_u32_2d (OrcExecutor * ORC_RESTRICT ex)
5588 {
5589   int i;
5590   int j;
5591   int n = ex->n;
5592   int m = ex->params[ORC_VAR_A1];
5593   orc_union32 * ORC_RESTRICT ptr0;
5594   orc_union32 var32;
5595   orc_union32 var33;
5596
5597   for (j = 0; j < m; j++) {
5598     ptr0 = ORC_PTR_OFFSET(ex->arrays[0], ex->params[0] * j);
5599
5600       /* 0: loadpl */
5601         var32.i = ex->params[24];
5602
5603     for (i = 0; i < n; i++) {
5604       /* 1: copyl */
5605       var33.i = var32.i;
5606       /* 2: storel */
5607       ptr0[i] = var33;
5608     }
5609   }
5610
5611 }
5612
5613 /* orc_copy_u16_2d */
5614 static void
5615 _backup_orc_copy_u16_2d (OrcExecutor * ORC_RESTRICT ex)
5616 {
5617   int i;
5618   int j;
5619   int n = ex->n;
5620   int m = ex->params[ORC_VAR_A1];
5621   orc_union16 * ORC_RESTRICT ptr0;
5622   const orc_union16 * ORC_RESTRICT ptr4;
5623   orc_union16 var32;
5624   orc_union16 var33;
5625
5626   for (j = 0; j < m; j++) {
5627     ptr0 = ORC_PTR_OFFSET(ex->arrays[0], ex->params[0] * j);
5628     ptr4 = ORC_PTR_OFFSET(ex->arrays[4], ex->params[4] * j);
5629
5630
5631     for (i = 0; i < n; i++) {
5632       /* 0: loadw */
5633       var32 = ptr4[i];
5634       /* 1: copyw */
5635       var33.i = var32.i;
5636       /* 2: storew */
5637       ptr0[i] = var33;
5638     }
5639   }
5640
5641 }
5642
5643 /* orc_copy_u32_2d */
5644 static void
5645 _backup_orc_copy_u32_2d (OrcExecutor * ORC_RESTRICT ex)
5646 {
5647   int i;
5648   int j;
5649   int n = ex->n;
5650   int m = ex->params[ORC_VAR_A1];
5651   orc_union32 * ORC_RESTRICT ptr0;
5652   const orc_union32 * ORC_RESTRICT ptr4;
5653   orc_union32 var32;
5654   orc_union32 var33;
5655
5656   for (j = 0; j < m; j++) {
5657     ptr0 = ORC_PTR_OFFSET(ex->arrays[0], ex->params[0] * j);
5658     ptr4 = ORC_PTR_OFFSET(ex->arrays[4], ex->params[4] * j);
5659
5660
5661     for (i = 0; i < n; i++) {
5662       /* 0: loadl */
5663       var32 = ptr4[i];
5664       /* 1: copyl */
5665       var33.i = var32.i;
5666       /* 2: storel */
5667       ptr0[i] = var33;
5668     }
5669   }
5670
5671 }
5672
5673 /* orc_composite_add_8888_8888_2d */
5674 static void
5675 _backup_orc_composite_add_8888_8888_2d (OrcExecutor * ORC_RESTRICT ex)
5676 {
5677   int i;
5678   int j;
5679   int n = ex->n;
5680   int m = ex->params[ORC_VAR_A1];
5681   orc_union32 * ORC_RESTRICT ptr0;
5682   const orc_union32 * ORC_RESTRICT ptr4;
5683   orc_union32 var32;
5684   orc_union32 var33;
5685   orc_union32 var34;
5686
5687   for (j = 0; j < m; j++) {
5688     ptr0 = ORC_PTR_OFFSET(ex->arrays[0], ex->params[0] * j);
5689     ptr4 = ORC_PTR_OFFSET(ex->arrays[4], ex->params[4] * j);
5690
5691
5692     for (i = 0; i < n; i++) {
5693       /* 0: loadl */
5694       var32 = ptr0[i];
5695       /* 1: loadl */
5696       var33 = ptr4[i];
5697       /* 2: addusb */
5698       var34.x4[0] = ORC_CLAMP_UB((orc_uint8)var32.x4[0] + (orc_uint8)var33.x4[0]);
5699       var34.x4[1] = ORC_CLAMP_UB((orc_uint8)var32.x4[1] + (orc_uint8)var33.x4[1]);
5700       var34.x4[2] = ORC_CLAMP_UB((orc_uint8)var32.x4[2] + (orc_uint8)var33.x4[2]);
5701       var34.x4[3] = ORC_CLAMP_UB((orc_uint8)var32.x4[3] + (orc_uint8)var33.x4[3]);
5702       /* 3: storel */
5703       ptr0[i] = var34;
5704     }
5705   }
5706
5707 }
5708
5709 /* orc_composite_add_8_8_line */
5710 static void
5711 _backup_orc_composite_add_8_8_line (OrcExecutor * ORC_RESTRICT ex)
5712 {
5713   int i;
5714   int n = ex->n;
5715   orc_int8 * ORC_RESTRICT ptr0;
5716   const orc_int8 * ORC_RESTRICT ptr4;
5717   orc_int8 var32;
5718   orc_int8 var33;
5719   orc_int8 var34;
5720
5721   ptr0 = (orc_int8 *)ex->arrays[0];
5722   ptr4 = (orc_int8 *)ex->arrays[4];
5723
5724
5725   for (i = 0; i < n; i++) {
5726     /* 0: loadb */
5727     var32 = ptr0[i];
5728     /* 1: loadb */
5729     var33 = ptr4[i];
5730     /* 2: addusb */
5731     var34 = ORC_CLAMP_UB((orc_uint8)var32 + (orc_uint8)var33);
5732     /* 3: storeb */
5733     ptr0[i] = var34;
5734   }
5735
5736 }
5737
5738 /* orc_composite_add_n_8_8_line */
5739 static void
5740 _backup_orc_composite_add_n_8_8_line (OrcExecutor * ORC_RESTRICT ex)
5741 {
5742   int i;
5743   int n = ex->n;
5744   orc_int8 * ORC_RESTRICT ptr0;
5745   const orc_int8 * ORC_RESTRICT ptr4;
5746   orc_int8 var34;
5747   orc_union16 var35;
5748   orc_int8 var36;
5749   orc_int8 var37;
5750   orc_union16 var38;
5751   orc_union16 var39;
5752   orc_union16 var40;
5753   orc_int8 var41;
5754
5755   ptr0 = (orc_int8 *)ex->arrays[0];
5756   ptr4 = (orc_int8 *)ex->arrays[4];
5757
5758     /* 2: loadpw */
5759     var35.i = ex->params[24];
5760
5761   for (i = 0; i < n; i++) {
5762     /* 0: loadb */
5763     var34 = ptr4[i];
5764     /* 1: convubw */
5765     var38.i = (orc_uint8)var34;
5766     /* 3: mullw */
5767     var39.i = (var38.i * var35.i) & 0xffff;
5768     /* 4: div255w */
5769     var40.i = ((uint16_t)(((orc_uint16)(var39.i+128)) + (((orc_uint16)(var39.i+128))>>8)))>>8;
5770     /* 5: convwb */
5771     var41 = var40.i;
5772     /* 6: loadb */
5773     var36 = ptr0[i];
5774     /* 7: addusb */
5775     var37 = ORC_CLAMP_UB((orc_uint8)var36 + (orc_uint8)var41);
5776     /* 8: storeb */
5777     ptr0[i] = var37;
5778   }
5779
5780 }
5781
5782 /* orc_code_combine_add_u */
5783 static void
5784 _backup_orc_code_combine_add_u (OrcExecutor * ORC_RESTRICT ex)
5785 {
5786   int i;
5787   int n = ex->n;
5788   orc_union32 * ORC_RESTRICT ptr0;
5789   const orc_union32 * ORC_RESTRICT ptr4;
5790   const orc_union32 * ORC_RESTRICT ptr5;
5791   orc_union32 var35;
5792   orc_union32 var36;
5793   orc_union32 var37;
5794   orc_union32 var38;
5795   orc_union64 var39;
5796   orc_union64 var40;
5797   orc_union64 var41;
5798   orc_union64 var42;
5799   orc_union64 var43;
5800   orc_union32 var44;
5801
5802   ptr0 = (orc_union32 *)ex->arrays[0];
5803   ptr4 = (orc_union32 *)ex->arrays[4];
5804   ptr5 = (orc_union32 *)ex->arrays[5];
5805
5806
5807   for (i = 0; i < n; i++) {
5808     /* 0: loadl */
5809     var35 = ptr4[i];
5810     /* 1: convubw */
5811     var39.x4[0] = (orc_uint8)var35.x4[0];
5812     var39.x4[1] = (orc_uint8)var35.x4[1];
5813     var39.x4[2] = (orc_uint8)var35.x4[2];
5814     var39.x4[3] = (orc_uint8)var35.x4[3];
5815     /* 2: loadl */
5816     var36 = ptr5[i];
5817     /* 3: convubw */
5818     var40.x4[0] = (orc_uint8)var36.x4[0];
5819     var40.x4[1] = (orc_uint8)var36.x4[1];
5820     var40.x4[2] = (orc_uint8)var36.x4[2];
5821     var40.x4[3] = (orc_uint8)var36.x4[3];
5822     /* 4: splatw3q */
5823     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));
5824     /* 5: mullw */
5825     var42.x4[0] = (var39.x4[0] * var41.x4[0]) & 0xffff;
5826     var42.x4[1] = (var39.x4[1] * var41.x4[1]) & 0xffff;
5827     var42.x4[2] = (var39.x4[2] * var41.x4[2]) & 0xffff;
5828     var42.x4[3] = (var39.x4[3] * var41.x4[3]) & 0xffff;
5829     /* 6: div255w */
5830     var43.x4[0] = ((uint16_t)(((orc_uint16)(var42.x4[0]+128)) + (((orc_uint16)(var42.x4[0]+128))>>8)))>>8;
5831     var43.x4[1] = ((uint16_t)(((orc_uint16)(var42.x4[1]+128)) + (((orc_uint16)(var42.x4[1]+128))>>8)))>>8;
5832     var43.x4[2] = ((uint16_t)(((orc_uint16)(var42.x4[2]+128)) + (((orc_uint16)(var42.x4[2]+128))>>8)))>>8;
5833     var43.x4[3] = ((uint16_t)(((orc_uint16)(var42.x4[3]+128)) + (((orc_uint16)(var42.x4[3]+128))>>8)))>>8;
5834     /* 7: convwb */
5835     var44.x4[0] = var43.x4[0];
5836     var44.x4[1] = var43.x4[1];
5837     var44.x4[2] = var43.x4[2];
5838     var44.x4[3] = var43.x4[3];
5839     /* 8: loadl */
5840     var37 = ptr0[i];
5841     /* 9: addusb */
5842     var38.x4[0] = ORC_CLAMP_UB((orc_uint8)var37.x4[0] + (orc_uint8)var44.x4[0]);
5843     var38.x4[1] = ORC_CLAMP_UB((orc_uint8)var37.x4[1] + (orc_uint8)var44.x4[1]);
5844     var38.x4[2] = ORC_CLAMP_UB((orc_uint8)var37.x4[2] + (orc_uint8)var44.x4[2]);
5845     var38.x4[3] = ORC_CLAMP_UB((orc_uint8)var37.x4[3] + (orc_uint8)var44.x4[3]);
5846     /* 10: storel */
5847     ptr0[i] = var38;
5848   }
5849
5850 }
5851
5852 /* orc_code_combine_add_u_n */
5853 static void
5854 _backup_orc_code_combine_add_u_n (OrcExecutor * ORC_RESTRICT ex)
5855 {
5856   int i;
5857   int n = ex->n;
5858   orc_union32 * ORC_RESTRICT ptr0;
5859   const orc_union32 * ORC_RESTRICT ptr4;
5860   orc_union32 var32;
5861   orc_union32 var33;
5862   orc_union32 var34;
5863
5864   ptr0 = (orc_union32 *)ex->arrays[0];
5865   ptr4 = (orc_union32 *)ex->arrays[4];
5866
5867
5868   for (i = 0; i < n; i++) {
5869     /* 0: loadl */
5870     var32 = ptr0[i];
5871     /* 1: loadl */
5872     var33 = ptr4[i];
5873     /* 2: addusb */
5874     var34.x4[0] = ORC_CLAMP_UB((orc_uint8)var32.x4[0] + (orc_uint8)var33.x4[0]);
5875     var34.x4[1] = ORC_CLAMP_UB((orc_uint8)var32.x4[1] + (orc_uint8)var33.x4[1]);
5876     var34.x4[2] = ORC_CLAMP_UB((orc_uint8)var32.x4[2] + (orc_uint8)var33.x4[2]);
5877     var34.x4[3] = ORC_CLAMP_UB((orc_uint8)var32.x4[3] + (orc_uint8)var33.x4[3]);
5878     /* 3: storel */
5879     ptr0[i] = var34;
5880   }
5881
5882 }
5883
5884 /* orc_code_combine_over_u */
5885 static void
5886 _backup_orc_code_combine_over_u (OrcExecutor * ORC_RESTRICT ex)
5887 {
5888   int i;
5889   int n = ex->n;
5890   orc_union32 * ORC_RESTRICT ptr0;
5891   const orc_union32 * ORC_RESTRICT ptr4;
5892   const orc_union32 * ORC_RESTRICT ptr5;
5893   orc_union32 var37;
5894   orc_union32 var38;
5895   orc_union64 var39;
5896   orc_union32 var40;
5897   orc_union64 var41;
5898   orc_union64 var42;
5899   orc_union64 var43;
5900   orc_union64 var44;
5901   orc_union64 var45;
5902   orc_union32 var46;
5903   orc_union32 var47;
5904   orc_union64 var48;
5905   orc_union64 var49;
5906   orc_union64 var50;
5907   orc_union64 var51;
5908   orc_union64 var52;
5909   orc_union32 var53;
5910
5911   ptr0 = (orc_union32 *)ex->arrays[0];
5912   ptr4 = (orc_union32 *)ex->arrays[4];
5913   ptr5 = (orc_union32 *)ex->arrays[5];
5914
5915     /* 10: loadpw */
5916     var39.x4[0] = 0x000000ff; /* 255 or 1.25987e-321f */
5917     var39.x4[1] = 0x000000ff; /* 255 or 1.25987e-321f */
5918     var39.x4[2] = 0x000000ff; /* 255 or 1.25987e-321f */
5919     var39.x4[3] = 0x000000ff; /* 255 or 1.25987e-321f */
5920
5921   for (i = 0; i < n; i++) {
5922     /* 0: loadl */
5923     var37 = ptr4[i];
5924     /* 1: convubw */
5925     var41.x4[0] = (orc_uint8)var37.x4[0];
5926     var41.x4[1] = (orc_uint8)var37.x4[1];
5927     var41.x4[2] = (orc_uint8)var37.x4[2];
5928     var41.x4[3] = (orc_uint8)var37.x4[3];
5929     /* 2: loadl */
5930     var38 = ptr5[i];
5931     /* 3: convubw */
5932     var42.x4[0] = (orc_uint8)var38.x4[0];
5933     var42.x4[1] = (orc_uint8)var38.x4[1];
5934     var42.x4[2] = (orc_uint8)var38.x4[2];
5935     var42.x4[3] = (orc_uint8)var38.x4[3];
5936     /* 4: splatw3q */
5937     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));
5938     /* 5: mullw */
5939     var44.x4[0] = (var41.x4[0] * var43.x4[0]) & 0xffff;
5940     var44.x4[1] = (var41.x4[1] * var43.x4[1]) & 0xffff;
5941     var44.x4[2] = (var41.x4[2] * var43.x4[2]) & 0xffff;
5942     var44.x4[3] = (var41.x4[3] * var43.x4[3]) & 0xffff;
5943     /* 6: div255w */
5944     var45.x4[0] = ((uint16_t)(((orc_uint16)(var44.x4[0]+128)) + (((orc_uint16)(var44.x4[0]+128))>>8)))>>8;
5945     var45.x4[1] = ((uint16_t)(((orc_uint16)(var44.x4[1]+128)) + (((orc_uint16)(var44.x4[1]+128))>>8)))>>8;
5946     var45.x4[2] = ((uint16_t)(((orc_uint16)(var44.x4[2]+128)) + (((orc_uint16)(var44.x4[2]+128))>>8)))>>8;
5947     var45.x4[3] = ((uint16_t)(((orc_uint16)(var44.x4[3]+128)) + (((orc_uint16)(var44.x4[3]+128))>>8)))>>8;
5948     /* 7: convwb */
5949     var46.x4[0] = var45.x4[0];
5950     var46.x4[1] = var45.x4[1];
5951     var46.x4[2] = var45.x4[2];
5952     var46.x4[3] = var45.x4[3];
5953     /* 8: loadl */
5954     var47 = ptr0[i];
5955     /* 9: convubw */
5956     var48.x4[0] = (orc_uint8)var47.x4[0];
5957     var48.x4[1] = (orc_uint8)var47.x4[1];
5958     var48.x4[2] = (orc_uint8)var47.x4[2];
5959     var48.x4[3] = (orc_uint8)var47.x4[3];
5960     /* 11: xorw */
5961     var49.x4[0] = var45.x4[0] ^ var39.x4[0];
5962     var49.x4[1] = var45.x4[1] ^ var39.x4[1];
5963     var49.x4[2] = var45.x4[2] ^ var39.x4[2];
5964     var49.x4[3] = var45.x4[3] ^ var39.x4[3];
5965     /* 12: splatw3q */
5966     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));
5967     /* 13: mullw */
5968     var51.x4[0] = (var48.x4[0] * var50.x4[0]) & 0xffff;
5969     var51.x4[1] = (var48.x4[1] * var50.x4[1]) & 0xffff;
5970     var51.x4[2] = (var48.x4[2] * var50.x4[2]) & 0xffff;
5971     var51.x4[3] = (var48.x4[3] * var50.x4[3]) & 0xffff;
5972     /* 14: div255w */
5973     var52.x4[0] = ((uint16_t)(((orc_uint16)(var51.x4[0]+128)) + (((orc_uint16)(var51.x4[0]+128))>>8)))>>8;
5974     var52.x4[1] = ((uint16_t)(((orc_uint16)(var51.x4[1]+128)) + (((orc_uint16)(var51.x4[1]+128))>>8)))>>8;
5975     var52.x4[2] = ((uint16_t)(((orc_uint16)(var51.x4[2]+128)) + (((orc_uint16)(var51.x4[2]+128))>>8)))>>8;
5976     var52.x4[3] = ((uint16_t)(((orc_uint16)(var51.x4[3]+128)) + (((orc_uint16)(var51.x4[3]+128))>>8)))>>8;
5977     /* 15: convwb */
5978     var53.x4[0] = var52.x4[0];
5979     var53.x4[1] = var52.x4[1];
5980     var53.x4[2] = var52.x4[2];
5981     var53.x4[3] = var52.x4[3];
5982     /* 16: addusb */
5983     var40.x4[0] = ORC_CLAMP_UB((orc_uint8)var53.x4[0] + (orc_uint8)var46.x4[0]);
5984     var40.x4[1] = ORC_CLAMP_UB((orc_uint8)var53.x4[1] + (orc_uint8)var46.x4[1]);
5985     var40.x4[2] = ORC_CLAMP_UB((orc_uint8)var53.x4[2] + (orc_uint8)var46.x4[2]);
5986     var40.x4[3] = ORC_CLAMP_UB((orc_uint8)var53.x4[3] + (orc_uint8)var46.x4[3]);
5987     /* 17: storel */
5988     ptr0[i] = var40;
5989   }
5990
5991 }
5992
5993 /* orc_code_combine_over_u_n */
5994 static void
5995 _backup_orc_code_combine_over_u_n (OrcExecutor * ORC_RESTRICT ex)
5996 {
5997   int i;
5998   int n = ex->n;
5999   orc_union32 * ORC_RESTRICT ptr0;
6000   const orc_union32 * ORC_RESTRICT ptr4;
6001   orc_union64 var37;
6002   orc_union32 var38;
6003   orc_union32 var39;
6004   orc_union64 var40;
6005   orc_union32 var41;
6006   orc_union64 var42;
6007   orc_union64 var43;
6008   orc_union64 var44;
6009   orc_union64 var45;
6010   orc_union64 var46;
6011   orc_union32 var47;
6012
6013   ptr0 = (orc_union32 *)ex->arrays[0];
6014   ptr4 = (orc_union32 *)ex->arrays[4];
6015
6016     /* 4: loadpw */
6017     var37.x4[0] = 0x000000ff; /* 255 or 1.25987e-321f */
6018     var37.x4[1] = 0x000000ff; /* 255 or 1.25987e-321f */
6019     var37.x4[2] = 0x000000ff; /* 255 or 1.25987e-321f */
6020     var37.x4[3] = 0x000000ff; /* 255 or 1.25987e-321f */
6021
6022   for (i = 0; i < n; i++) {
6023     /* 0: loadl */
6024     var39 = ptr4[i];
6025     /* 1: convubw */
6026     var40.x4[0] = (orc_uint8)var39.x4[0];
6027     var40.x4[1] = (orc_uint8)var39.x4[1];
6028     var40.x4[2] = (orc_uint8)var39.x4[2];
6029     var40.x4[3] = (orc_uint8)var39.x4[3];
6030     /* 2: loadl */
6031     var41 = ptr0[i];
6032     /* 3: convubw */
6033     var42.x4[0] = (orc_uint8)var41.x4[0];
6034     var42.x4[1] = (orc_uint8)var41.x4[1];
6035     var42.x4[2] = (orc_uint8)var41.x4[2];
6036     var42.x4[3] = (orc_uint8)var41.x4[3];
6037     /* 5: xorw */
6038     var43.x4[0] = var40.x4[0] ^ var37.x4[0];
6039     var43.x4[1] = var40.x4[1] ^ var37.x4[1];
6040     var43.x4[2] = var40.x4[2] ^ var37.x4[2];
6041     var43.x4[3] = var40.x4[3] ^ var37.x4[3];
6042     /* 6: splatw3q */
6043     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));
6044     /* 7: mullw */
6045     var45.x4[0] = (var42.x4[0] * var44.x4[0]) & 0xffff;
6046     var45.x4[1] = (var42.x4[1] * var44.x4[1]) & 0xffff;
6047     var45.x4[2] = (var42.x4[2] * var44.x4[2]) & 0xffff;
6048     var45.x4[3] = (var42.x4[3] * var44.x4[3]) & 0xffff;
6049     /* 8: div255w */
6050     var46.x4[0] = ((uint16_t)(((orc_uint16)(var45.x4[0]+128)) + (((orc_uint16)(var45.x4[0]+128))>>8)))>>8;
6051     var46.x4[1] = ((uint16_t)(((orc_uint16)(var45.x4[1]+128)) + (((orc_uint16)(var45.x4[1]+128))>>8)))>>8;
6052     var46.x4[2] = ((uint16_t)(((orc_uint16)(var45.x4[2]+128)) + (((orc_uint16)(var45.x4[2]+128))>>8)))>>8;
6053     var46.x4[3] = ((uint16_t)(((orc_uint16)(var45.x4[3]+128)) + (((orc_uint16)(var45.x4[3]+128))>>8)))>>8;
6054     /* 9: convwb */
6055     var47.x4[0] = var46.x4[0];
6056     var47.x4[1] = var46.x4[1];
6057     var47.x4[2] = var46.x4[2];
6058     var47.x4[3] = var46.x4[3];
6059     /* 10: addusb */
6060     var38.x4[0] = ORC_CLAMP_UB((orc_uint8)var47.x4[0] + (orc_uint8)var39.x4[0]);
6061     var38.x4[1] = ORC_CLAMP_UB((orc_uint8)var47.x4[1] + (orc_uint8)var39.x4[1]);
6062     var38.x4[2] = ORC_CLAMP_UB((orc_uint8)var47.x4[2] + (orc_uint8)var39.x4[2]);
6063     var38.x4[3] = ORC_CLAMP_UB((orc_uint8)var47.x4[3] + (orc_uint8)var39.x4[3]);
6064     /* 11: storel */
6065     ptr0[i] = var38;
6066   }
6067
6068 }
6069
6070 /* orc_code_combine_in_u */
6071 static void
6072 _backup_orc_code_combine_in_u (OrcExecutor * ORC_RESTRICT ex)
6073 {
6074   int i;
6075   int n = ex->n;
6076   orc_union32 * ORC_RESTRICT ptr0;
6077   const orc_union32 * ORC_RESTRICT ptr4;
6078   const orc_union32 * ORC_RESTRICT ptr5;
6079   orc_union32 var37;
6080   orc_union32 var38;
6081   orc_union32 var39;
6082   orc_union32 var40;
6083   orc_union64 var41;
6084   orc_union64 var42;
6085   orc_union64 var43;
6086   orc_union64 var44;
6087   orc_union64 var45;
6088   orc_union64 var46;
6089   orc_union64 var47;
6090   orc_union64 var48;
6091   orc_union64 var49;
6092
6093   ptr0 = (orc_union32 *)ex->arrays[0];
6094   ptr4 = (orc_union32 *)ex->arrays[4];
6095   ptr5 = (orc_union32 *)ex->arrays[5];
6096
6097
6098   for (i = 0; i < n; i++) {
6099     /* 0: loadl */
6100     var37 = ptr4[i];
6101     /* 1: convubw */
6102     var41.x4[0] = (orc_uint8)var37.x4[0];
6103     var41.x4[1] = (orc_uint8)var37.x4[1];
6104     var41.x4[2] = (orc_uint8)var37.x4[2];
6105     var41.x4[3] = (orc_uint8)var37.x4[3];
6106     /* 2: loadl */
6107     var38 = ptr5[i];
6108     /* 3: convubw */
6109     var42.x4[0] = (orc_uint8)var38.x4[0];
6110     var42.x4[1] = (orc_uint8)var38.x4[1];
6111     var42.x4[2] = (orc_uint8)var38.x4[2];
6112     var42.x4[3] = (orc_uint8)var38.x4[3];
6113     /* 4: splatw3q */
6114     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));
6115     /* 5: mullw */
6116     var44.x4[0] = (var41.x4[0] * var43.x4[0]) & 0xffff;
6117     var44.x4[1] = (var41.x4[1] * var43.x4[1]) & 0xffff;
6118     var44.x4[2] = (var41.x4[2] * var43.x4[2]) & 0xffff;
6119     var44.x4[3] = (var41.x4[3] * var43.x4[3]) & 0xffff;
6120     /* 6: div255w */
6121     var45.x4[0] = ((uint16_t)(((orc_uint16)(var44.x4[0]+128)) + (((orc_uint16)(var44.x4[0]+128))>>8)))>>8;
6122     var45.x4[1] = ((uint16_t)(((orc_uint16)(var44.x4[1]+128)) + (((orc_uint16)(var44.x4[1]+128))>>8)))>>8;
6123     var45.x4[2] = ((uint16_t)(((orc_uint16)(var44.x4[2]+128)) + (((orc_uint16)(var44.x4[2]+128))>>8)))>>8;
6124     var45.x4[3] = ((uint16_t)(((orc_uint16)(var44.x4[3]+128)) + (((orc_uint16)(var44.x4[3]+128))>>8)))>>8;
6125     /* 7: loadl */
6126     var39 = ptr0[i];
6127     /* 8: convubw */
6128     var46.x4[0] = (orc_uint8)var39.x4[0];
6129     var46.x4[1] = (orc_uint8)var39.x4[1];
6130     var46.x4[2] = (orc_uint8)var39.x4[2];
6131     var46.x4[3] = (orc_uint8)var39.x4[3];
6132     /* 9: splatw3q */
6133     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));
6134     /* 10: mullw */
6135     var48.x4[0] = (var45.x4[0] * var47.x4[0]) & 0xffff;
6136     var48.x4[1] = (var45.x4[1] * var47.x4[1]) & 0xffff;
6137     var48.x4[2] = (var45.x4[2] * var47.x4[2]) & 0xffff;
6138     var48.x4[3] = (var45.x4[3] * var47.x4[3]) & 0xffff;
6139     /* 11: div255w */
6140     var49.x4[0] = ((uint16_t)(((orc_uint16)(var48.x4[0]+128)) + (((orc_uint16)(var48.x4[0]+128))>>8)))>>8;
6141     var49.x4[1] = ((uint16_t)(((orc_uint16)(var48.x4[1]+128)) + (((orc_uint16)(var48.x4[1]+128))>>8)))>>8;
6142     var49.x4[2] = ((uint16_t)(((orc_uint16)(var48.x4[2]+128)) + (((orc_uint16)(var48.x4[2]+128))>>8)))>>8;
6143     var49.x4[3] = ((uint16_t)(((orc_uint16)(var48.x4[3]+128)) + (((orc_uint16)(var48.x4[3]+128))>>8)))>>8;
6144     /* 12: convwb */
6145     var40.x4[0] = var49.x4[0];
6146     var40.x4[1] = var49.x4[1];
6147     var40.x4[2] = var49.x4[2];
6148     var40.x4[3] = var49.x4[3];
6149     /* 13: storel */
6150     ptr0[i] = var40;
6151   }
6152
6153 }
6154
6155 /* orc_code_combine_in_u_n */
6156 static void
6157 _backup_orc_code_combine_in_u_n (OrcExecutor * ORC_RESTRICT ex)
6158 {
6159   int i;
6160   int n = ex->n;
6161   orc_union32 * ORC_RESTRICT ptr0;
6162   const orc_union32 * ORC_RESTRICT ptr4;
6163   orc_union32 var37;
6164   orc_union32 var38;
6165   orc_union32 var39;
6166   orc_union64 var40;
6167   orc_union64 var41;
6168   orc_union64 var42;
6169   orc_union64 var43;
6170   orc_union64 var44;
6171
6172   ptr0 = (orc_union32 *)ex->arrays[0];
6173   ptr4 = (orc_union32 *)ex->arrays[4];
6174
6175
6176   for (i = 0; i < n; i++) {
6177     /* 0: loadl */
6178     var37 = ptr4[i];
6179     /* 1: convubw */
6180     var40.x4[0] = (orc_uint8)var37.x4[0];
6181     var40.x4[1] = (orc_uint8)var37.x4[1];
6182     var40.x4[2] = (orc_uint8)var37.x4[2];
6183     var40.x4[3] = (orc_uint8)var37.x4[3];
6184     /* 2: loadl */
6185     var38 = ptr0[i];
6186     /* 3: convubw */
6187     var41.x4[0] = (orc_uint8)var38.x4[0];
6188     var41.x4[1] = (orc_uint8)var38.x4[1];
6189     var41.x4[2] = (orc_uint8)var38.x4[2];
6190     var41.x4[3] = (orc_uint8)var38.x4[3];
6191     /* 4: splatw3q */
6192     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));
6193     /* 5: mullw */
6194     var43.x4[0] = (var40.x4[0] * var42.x4[0]) & 0xffff;
6195     var43.x4[1] = (var40.x4[1] * var42.x4[1]) & 0xffff;
6196     var43.x4[2] = (var40.x4[2] * var42.x4[2]) & 0xffff;
6197     var43.x4[3] = (var40.x4[3] * var42.x4[3]) & 0xffff;
6198     /* 6: div255w */
6199     var44.x4[0] = ((uint16_t)(((orc_uint16)(var43.x4[0]+128)) + (((orc_uint16)(var43.x4[0]+128))>>8)))>>8;
6200     var44.x4[1] = ((uint16_t)(((orc_uint16)(var43.x4[1]+128)) + (((orc_uint16)(var43.x4[1]+128))>>8)))>>8;
6201     var44.x4[2] = ((uint16_t)(((orc_uint16)(var43.x4[2]+128)) + (((orc_uint16)(var43.x4[2]+128))>>8)))>>8;
6202     var44.x4[3] = ((uint16_t)(((orc_uint16)(var43.x4[3]+128)) + (((orc_uint16)(var43.x4[3]+128))>>8)))>>8;
6203     /* 7: convwb */
6204     var39.x4[0] = var44.x4[0];
6205     var39.x4[1] = var44.x4[1];
6206     var39.x4[2] = var44.x4[2];
6207     var39.x4[3] = var44.x4[3];
6208     /* 8: storel */
6209     ptr0[i] = var39;
6210   }
6211
6212 }
6213
6214 /* orc_code_combine_out_u */
6215 static void
6216 _backup_orc_code_combine_out_u (OrcExecutor * ORC_RESTRICT ex)
6217 {
6218   int i;
6219   int n = ex->n;
6220   orc_union32 * ORC_RESTRICT ptr0;
6221   const orc_union32 * ORC_RESTRICT ptr4;
6222   const orc_union32 * ORC_RESTRICT ptr5;
6223   orc_union32 var37;
6224   orc_union32 var38;
6225   orc_union32 var39;
6226   orc_union64 var40;
6227   orc_union32 var41;
6228   orc_union64 var42;
6229   orc_union64 var43;
6230   orc_union64 var44;
6231   orc_union64 var45;
6232   orc_union64 var46;
6233   orc_union64 var47;
6234   orc_union64 var48;
6235   orc_union64 var49;
6236   orc_union64 var50;
6237   orc_union64 var51;
6238
6239   ptr0 = (orc_union32 *)ex->arrays[0];
6240   ptr4 = (orc_union32 *)ex->arrays[4];
6241   ptr5 = (orc_union32 *)ex->arrays[5];
6242
6243     /* 10: loadpw */
6244     var40.x4[0] = 0x000000ff; /* 255 or 1.25987e-321f */
6245     var40.x4[1] = 0x000000ff; /* 255 or 1.25987e-321f */
6246     var40.x4[2] = 0x000000ff; /* 255 or 1.25987e-321f */
6247     var40.x4[3] = 0x000000ff; /* 255 or 1.25987e-321f */
6248
6249   for (i = 0; i < n; i++) {
6250     /* 0: loadl */
6251     var37 = ptr4[i];
6252     /* 1: convubw */
6253     var42.x4[0] = (orc_uint8)var37.x4[0];
6254     var42.x4[1] = (orc_uint8)var37.x4[1];
6255     var42.x4[2] = (orc_uint8)var37.x4[2];
6256     var42.x4[3] = (orc_uint8)var37.x4[3];
6257     /* 2: loadl */
6258     var38 = ptr5[i];
6259     /* 3: convubw */
6260     var43.x4[0] = (orc_uint8)var38.x4[0];
6261     var43.x4[1] = (orc_uint8)var38.x4[1];
6262     var43.x4[2] = (orc_uint8)var38.x4[2];
6263     var43.x4[3] = (orc_uint8)var38.x4[3];
6264     /* 4: splatw3q */
6265     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));
6266     /* 5: mullw */
6267     var45.x4[0] = (var42.x4[0] * var44.x4[0]) & 0xffff;
6268     var45.x4[1] = (var42.x4[1] * var44.x4[1]) & 0xffff;
6269     var45.x4[2] = (var42.x4[2] * var44.x4[2]) & 0xffff;
6270     var45.x4[3] = (var42.x4[3] * var44.x4[3]) & 0xffff;
6271     /* 6: div255w */
6272     var46.x4[0] = ((uint16_t)(((orc_uint16)(var45.x4[0]+128)) + (((orc_uint16)(var45.x4[0]+128))>>8)))>>8;
6273     var46.x4[1] = ((uint16_t)(((orc_uint16)(var45.x4[1]+128)) + (((orc_uint16)(var45.x4[1]+128))>>8)))>>8;
6274     var46.x4[2] = ((uint16_t)(((orc_uint16)(var45.x4[2]+128)) + (((orc_uint16)(var45.x4[2]+128))>>8)))>>8;
6275     var46.x4[3] = ((uint16_t)(((orc_uint16)(var45.x4[3]+128)) + (((orc_uint16)(var45.x4[3]+128))>>8)))>>8;
6276     /* 7: loadl */
6277     var39 = ptr0[i];
6278     /* 8: convubw */
6279     var47.x4[0] = (orc_uint8)var39.x4[0];
6280     var47.x4[1] = (orc_uint8)var39.x4[1];
6281     var47.x4[2] = (orc_uint8)var39.x4[2];
6282     var47.x4[3] = (orc_uint8)var39.x4[3];
6283     /* 9: splatw3q */
6284     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));
6285     /* 11: xorw */
6286     var49.x4[0] = var48.x4[0] ^ var40.x4[0];
6287     var49.x4[1] = var48.x4[1] ^ var40.x4[1];
6288     var49.x4[2] = var48.x4[2] ^ var40.x4[2];
6289     var49.x4[3] = var48.x4[3] ^ var40.x4[3];
6290     /* 12: mullw */
6291     var50.x4[0] = (var46.x4[0] * var49.x4[0]) & 0xffff;
6292     var50.x4[1] = (var46.x4[1] * var49.x4[1]) & 0xffff;
6293     var50.x4[2] = (var46.x4[2] * var49.x4[2]) & 0xffff;
6294     var50.x4[3] = (var46.x4[3] * var49.x4[3]) & 0xffff;
6295     /* 13: div255w */
6296     var51.x4[0] = ((uint16_t)(((orc_uint16)(var50.x4[0]+128)) + (((orc_uint16)(var50.x4[0]+128))>>8)))>>8;
6297     var51.x4[1] = ((uint16_t)(((orc_uint16)(var50.x4[1]+128)) + (((orc_uint16)(var50.x4[1]+128))>>8)))>>8;
6298     var51.x4[2] = ((uint16_t)(((orc_uint16)(var50.x4[2]+128)) + (((orc_uint16)(var50.x4[2]+128))>>8)))>>8;
6299     var51.x4[3] = ((uint16_t)(((orc_uint16)(var50.x4[3]+128)) + (((orc_uint16)(var50.x4[3]+128))>>8)))>>8;
6300     /* 14: convwb */
6301     var41.x4[0] = var51.x4[0];
6302     var41.x4[1] = var51.x4[1];
6303     var41.x4[2] = var51.x4[2];
6304     var41.x4[3] = var51.x4[3];
6305     /* 15: storel */
6306     ptr0[i] = var41;
6307   }
6308
6309 }
6310
6311 /* orc_code_combine_out_u_n */
6312 static void
6313 _backup_orc_code_combine_out_u_n (OrcExecutor * ORC_RESTRICT ex)
6314 {
6315   int i;
6316   int n = ex->n;
6317   orc_union32 * ORC_RESTRICT ptr0;
6318   const orc_union32 * ORC_RESTRICT ptr4;
6319   orc_union32 var37;
6320   orc_union32 var38;
6321   orc_union64 var39;
6322   orc_union32 var40;
6323   orc_union64 var41;
6324   orc_union64 var42;
6325   orc_union64 var43;
6326   orc_union64 var44;
6327   orc_union64 var45;
6328   orc_union64 var46;
6329
6330   ptr0 = (orc_union32 *)ex->arrays[0];
6331   ptr4 = (orc_union32 *)ex->arrays[4];
6332
6333     /* 5: loadpw */
6334     var39.x4[0] = 0x000000ff; /* 255 or 1.25987e-321f */
6335     var39.x4[1] = 0x000000ff; /* 255 or 1.25987e-321f */
6336     var39.x4[2] = 0x000000ff; /* 255 or 1.25987e-321f */
6337     var39.x4[3] = 0x000000ff; /* 255 or 1.25987e-321f */
6338
6339   for (i = 0; i < n; i++) {
6340     /* 0: loadl */
6341     var37 = ptr4[i];
6342     /* 1: convubw */
6343     var41.x4[0] = (orc_uint8)var37.x4[0];
6344     var41.x4[1] = (orc_uint8)var37.x4[1];
6345     var41.x4[2] = (orc_uint8)var37.x4[2];
6346     var41.x4[3] = (orc_uint8)var37.x4[3];
6347     /* 2: loadl */
6348     var38 = ptr0[i];
6349     /* 3: convubw */
6350     var42.x4[0] = (orc_uint8)var38.x4[0];
6351     var42.x4[1] = (orc_uint8)var38.x4[1];
6352     var42.x4[2] = (orc_uint8)var38.x4[2];
6353     var42.x4[3] = (orc_uint8)var38.x4[3];
6354     /* 4: splatw3q */
6355     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));
6356     /* 6: xorw */
6357     var44.x4[0] = var43.x4[0] ^ var39.x4[0];
6358     var44.x4[1] = var43.x4[1] ^ var39.x4[1];
6359     var44.x4[2] = var43.x4[2] ^ var39.x4[2];
6360     var44.x4[3] = var43.x4[3] ^ var39.x4[3];
6361     /* 7: mullw */
6362     var45.x4[0] = (var41.x4[0] * var44.x4[0]) & 0xffff;
6363     var45.x4[1] = (var41.x4[1] * var44.x4[1]) & 0xffff;
6364     var45.x4[2] = (var41.x4[2] * var44.x4[2]) & 0xffff;
6365     var45.x4[3] = (var41.x4[3] * var44.x4[3]) & 0xffff;
6366     /* 8: div255w */
6367     var46.x4[0] = ((uint16_t)(((orc_uint16)(var45.x4[0]+128)) + (((orc_uint16)(var45.x4[0]+128))>>8)))>>8;
6368     var46.x4[1] = ((uint16_t)(((orc_uint16)(var45.x4[1]+128)) + (((orc_uint16)(var45.x4[1]+128))>>8)))>>8;
6369     var46.x4[2] = ((uint16_t)(((orc_uint16)(var45.x4[2]+128)) + (((orc_uint16)(var45.x4[2]+128))>>8)))>>8;
6370     var46.x4[3] = ((uint16_t)(((orc_uint16)(var45.x4[3]+128)) + (((orc_uint16)(var45.x4[3]+128))>>8)))>>8;
6371     /* 9: convwb */
6372     var40.x4[0] = var46.x4[0];
6373     var40.x4[1] = var46.x4[1];
6374     var40.x4[2] = var46.x4[2];
6375     var40.x4[3] = var46.x4[3];
6376     /* 10: storel */
6377     ptr0[i] = var40;
6378   }
6379
6380 }
6381
6382 /* orc_code_combine_atop_u */
6383 static void
6384 _backup_orc_code_combine_atop_u (OrcExecutor * ORC_RESTRICT ex)
6385 {
6386   int i;
6387   int n = ex->n;
6388   orc_union32 * ORC_RESTRICT ptr0;
6389   const orc_union32 * ORC_RESTRICT ptr4;
6390   const orc_union32 * ORC_RESTRICT ptr5;
6391   orc_union32 var40;
6392   orc_union32 var41;
6393   orc_union32 var42;
6394   orc_union32 var43;
6395   orc_union64 var44;
6396   orc_union32 var45;
6397   orc_union64 var46;
6398   orc_union64 var47;
6399   orc_union64 var48;
6400   orc_union64 var49;
6401   orc_union64 var50;
6402   orc_union64 var51;
6403   orc_union64 var52;
6404   orc_union64 var53;
6405   orc_union64 var54;
6406   orc_union32 var55;
6407   orc_union64 var56;
6408   orc_union64 var57;
6409   orc_union64 var58;
6410   orc_union64 var59;
6411   orc_union64 var60;
6412   orc_union32 var61;
6413
6414   ptr0 = (orc_union32 *)ex->arrays[0];
6415   ptr4 = (orc_union32 *)ex->arrays[4];
6416   ptr5 = (orc_union32 *)ex->arrays[5];
6417
6418     /* 16: loadpw */
6419     var44.x4[0] = 0x000000ff; /* 255 or 1.25987e-321f */
6420     var44.x4[1] = 0x000000ff; /* 255 or 1.25987e-321f */
6421     var44.x4[2] = 0x000000ff; /* 255 or 1.25987e-321f */
6422     var44.x4[3] = 0x000000ff; /* 255 or 1.25987e-321f */
6423
6424   for (i = 0; i < n; i++) {
6425     /* 0: loadl */
6426     var40 = ptr4[i];
6427     /* 1: convubw */
6428     var46.x4[0] = (orc_uint8)var40.x4[0];
6429     var46.x4[1] = (orc_uint8)var40.x4[1];
6430     var46.x4[2] = (orc_uint8)var40.x4[2];
6431     var46.x4[3] = (orc_uint8)var40.x4[3];
6432     /* 2: loadl */
6433     var41 = ptr5[i];
6434     /* 3: convubw */
6435     var47.x4[0] = (orc_uint8)var41.x4[0];
6436     var47.x4[1] = (orc_uint8)var41.x4[1];
6437     var47.x4[2] = (orc_uint8)var41.x4[2];
6438     var47.x4[3] = (orc_uint8)var41.x4[3];
6439     /* 4: splatw3q */
6440     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));
6441     /* 5: mullw */
6442     var49.x4[0] = (var46.x4[0] * var48.x4[0]) & 0xffff;
6443     var49.x4[1] = (var46.x4[1] * var48.x4[1]) & 0xffff;
6444     var49.x4[2] = (var46.x4[2] * var48.x4[2]) & 0xffff;
6445     var49.x4[3] = (var46.x4[3] * var48.x4[3]) & 0xffff;
6446     /* 6: div255w */
6447     var50.x4[0] = ((uint16_t)(((orc_uint16)(var49.x4[0]+128)) + (((orc_uint16)(var49.x4[0]+128))>>8)))>>8;
6448     var50.x4[1] = ((uint16_t)(((orc_uint16)(var49.x4[1]+128)) + (((orc_uint16)(var49.x4[1]+128))>>8)))>>8;
6449     var50.x4[2] = ((uint16_t)(((orc_uint16)(var49.x4[2]+128)) + (((orc_uint16)(var49.x4[2]+128))>>8)))>>8;
6450     var50.x4[3] = ((uint16_t)(((orc_uint16)(var49.x4[3]+128)) + (((orc_uint16)(var49.x4[3]+128))>>8)))>>8;
6451     /* 7: loadl */
6452     var42 = ptr0[i];
6453     /* 8: convubw */
6454     var51.x4[0] = (orc_uint8)var42.x4[0];
6455     var51.x4[1] = (orc_uint8)var42.x4[1];
6456     var51.x4[2] = (orc_uint8)var42.x4[2];
6457     var51.x4[3] = (orc_uint8)var42.x4[3];
6458     /* 9: splatw3q */
6459     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));
6460     /* 10: mullw */
6461     var53.x4[0] = (var50.x4[0] * var52.x4[0]) & 0xffff;
6462     var53.x4[1] = (var50.x4[1] * var52.x4[1]) & 0xffff;
6463     var53.x4[2] = (var50.x4[2] * var52.x4[2]) & 0xffff;
6464     var53.x4[3] = (var50.x4[3] * var52.x4[3]) & 0xffff;
6465     /* 11: div255w */
6466     var54.x4[0] = ((uint16_t)(((orc_uint16)(var53.x4[0]+128)) + (((orc_uint16)(var53.x4[0]+128))>>8)))>>8;
6467     var54.x4[1] = ((uint16_t)(((orc_uint16)(var53.x4[1]+128)) + (((orc_uint16)(var53.x4[1]+128))>>8)))>>8;
6468     var54.x4[2] = ((uint16_t)(((orc_uint16)(var53.x4[2]+128)) + (((orc_uint16)(var53.x4[2]+128))>>8)))>>8;
6469     var54.x4[3] = ((uint16_t)(((orc_uint16)(var53.x4[3]+128)) + (((orc_uint16)(var53.x4[3]+128))>>8)))>>8;
6470     /* 12: convwb */
6471     var55.x4[0] = var54.x4[0];
6472     var55.x4[1] = var54.x4[1];
6473     var55.x4[2] = var54.x4[2];
6474     var55.x4[3] = var54.x4[3];
6475     /* 13: loadl */
6476     var43 = ptr0[i];
6477     /* 14: convubw */
6478     var56.x4[0] = (orc_uint8)var43.x4[0];
6479     var56.x4[1] = (orc_uint8)var43.x4[1];
6480     var56.x4[2] = (orc_uint8)var43.x4[2];
6481     var56.x4[3] = (orc_uint8)var43.x4[3];
6482     /* 15: splatw3q */
6483     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));
6484     /* 17: xorw */
6485     var58.x4[0] = var57.x4[0] ^ var44.x4[0];
6486     var58.x4[1] = var57.x4[1] ^ var44.x4[1];
6487     var58.x4[2] = var57.x4[2] ^ var44.x4[2];
6488     var58.x4[3] = var57.x4[3] ^ var44.x4[3];
6489     /* 18: mullw */
6490     var59.x4[0] = (var56.x4[0] * var58.x4[0]) & 0xffff;
6491     var59.x4[1] = (var56.x4[1] * var58.x4[1]) & 0xffff;
6492     var59.x4[2] = (var56.x4[2] * var58.x4[2]) & 0xffff;
6493     var59.x4[3] = (var56.x4[3] * var58.x4[3]) & 0xffff;
6494     /* 19: div255w */
6495     var60.x4[0] = ((uint16_t)(((orc_uint16)(var59.x4[0]+128)) + (((orc_uint16)(var59.x4[0]+128))>>8)))>>8;
6496     var60.x4[1] = ((uint16_t)(((orc_uint16)(var59.x4[1]+128)) + (((orc_uint16)(var59.x4[1]+128))>>8)))>>8;
6497     var60.x4[2] = ((uint16_t)(((orc_uint16)(var59.x4[2]+128)) + (((orc_uint16)(var59.x4[2]+128))>>8)))>>8;
6498     var60.x4[3] = ((uint16_t)(((orc_uint16)(var59.x4[3]+128)) + (((orc_uint16)(var59.x4[3]+128))>>8)))>>8;
6499     /* 20: convwb */
6500     var61.x4[0] = var60.x4[0];
6501     var61.x4[1] = var60.x4[1];
6502     var61.x4[2] = var60.x4[2];
6503     var61.x4[3] = var60.x4[3];
6504     /* 21: addusb */
6505     var45.x4[0] = ORC_CLAMP_UB((orc_uint8)var55.x4[0] + (orc_uint8)var61.x4[0]);
6506     var45.x4[1] = ORC_CLAMP_UB((orc_uint8)var55.x4[1] + (orc_uint8)var61.x4[1]);
6507     var45.x4[2] = ORC_CLAMP_UB((orc_uint8)var55.x4[2] + (orc_uint8)var61.x4[2]);
6508     var45.x4[3] = ORC_CLAMP_UB((orc_uint8)var55.x4[3] + (orc_uint8)var61.x4[3]);
6509     /* 22: storel */
6510     ptr0[i] = var45;
6511   }
6512
6513 }
6514
6515 /* orc_code_combine_atop_u_n */
6516 static void
6517 _backup_orc_code_combine_atop_u_n (OrcExecutor * ORC_RESTRICT ex)
6518 {
6519   int i;
6520   int n = ex->n;
6521   orc_union32 * ORC_RESTRICT ptr0;
6522   const orc_union32 * ORC_RESTRICT ptr4;
6523   orc_union32 var40;
6524   orc_union32 var41;
6525   orc_union32 var42;
6526   orc_union64 var43;
6527   orc_union32 var44;
6528   orc_union64 var45;
6529   orc_union64 var46;
6530   orc_union64 var47;
6531   orc_union64 var48;
6532   orc_union64 var49;
6533   orc_union32 var50;
6534   orc_union64 var51;
6535   orc_union64 var52;
6536   orc_union64 var53;
6537   orc_union64 var54;
6538   orc_union64 var55;
6539   orc_union32 var56;
6540
6541   ptr0 = (orc_union32 *)ex->arrays[0];
6542   ptr4 = (orc_union32 *)ex->arrays[4];
6543
6544     /* 11: loadpw */
6545     var43.x4[0] = 0x000000ff; /* 255 or 1.25987e-321f */
6546     var43.x4[1] = 0x000000ff; /* 255 or 1.25987e-321f */
6547     var43.x4[2] = 0x000000ff; /* 255 or 1.25987e-321f */
6548     var43.x4[3] = 0x000000ff; /* 255 or 1.25987e-321f */
6549
6550   for (i = 0; i < n; i++) {
6551     /* 0: loadl */
6552     var40 = ptr4[i];
6553     /* 1: convubw */
6554     var45.x4[0] = (orc_uint8)var40.x4[0];
6555     var45.x4[1] = (orc_uint8)var40.x4[1];
6556     var45.x4[2] = (orc_uint8)var40.x4[2];
6557     var45.x4[3] = (orc_uint8)var40.x4[3];
6558     /* 2: loadl */
6559     var41 = ptr0[i];
6560     /* 3: convubw */
6561     var46.x4[0] = (orc_uint8)var41.x4[0];
6562     var46.x4[1] = (orc_uint8)var41.x4[1];
6563     var46.x4[2] = (orc_uint8)var41.x4[2];
6564     var46.x4[3] = (orc_uint8)var41.x4[3];
6565     /* 4: splatw3q */
6566     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));
6567     /* 5: mullw */
6568     var48.x4[0] = (var45.x4[0] * var47.x4[0]) & 0xffff;
6569     var48.x4[1] = (var45.x4[1] * var47.x4[1]) & 0xffff;
6570     var48.x4[2] = (var45.x4[2] * var47.x4[2]) & 0xffff;
6571     var48.x4[3] = (var45.x4[3] * var47.x4[3]) & 0xffff;
6572     /* 6: div255w */
6573     var49.x4[0] = ((uint16_t)(((orc_uint16)(var48.x4[0]+128)) + (((orc_uint16)(var48.x4[0]+128))>>8)))>>8;
6574     var49.x4[1] = ((uint16_t)(((orc_uint16)(var48.x4[1]+128)) + (((orc_uint16)(var48.x4[1]+128))>>8)))>>8;
6575     var49.x4[2] = ((uint16_t)(((orc_uint16)(var48.x4[2]+128)) + (((orc_uint16)(var48.x4[2]+128))>>8)))>>8;
6576     var49.x4[3] = ((uint16_t)(((orc_uint16)(var48.x4[3]+128)) + (((orc_uint16)(var48.x4[3]+128))>>8)))>>8;
6577     /* 7: convwb */
6578     var50.x4[0] = var49.x4[0];
6579     var50.x4[1] = var49.x4[1];
6580     var50.x4[2] = var49.x4[2];
6581     var50.x4[3] = var49.x4[3];
6582     /* 8: loadl */
6583     var42 = ptr0[i];
6584     /* 9: convubw */
6585     var51.x4[0] = (orc_uint8)var42.x4[0];
6586     var51.x4[1] = (orc_uint8)var42.x4[1];
6587     var51.x4[2] = (orc_uint8)var42.x4[2];
6588     var51.x4[3] = (orc_uint8)var42.x4[3];
6589     /* 10: splatw3q */
6590     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));
6591     /* 12: xorw */
6592     var53.x4[0] = var52.x4[0] ^ var43.x4[0];
6593     var53.x4[1] = var52.x4[1] ^ var43.x4[1];
6594     var53.x4[2] = var52.x4[2] ^ var43.x4[2];
6595     var53.x4[3] = var52.x4[3] ^ var43.x4[3];
6596     /* 13: mullw */
6597     var54.x4[0] = (var51.x4[0] * var53.x4[0]) & 0xffff;
6598     var54.x4[1] = (var51.x4[1] * var53.x4[1]) & 0xffff;
6599     var54.x4[2] = (var51.x4[2] * var53.x4[2]) & 0xffff;
6600     var54.x4[3] = (var51.x4[3] * var53.x4[3]) & 0xffff;
6601     /* 14: div255w */
6602     var55.x4[0] = ((uint16_t)(((orc_uint16)(var54.x4[0]+128)) + (((orc_uint16)(var54.x4[0]+128))>>8)))>>8;
6603     var55.x4[1] = ((uint16_t)(((orc_uint16)(var54.x4[1]+128)) + (((orc_uint16)(var54.x4[1]+128))>>8)))>>8;
6604     var55.x4[2] = ((uint16_t)(((orc_uint16)(var54.x4[2]+128)) + (((orc_uint16)(var54.x4[2]+128))>>8)))>>8;
6605     var55.x4[3] = ((uint16_t)(((orc_uint16)(var54.x4[3]+128)) + (((orc_uint16)(var54.x4[3]+128))>>8)))>>8;
6606     /* 15: convwb */
6607     var56.x4[0] = var55.x4[0];
6608     var56.x4[1] = var55.x4[1];
6609     var56.x4[2] = var55.x4[2];
6610     var56.x4[3] = var55.x4[3];
6611     /* 16: addusb */
6612     var44.x4[0] = ORC_CLAMP_UB((orc_uint8)var50.x4[0] + (orc_uint8)var56.x4[0]);
6613     var44.x4[1] = ORC_CLAMP_UB((orc_uint8)var50.x4[1] + (orc_uint8)var56.x4[1]);
6614     var44.x4[2] = ORC_CLAMP_UB((orc_uint8)var50.x4[2] + (orc_uint8)var56.x4[2]);
6615     var44.x4[3] = ORC_CLAMP_UB((orc_uint8)var50.x4[3] + (orc_uint8)var56.x4[3]);
6616     /* 17: storel */
6617     ptr0[i] = var44;
6618   }
6619
6620 }
6621
6622 /* orc_code_combine_xor_u */
6623 static void
6624 _backup_orc_code_combine_xor_u (OrcExecutor * ORC_RESTRICT ex)
6625 {
6626   int i;
6627   int n = ex->n;
6628   orc_union32 * ORC_RESTRICT ptr0;
6629   const orc_union32 * ORC_RESTRICT ptr4;
6630   const orc_union32 * ORC_RESTRICT ptr5;
6631   orc_union32 var40;
6632   orc_union32 var41;
6633   orc_union32 var42;
6634   orc_union64 var43;
6635   orc_union32 var44;
6636   orc_union64 var45;
6637   orc_union32 var46;
6638   orc_union64 var47;
6639   orc_union64 var48;
6640   orc_union64 var49;
6641   orc_union64 var50;
6642   orc_union64 var51;
6643   orc_union64 var52;
6644   orc_union64 var53;
6645   orc_union64 var54;
6646   orc_union64 var55;
6647   orc_union64 var56;
6648   orc_union32 var57;
6649   orc_union64 var58;
6650   orc_union64 var59;
6651   orc_union64 var60;
6652   orc_union64 var61;
6653   orc_union64 var62;
6654   orc_union32 var63;
6655
6656   ptr0 = (orc_union32 *)ex->arrays[0];
6657   ptr4 = (orc_union32 *)ex->arrays[4];
6658   ptr5 = (orc_union32 *)ex->arrays[5];
6659
6660     /* 10: loadpw */
6661     var43.x4[0] = 0x000000ff; /* 255 or 1.25987e-321f */
6662     var43.x4[1] = 0x000000ff; /* 255 or 1.25987e-321f */
6663     var43.x4[2] = 0x000000ff; /* 255 or 1.25987e-321f */
6664     var43.x4[3] = 0x000000ff; /* 255 or 1.25987e-321f */
6665     /* 18: loadpw */
6666     var45.x4[0] = 0x000000ff; /* 255 or 1.25987e-321f */
6667     var45.x4[1] = 0x000000ff; /* 255 or 1.25987e-321f */
6668     var45.x4[2] = 0x000000ff; /* 255 or 1.25987e-321f */
6669     var45.x4[3] = 0x000000ff; /* 255 or 1.25987e-321f */
6670
6671   for (i = 0; i < n; i++) {
6672     /* 0: loadl */
6673     var40 = ptr4[i];
6674     /* 1: convubw */
6675     var47.x4[0] = (orc_uint8)var40.x4[0];
6676     var47.x4[1] = (orc_uint8)var40.x4[1];
6677     var47.x4[2] = (orc_uint8)var40.x4[2];
6678     var47.x4[3] = (orc_uint8)var40.x4[3];
6679     /* 2: loadl */
6680     var41 = ptr5[i];
6681     /* 3: convubw */
6682     var48.x4[0] = (orc_uint8)var41.x4[0];
6683     var48.x4[1] = (orc_uint8)var41.x4[1];
6684     var48.x4[2] = (orc_uint8)var41.x4[2];
6685     var48.x4[3] = (orc_uint8)var41.x4[3];
6686     /* 4: splatw3q */
6687     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));
6688     /* 5: mullw */
6689     var50.x4[0] = (var47.x4[0] * var49.x4[0]) & 0xffff;
6690     var50.x4[1] = (var47.x4[1] * var49.x4[1]) & 0xffff;
6691     var50.x4[2] = (var47.x4[2] * var49.x4[2]) & 0xffff;
6692     var50.x4[3] = (var47.x4[3] * var49.x4[3]) & 0xffff;
6693     /* 6: div255w */
6694     var51.x4[0] = ((uint16_t)(((orc_uint16)(var50.x4[0]+128)) + (((orc_uint16)(var50.x4[0]+128))>>8)))>>8;
6695     var51.x4[1] = ((uint16_t)(((orc_uint16)(var50.x4[1]+128)) + (((orc_uint16)(var50.x4[1]+128))>>8)))>>8;
6696     var51.x4[2] = ((uint16_t)(((orc_uint16)(var50.x4[2]+128)) + (((orc_uint16)(var50.x4[2]+128))>>8)))>>8;
6697     var51.x4[3] = ((uint16_t)(((orc_uint16)(var50.x4[3]+128)) + (((orc_uint16)(var50.x4[3]+128))>>8)))>>8;
6698     /* 7: loadl */
6699     var42 = ptr0[i];
6700     /* 8: convubw */
6701     var52.x4[0] = (orc_uint8)var42.x4[0];
6702     var52.x4[1] = (orc_uint8)var42.x4[1];
6703     var52.x4[2] = (orc_uint8)var42.x4[2];
6704     var52.x4[3] = (orc_uint8)var42.x4[3];
6705     /* 9: splatw3q */
6706     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));
6707     /* 11: xorw */
6708     var54.x4[0] = var53.x4[0] ^ var43.x4[0];
6709     var54.x4[1] = var53.x4[1] ^ var43.x4[1];
6710     var54.x4[2] = var53.x4[2] ^ var43.x4[2];
6711     var54.x4[3] = var53.x4[3] ^ var43.x4[3];
6712     /* 12: mullw */
6713     var55.x4[0] = (var51.x4[0] * var54.x4[0]) & 0xffff;
6714     var55.x4[1] = (var51.x4[1] * var54.x4[1]) & 0xffff;
6715     var55.x4[2] = (var51.x4[2] * var54.x4[2]) & 0xffff;
6716     var55.x4[3] = (var51.x4[3] * var54.x4[3]) & 0xffff;
6717     /* 13: div255w */
6718     var56.x4[0] = ((uint16_t)(((orc_uint16)(var55.x4[0]+128)) + (((orc_uint16)(var55.x4[0]+128))>>8)))>>8;
6719     var56.x4[1] = ((uint16_t)(((orc_uint16)(var55.x4[1]+128)) + (((orc_uint16)(var55.x4[1]+128))>>8)))>>8;
6720     var56.x4[2] = ((uint16_t)(((orc_uint16)(var55.x4[2]+128)) + (((orc_uint16)(var55.x4[2]+128))>>8)))>>8;
6721     var56.x4[3] = ((uint16_t)(((orc_uint16)(var55.x4[3]+128)) + (((orc_uint16)(var55.x4[3]+128))>>8)))>>8;
6722     /* 14: convwb */
6723     var57.x4[0] = var56.x4[0];
6724     var57.x4[1] = var56.x4[1];
6725     var57.x4[2] = var56.x4[2];
6726     var57.x4[3] = var56.x4[3];
6727     /* 15: loadl */
6728     var44 = ptr0[i];
6729     /* 16: convubw */
6730     var58.x4[0] = (orc_uint8)var44.x4[0];
6731     var58.x4[1] = (orc_uint8)var44.x4[1];
6732     var58.x4[2] = (orc_uint8)var44.x4[2];
6733     var58.x4[3] = (orc_uint8)var44.x4[3];
6734     /* 17: splatw3q */
6735     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));
6736     /* 19: xorw */
6737     var60.x4[0] = var59.x4[0] ^ var45.x4[0];
6738     var60.x4[1] = var59.x4[1] ^ var45.x4[1];
6739     var60.x4[2] = var59.x4[2] ^ var45.x4[2];
6740     var60.x4[3] = var59.x4[3] ^ var45.x4[3];
6741     /* 20: mullw */
6742     var61.x4[0] = (var58.x4[0] * var60.x4[0]) & 0xffff;
6743     var61.x4[1] = (var58.x4[1] * var60.x4[1]) & 0xffff;
6744     var61.x4[2] = (var58.x4[2] * var60.x4[2]) & 0xffff;
6745     var61.x4[3] = (var58.x4[3] * var60.x4[3]) & 0xffff;
6746     /* 21: div255w */
6747     var62.x4[0] = ((uint16_t)(((orc_uint16)(var61.x4[0]+128)) + (((orc_uint16)(var61.x4[0]+128))>>8)))>>8;
6748     var62.x4[1] = ((uint16_t)(((orc_uint16)(var61.x4[1]+128)) + (((orc_uint16)(var61.x4[1]+128))>>8)))>>8;
6749     var62.x4[2] = ((uint16_t)(((orc_uint16)(var61.x4[2]+128)) + (((orc_uint16)(var61.x4[2]+128))>>8)))>>8;
6750     var62.x4[3] = ((uint16_t)(((orc_uint16)(var61.x4[3]+128)) + (((orc_uint16)(var61.x4[3]+128))>>8)))>>8;
6751     /* 22: convwb */
6752     var63.x4[0] = var62.x4[0];
6753     var63.x4[1] = var62.x4[1];
6754     var63.x4[2] = var62.x4[2];
6755     var63.x4[3] = var62.x4[3];
6756     /* 23: addusb */
6757     var46.x4[0] = ORC_CLAMP_UB((orc_uint8)var57.x4[0] + (orc_uint8)var63.x4[0]);
6758     var46.x4[1] = ORC_CLAMP_UB((orc_uint8)var57.x4[1] + (orc_uint8)var63.x4[1]);
6759     var46.x4[2] = ORC_CLAMP_UB((orc_uint8)var57.x4[2] + (orc_uint8)var63.x4[2]);
6760     var46.x4[3] = ORC_CLAMP_UB((orc_uint8)var57.x4[3] + (orc_uint8)var63.x4[3]);
6761     /* 24: storel */
6762     ptr0[i] = var46;
6763   }
6764
6765 }
6766
6767 /* orc_code_combine_xor_u_n */
6768 static void
6769 _backup_orc_code_combine_xor_u_n (OrcExecutor * ORC_RESTRICT ex)
6770 {
6771   int i;
6772   int n = ex->n;
6773   orc_union32 * ORC_RESTRICT ptr0;
6774   const orc_union32 * ORC_RESTRICT ptr4;
6775   orc_union32 var40;
6776   orc_union32 var41;
6777   orc_union64 var42;
6778   orc_union32 var43;
6779   orc_union64 var44;
6780   orc_union32 var45;
6781   orc_union64 var46;
6782   orc_union64 var47;
6783   orc_union64 var48;
6784   orc_union64 var49;
6785   orc_union64 var50;
6786   orc_union64 var51;
6787   orc_union32 var52;
6788   orc_union64 var53;
6789   orc_union64 var54;
6790   orc_union64 var55;
6791   orc_union64 var56;
6792   orc_union64 var57;
6793   orc_union32 var58;
6794
6795   ptr0 = (orc_union32 *)ex->arrays[0];
6796   ptr4 = (orc_union32 *)ex->arrays[4];
6797
6798     /* 5: loadpw */
6799     var42.x4[0] = 0x000000ff; /* 255 or 1.25987e-321f */
6800     var42.x4[1] = 0x000000ff; /* 255 or 1.25987e-321f */
6801     var42.x4[2] = 0x000000ff; /* 255 or 1.25987e-321f */
6802     var42.x4[3] = 0x000000ff; /* 255 or 1.25987e-321f */
6803     /* 13: loadpw */
6804     var44.x4[0] = 0x000000ff; /* 255 or 1.25987e-321f */
6805     var44.x4[1] = 0x000000ff; /* 255 or 1.25987e-321f */
6806     var44.x4[2] = 0x000000ff; /* 255 or 1.25987e-321f */
6807     var44.x4[3] = 0x000000ff; /* 255 or 1.25987e-321f */
6808
6809   for (i = 0; i < n; i++) {
6810     /* 0: loadl */
6811     var40 = ptr4[i];
6812     /* 1: convubw */
6813     var46.x4[0] = (orc_uint8)var40.x4[0];
6814     var46.x4[1] = (orc_uint8)var40.x4[1];
6815     var46.x4[2] = (orc_uint8)var40.x4[2];
6816     var46.x4[3] = (orc_uint8)var40.x4[3];
6817     /* 2: loadl */
6818     var41 = ptr0[i];
6819     /* 3: convubw */
6820     var47.x4[0] = (orc_uint8)var41.x4[0];
6821     var47.x4[1] = (orc_uint8)var41.x4[1];
6822     var47.x4[2] = (orc_uint8)var41.x4[2];
6823     var47.x4[3] = (orc_uint8)var41.x4[3];
6824     /* 4: splatw3q */
6825     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));
6826     /* 6: xorw */
6827     var49.x4[0] = var48.x4[0] ^ var42.x4[0];
6828     var49.x4[1] = var48.x4[1] ^ var42.x4[1];
6829     var49.x4[2] = var48.x4[2] ^ var42.x4[2];
6830     var49.x4[3] = var48.x4[3] ^ var42.x4[3];
6831     /* 7: mullw */
6832     var50.x4[0] = (var46.x4[0] * var49.x4[0]) & 0xffff;
6833     var50.x4[1] = (var46.x4[1] * var49.x4[1]) & 0xffff;
6834     var50.x4[2] = (var46.x4[2] * var49.x4[2]) & 0xffff;
6835     var50.x4[3] = (var46.x4[3] * var49.x4[3]) & 0xffff;
6836     /* 8: div255w */
6837     var51.x4[0] = ((uint16_t)(((orc_uint16)(var50.x4[0]+128)) + (((orc_uint16)(var50.x4[0]+128))>>8)))>>8;
6838     var51.x4[1] = ((uint16_t)(((orc_uint16)(var50.x4[1]+128)) + (((orc_uint16)(var50.x4[1]+128))>>8)))>>8;
6839     var51.x4[2] = ((uint16_t)(((orc_uint16)(var50.x4[2]+128)) + (((orc_uint16)(var50.x4[2]+128))>>8)))>>8;
6840     var51.x4[3] = ((uint16_t)(((orc_uint16)(var50.x4[3]+128)) + (((orc_uint16)(var50.x4[3]+128))>>8)))>>8;
6841     /* 9: convwb */
6842     var52.x4[0] = var51.x4[0];
6843     var52.x4[1] = var51.x4[1];
6844     var52.x4[2] = var51.x4[2];
6845     var52.x4[3] = var51.x4[3];
6846     /* 10: loadl */
6847     var43 = ptr0[i];
6848     /* 11: convubw */
6849     var53.x4[0] = (orc_uint8)var43.x4[0];
6850     var53.x4[1] = (orc_uint8)var43.x4[1];
6851     var53.x4[2] = (orc_uint8)var43.x4[2];
6852     var53.x4[3] = (orc_uint8)var43.x4[3];
6853     /* 12: splatw3q */
6854     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));
6855     /* 14: xorw */
6856     var55.x4[0] = var54.x4[0] ^ var44.x4[0];
6857     var55.x4[1] = var54.x4[1] ^ var44.x4[1];
6858     var55.x4[2] = var54.x4[2] ^ var44.x4[2];
6859     var55.x4[3] = var54.x4[3] ^ var44.x4[3];
6860     /* 15: mullw */
6861     var56.x4[0] = (var53.x4[0] * var55.x4[0]) & 0xffff;
6862     var56.x4[1] = (var53.x4[1] * var55.x4[1]) & 0xffff;
6863     var56.x4[2] = (var53.x4[2] * var55.x4[2]) & 0xffff;
6864     var56.x4[3] = (var53.x4[3] * var55.x4[3]) & 0xffff;
6865     /* 16: div255w */
6866     var57.x4[0] = ((uint16_t)(((orc_uint16)(var56.x4[0]+128)) + (((orc_uint16)(var56.x4[0]+128))>>8)))>>8;
6867     var57.x4[1] = ((uint16_t)(((orc_uint16)(var56.x4[1]+128)) + (((orc_uint16)(var56.x4[1]+128))>>8)))>>8;
6868     var57.x4[2] = ((uint16_t)(((orc_uint16)(var56.x4[2]+128)) + (((orc_uint16)(var56.x4[2]+128))>>8)))>>8;
6869     var57.x4[3] = ((uint16_t)(((orc_uint16)(var56.x4[3]+128)) + (((orc_uint16)(var56.x4[3]+128))>>8)))>>8;
6870     /* 17: convwb */
6871     var58.x4[0] = var57.x4[0];
6872     var58.x4[1] = var57.x4[1];
6873     var58.x4[2] = var57.x4[2];
6874     var58.x4[3] = var57.x4[3];
6875     /* 18: addusb */
6876     var45.x4[0] = ORC_CLAMP_UB((orc_uint8)var52.x4[0] + (orc_uint8)var58.x4[0]);
6877     var45.x4[1] = ORC_CLAMP_UB((orc_uint8)var52.x4[1] + (orc_uint8)var58.x4[1]);
6878     var45.x4[2] = ORC_CLAMP_UB((orc_uint8)var52.x4[2] + (orc_uint8)var58.x4[2]);
6879     var45.x4[3] = ORC_CLAMP_UB((orc_uint8)var52.x4[3] + (orc_uint8)var58.x4[3]);
6880     /* 19: storel */
6881     ptr0[i] = var45;
6882   }
6883
6884 }
6885
6886 /* orc_code_combine_add_ca */
6887 static void
6888 _backup_orc_code_combine_add_ca (OrcExecutor * ORC_RESTRICT ex)
6889 {
6890   int i;
6891   int n = ex->n;
6892   orc_union32 * ORC_RESTRICT ptr0;
6893   const orc_union32 * ORC_RESTRICT ptr4;
6894   const orc_union32 * ORC_RESTRICT ptr5;
6895   orc_union32 var35;
6896   orc_union32 var36;
6897   orc_union32 var37;
6898   orc_union32 var38;
6899   orc_union64 var39;
6900   orc_union64 var40;
6901   orc_union64 var41;
6902   orc_union64 var42;
6903   orc_union32 var43;
6904
6905   ptr0 = (orc_union32 *)ex->arrays[0];
6906   ptr4 = (orc_union32 *)ex->arrays[4];
6907   ptr5 = (orc_union32 *)ex->arrays[5];
6908
6909
6910   for (i = 0; i < n; i++) {
6911     /* 0: loadl */
6912     var35 = ptr4[i];
6913     /* 1: convubw */
6914     var39.x4[0] = (orc_uint8)var35.x4[0];
6915     var39.x4[1] = (orc_uint8)var35.x4[1];
6916     var39.x4[2] = (orc_uint8)var35.x4[2];
6917     var39.x4[3] = (orc_uint8)var35.x4[3];
6918     /* 2: loadl */
6919     var36 = ptr5[i];
6920     /* 3: convubw */
6921     var40.x4[0] = (orc_uint8)var36.x4[0];
6922     var40.x4[1] = (orc_uint8)var36.x4[1];
6923     var40.x4[2] = (orc_uint8)var36.x4[2];
6924     var40.x4[3] = (orc_uint8)var36.x4[3];
6925     /* 4: mullw */
6926     var41.x4[0] = (var39.x4[0] * var40.x4[0]) & 0xffff;
6927     var41.x4[1] = (var39.x4[1] * var40.x4[1]) & 0xffff;
6928     var41.x4[2] = (var39.x4[2] * var40.x4[2]) & 0xffff;
6929     var41.x4[3] = (var39.x4[3] * var40.x4[3]) & 0xffff;
6930     /* 5: div255w */
6931     var42.x4[0] = ((uint16_t)(((orc_uint16)(var41.x4[0]+128)) + (((orc_uint16)(var41.x4[0]+128))>>8)))>>8;
6932     var42.x4[1] = ((uint16_t)(((orc_uint16)(var41.x4[1]+128)) + (((orc_uint16)(var41.x4[1]+128))>>8)))>>8;
6933     var42.x4[2] = ((uint16_t)(((orc_uint16)(var41.x4[2]+128)) + (((orc_uint16)(var41.x4[2]+128))>>8)))>>8;
6934     var42.x4[3] = ((uint16_t)(((orc_uint16)(var41.x4[3]+128)) + (((orc_uint16)(var41.x4[3]+128))>>8)))>>8;
6935     /* 6: convwb */
6936     var43.x4[0] = var42.x4[0];
6937     var43.x4[1] = var42.x4[1];
6938     var43.x4[2] = var42.x4[2];
6939     var43.x4[3] = var42.x4[3];
6940     /* 7: loadl */
6941     var37 = ptr0[i];
6942     /* 8: addusb */
6943     var38.x4[0] = ORC_CLAMP_UB((orc_uint8)var37.x4[0] + (orc_uint8)var43.x4[0]);
6944     var38.x4[1] = ORC_CLAMP_UB((orc_uint8)var37.x4[1] + (orc_uint8)var43.x4[1]);
6945     var38.x4[2] = ORC_CLAMP_UB((orc_uint8)var37.x4[2] + (orc_uint8)var43.x4[2]);
6946     var38.x4[3] = ORC_CLAMP_UB((orc_uint8)var37.x4[3] + (orc_uint8)var43.x4[3]);
6947     /* 9: storel */
6948     ptr0[i] = var38;
6949   }
6950
6951 }
6952
6953 /* orc_code_combine_add_ca_n */
6954 static void
6955 _backup_orc_code_combine_add_ca_n (OrcExecutor * ORC_RESTRICT ex)
6956 {
6957   int i;
6958   int n = ex->n;
6959   orc_union32 * ORC_RESTRICT ptr0;
6960   const orc_union32 * ORC_RESTRICT ptr4;
6961   orc_union32 var32;
6962   orc_union32 var33;
6963   orc_union32 var34;
6964
6965   ptr0 = (orc_union32 *)ex->arrays[0];
6966   ptr4 = (orc_union32 *)ex->arrays[4];
6967
6968
6969   for (i = 0; i < n; i++) {
6970     /* 0: loadl */
6971     var32 = ptr0[i];
6972     /* 1: loadl */
6973     var33 = ptr4[i];
6974     /* 2: addusb */
6975     var34.x4[0] = ORC_CLAMP_UB((orc_uint8)var32.x4[0] + (orc_uint8)var33.x4[0]);
6976     var34.x4[1] = ORC_CLAMP_UB((orc_uint8)var32.x4[1] + (orc_uint8)var33.x4[1]);
6977     var34.x4[2] = ORC_CLAMP_UB((orc_uint8)var32.x4[2] + (orc_uint8)var33.x4[2]);
6978     var34.x4[3] = ORC_CLAMP_UB((orc_uint8)var32.x4[3] + (orc_uint8)var33.x4[3]);
6979     /* 3: storel */
6980     ptr0[i] = var34;
6981   }
6982
6983 }
6984
6985 /* orc_code_combine_over_ca */
6986 static void
6987 _backup_orc_code_combine_over_ca (OrcExecutor * ORC_RESTRICT ex)
6988 {
6989   int i;
6990   int n = ex->n;
6991   orc_union32 * ORC_RESTRICT ptr0;
6992   const orc_union32 * ORC_RESTRICT ptr4;
6993   const orc_union32 * ORC_RESTRICT ptr5;
6994   orc_union32 var40;
6995   orc_union32 var41;
6996   orc_union64 var42;
6997   orc_union32 var43;
6998   orc_union64 var44;
6999   orc_union64 var45;
7000   orc_union64 var46;
7001   orc_union64 var47;
7002   orc_union64 var48;
7003   orc_union32 var49;
7004   orc_union64 var50;
7005   orc_union64 var51;
7006   orc_union32 var52;
7007   orc_union64 var53;
7008   orc_union64 var54;
7009   orc_union64 var55;
7010   orc_union64 var56;
7011   orc_union32 var57;
7012
7013   ptr0 = (orc_union32 *)ex->arrays[0];
7014   ptr4 = (orc_union32 *)ex->arrays[4];
7015   ptr5 = (orc_union32 *)ex->arrays[5];
7016
7017     /* 12: loadpw */
7018     var42.x4[0] = 0x000000ff; /* 255 or 1.25987e-321f */
7019     var42.x4[1] = 0x000000ff; /* 255 or 1.25987e-321f */
7020     var42.x4[2] = 0x000000ff; /* 255 or 1.25987e-321f */
7021     var42.x4[3] = 0x000000ff; /* 255 or 1.25987e-321f */
7022
7023   for (i = 0; i < n; i++) {
7024     /* 0: loadl */
7025     var40 = ptr4[i];
7026     /* 1: convubw */
7027     var44.x4[0] = (orc_uint8)var40.x4[0];
7028     var44.x4[1] = (orc_uint8)var40.x4[1];
7029     var44.x4[2] = (orc_uint8)var40.x4[2];
7030     var44.x4[3] = (orc_uint8)var40.x4[3];
7031     /* 2: loadl */
7032     var41 = ptr5[i];
7033     /* 3: convubw */
7034     var45.x4[0] = (orc_uint8)var41.x4[0];
7035     var45.x4[1] = (orc_uint8)var41.x4[1];
7036     var45.x4[2] = (orc_uint8)var41.x4[2];
7037     var45.x4[3] = (orc_uint8)var41.x4[3];
7038     /* 4: splatw3q */
7039     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));
7040     /* 5: mullw */
7041     var47.x4[0] = (var44.x4[0] * var45.x4[0]) & 0xffff;
7042     var47.x4[1] = (var44.x4[1] * var45.x4[1]) & 0xffff;
7043     var47.x4[2] = (var44.x4[2] * var45.x4[2]) & 0xffff;
7044     var47.x4[3] = (var44.x4[3] * var45.x4[3]) & 0xffff;
7045     /* 6: div255w */
7046     var48.x4[0] = ((uint16_t)(((orc_uint16)(var47.x4[0]+128)) + (((orc_uint16)(var47.x4[0]+128))>>8)))>>8;
7047     var48.x4[1] = ((uint16_t)(((orc_uint16)(var47.x4[1]+128)) + (((orc_uint16)(var47.x4[1]+128))>>8)))>>8;
7048     var48.x4[2] = ((uint16_t)(((orc_uint16)(var47.x4[2]+128)) + (((orc_uint16)(var47.x4[2]+128))>>8)))>>8;
7049     var48.x4[3] = ((uint16_t)(((orc_uint16)(var47.x4[3]+128)) + (((orc_uint16)(var47.x4[3]+128))>>8)))>>8;
7050     /* 7: convwb */
7051     var49.x4[0] = var48.x4[0];
7052     var49.x4[1] = var48.x4[1];
7053     var49.x4[2] = var48.x4[2];
7054     var49.x4[3] = var48.x4[3];
7055     /* 8: mullw */
7056     var50.x4[0] = (var45.x4[0] * var46.x4[0]) & 0xffff;
7057     var50.x4[1] = (var45.x4[1] * var46.x4[1]) & 0xffff;
7058     var50.x4[2] = (var45.x4[2] * var46.x4[2]) & 0xffff;
7059     var50.x4[3] = (var45.x4[3] * var46.x4[3]) & 0xffff;
7060     /* 9: div255w */
7061     var51.x4[0] = ((uint16_t)(((orc_uint16)(var50.x4[0]+128)) + (((orc_uint16)(var50.x4[0]+128))>>8)))>>8;
7062     var51.x4[1] = ((uint16_t)(((orc_uint16)(var50.x4[1]+128)) + (((orc_uint16)(var50.x4[1]+128))>>8)))>>8;
7063     var51.x4[2] = ((uint16_t)(((orc_uint16)(var50.x4[2]+128)) + (((orc_uint16)(var50.x4[2]+128))>>8)))>>8;
7064     var51.x4[3] = ((uint16_t)(((orc_uint16)(var50.x4[3]+128)) + (((orc_uint16)(var50.x4[3]+128))>>8)))>>8;
7065     /* 10: loadl */
7066     var52 = ptr0[i];
7067     /* 11: convubw */
7068     var53.x4[0] = (orc_uint8)var52.x4[0];
7069     var53.x4[1] = (orc_uint8)var52.x4[1];
7070     var53.x4[2] = (orc_uint8)var52.x4[2];
7071     var53.x4[3] = (orc_uint8)var52.x4[3];
7072     /* 13: xorw */
7073     var54.x4[0] = var51.x4[0] ^ var42.x4[0];
7074     var54.x4[1] = var51.x4[1] ^ var42.x4[1];
7075     var54.x4[2] = var51.x4[2] ^ var42.x4[2];
7076     var54.x4[3] = var51.x4[3] ^ var42.x4[3];
7077     /* 14: mullw */
7078     var55.x4[0] = (var53.x4[0] * var54.x4[0]) & 0xffff;
7079     var55.x4[1] = (var53.x4[1] * var54.x4[1]) & 0xffff;
7080     var55.x4[2] = (var53.x4[2] * var54.x4[2]) & 0xffff;
7081     var55.x4[3] = (var53.x4[3] * var54.x4[3]) & 0xffff;
7082     /* 15: div255w */
7083     var56.x4[0] = ((uint16_t)(((orc_uint16)(var55.x4[0]+128)) + (((orc_uint16)(var55.x4[0]+128))>>8)))>>8;
7084     var56.x4[1] = ((uint16_t)(((orc_uint16)(var55.x4[1]+128)) + (((orc_uint16)(var55.x4[1]+128))>>8)))>>8;
7085     var56.x4[2] = ((uint16_t)(((orc_uint16)(var55.x4[2]+128)) + (((orc_uint16)(var55.x4[2]+128))>>8)))>>8;
7086     var56.x4[3] = ((uint16_t)(((orc_uint16)(var55.x4[3]+128)) + (((orc_uint16)(var55.x4[3]+128))>>8)))>>8;
7087     /* 16: convwb */
7088     var57.x4[0] = var56.x4[0];
7089     var57.x4[1] = var56.x4[1];
7090     var57.x4[2] = var56.x4[2];
7091     var57.x4[3] = var56.x4[3];
7092     /* 17: addusb */
7093     var43.x4[0] = ORC_CLAMP_UB((orc_uint8)var57.x4[0] + (orc_uint8)var49.x4[0]);
7094     var43.x4[1] = ORC_CLAMP_UB((orc_uint8)var57.x4[1] + (orc_uint8)var49.x4[1]);
7095     var43.x4[2] = ORC_CLAMP_UB((orc_uint8)var57.x4[2] + (orc_uint8)var49.x4[2]);
7096     var43.x4[3] = ORC_CLAMP_UB((orc_uint8)var57.x4[3] + (orc_uint8)var49.x4[3]);
7097     /* 18: storel */
7098     ptr0[i] = var43;
7099   }
7100
7101 }
7102
7103 /* orc_code_combine_over_ca_n */
7104 static void
7105 _backup_orc_code_combine_over_ca_n (OrcExecutor * ORC_RESTRICT ex)
7106 {
7107   int i;
7108   int n = ex->n;
7109   orc_union32 * ORC_RESTRICT ptr0;
7110   const orc_union32 * ORC_RESTRICT ptr4;
7111   orc_union32 var40;
7112   orc_union64 var41;
7113   orc_union32 var42;
7114   orc_union64 var43;
7115   orc_union64 var44;
7116   orc_union32 var45;
7117   orc_union64 var46;
7118   orc_union32 var47;
7119   orc_union64 var48;
7120   orc_union64 var49;
7121   orc_union64 var50;
7122   orc_union64 var51;
7123   orc_union32 var52;
7124
7125   ptr0 = (orc_union32 *)ex->arrays[0];
7126   ptr4 = (orc_union32 *)ex->arrays[4];
7127
7128     /* 7: loadpw */
7129     var41.x4[0] = 0x000000ff; /* 255 or 1.25987e-321f */
7130     var41.x4[1] = 0x000000ff; /* 255 or 1.25987e-321f */
7131     var41.x4[2] = 0x000000ff; /* 255 or 1.25987e-321f */
7132     var41.x4[3] = 0x000000ff; /* 255 or 1.25987e-321f */
7133
7134   for (i = 0; i < n; i++) {
7135     /* 0: loadl */
7136     var40 = ptr4[i];
7137     /* 1: convubw */
7138     var43.x4[0] = (orc_uint8)var40.x4[0];
7139     var43.x4[1] = (orc_uint8)var40.x4[1];
7140     var43.x4[2] = (orc_uint8)var40.x4[2];
7141     var43.x4[3] = (orc_uint8)var40.x4[3];
7142     /* 2: splatw3q */
7143     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));
7144     /* 3: convwb */
7145     var45.x4[0] = var43.x4[0];
7146     var45.x4[1] = var43.x4[1];
7147     var45.x4[2] = var43.x4[2];
7148     var45.x4[3] = var43.x4[3];
7149     /* 4: copyw */
7150     var46.x4[0] = var44.x4[0];
7151     var46.x4[1] = var44.x4[1];
7152     var46.x4[2] = var44.x4[2];
7153     var46.x4[3] = var44.x4[3];
7154     /* 5: loadl */
7155     var47 = ptr0[i];
7156     /* 6: convubw */
7157     var48.x4[0] = (orc_uint8)var47.x4[0];
7158     var48.x4[1] = (orc_uint8)var47.x4[1];
7159     var48.x4[2] = (orc_uint8)var47.x4[2];
7160     var48.x4[3] = (orc_uint8)var47.x4[3];
7161     /* 8: xorw */
7162     var49.x4[0] = var46.x4[0] ^ var41.x4[0];
7163     var49.x4[1] = var46.x4[1] ^ var41.x4[1];
7164     var49.x4[2] = var46.x4[2] ^ var41.x4[2];
7165     var49.x4[3] = var46.x4[3] ^ var41.x4[3];
7166     /* 9: mullw */
7167     var50.x4[0] = (var48.x4[0] * var49.x4[0]) & 0xffff;
7168     var50.x4[1] = (var48.x4[1] * var49.x4[1]) & 0xffff;
7169     var50.x4[2] = (var48.x4[2] * var49.x4[2]) & 0xffff;
7170     var50.x4[3] = (var48.x4[3] * var49.x4[3]) & 0xffff;
7171     /* 10: div255w */
7172     var51.x4[0] = ((uint16_t)(((orc_uint16)(var50.x4[0]+128)) + (((orc_uint16)(var50.x4[0]+128))>>8)))>>8;
7173     var51.x4[1] = ((uint16_t)(((orc_uint16)(var50.x4[1]+128)) + (((orc_uint16)(var50.x4[1]+128))>>8)))>>8;
7174     var51.x4[2] = ((uint16_t)(((orc_uint16)(var50.x4[2]+128)) + (((orc_uint16)(var50.x4[2]+128))>>8)))>>8;
7175     var51.x4[3] = ((uint16_t)(((orc_uint16)(var50.x4[3]+128)) + (((orc_uint16)(var50.x4[3]+128))>>8)))>>8;
7176     /* 11: convwb */
7177     var52.x4[0] = var51.x4[0];
7178     var52.x4[1] = var51.x4[1];
7179     var52.x4[2] = var51.x4[2];
7180     var52.x4[3] = var51.x4[3];
7181     /* 12: addusb */
7182     var42.x4[0] = ORC_CLAMP_UB((orc_uint8)var52.x4[0] + (orc_uint8)var45.x4[0]);
7183     var42.x4[1] = ORC_CLAMP_UB((orc_uint8)var52.x4[1] + (orc_uint8)var45.x4[1]);
7184     var42.x4[2] = ORC_CLAMP_UB((orc_uint8)var52.x4[2] + (orc_uint8)var45.x4[2]);
7185     var42.x4[3] = ORC_CLAMP_UB((orc_uint8)var52.x4[3] + (orc_uint8)var45.x4[3]);
7186     /* 13: storel */
7187     ptr0[i] = var42;
7188   }
7189
7190 }
7191
7192 /* orc_composite_over_8888_8_8888_line */
7193 static void
7194 _backup_orc_composite_over_8888_8_8888_line (OrcExecutor * ORC_RESTRICT ex)
7195 {
7196   int i;
7197   int n = ex->n;
7198   orc_union32 * ORC_RESTRICT ptr0;
7199   const orc_union32 * ORC_RESTRICT ptr4;
7200   const orc_int8 * ORC_RESTRICT ptr5;
7201   orc_union32 var38;
7202   orc_int8 var39;
7203   orc_union64 var40;
7204   orc_union32 var41;
7205   orc_union64 var42;
7206   orc_union32 var43;
7207   orc_union64 var44;
7208   orc_union64 var45;
7209   orc_union64 var46;
7210   orc_union32 var47;
7211   orc_union32 var48;
7212   orc_union64 var49;
7213   orc_union64 var50;
7214   orc_union64 var51;
7215   orc_union64 var52;
7216   orc_union64 var53;
7217   orc_union32 var54;
7218
7219   ptr0 = (orc_union32 *)ex->arrays[0];
7220   ptr4 = (orc_union32 *)ex->arrays[4];
7221   ptr5 = (orc_int8 *)ex->arrays[5];
7222
7223     /* 10: loadpw */
7224     var40.x4[0] = 0x000000ff; /* 255 or 1.25987e-321f */
7225     var40.x4[1] = 0x000000ff; /* 255 or 1.25987e-321f */
7226     var40.x4[2] = 0x000000ff; /* 255 or 1.25987e-321f */
7227     var40.x4[3] = 0x000000ff; /* 255 or 1.25987e-321f */
7228
7229   for (i = 0; i < n; i++) {
7230     /* 0: loadl */
7231     var38 = ptr4[i];
7232     /* 1: convubw */
7233     var42.x4[0] = (orc_uint8)var38.x4[0];
7234     var42.x4[1] = (orc_uint8)var38.x4[1];
7235     var42.x4[2] = (orc_uint8)var38.x4[2];
7236     var42.x4[3] = (orc_uint8)var38.x4[3];
7237     /* 2: loadb */
7238     var39 = ptr5[i];
7239     /* 3: splatbl */
7240     var43.i = ((var39&0xff) << 24) | ((var39&0xff)<<16) | ((var39&0xff) << 8) | (var39&0xff);
7241     /* 4: convubw */
7242     var44.x4[0] = (orc_uint8)var43.x4[0];
7243     var44.x4[1] = (orc_uint8)var43.x4[1];
7244     var44.x4[2] = (orc_uint8)var43.x4[2];
7245     var44.x4[3] = (orc_uint8)var43.x4[3];
7246     /* 5: mullw */
7247     var45.x4[0] = (var42.x4[0] * var44.x4[0]) & 0xffff;
7248     var45.x4[1] = (var42.x4[1] * var44.x4[1]) & 0xffff;
7249     var45.x4[2] = (var42.x4[2] * var44.x4[2]) & 0xffff;
7250     var45.x4[3] = (var42.x4[3] * var44.x4[3]) & 0xffff;
7251     /* 6: div255w */
7252     var46.x4[0] = ((uint16_t)(((orc_uint16)(var45.x4[0]+128)) + (((orc_uint16)(var45.x4[0]+128))>>8)))>>8;
7253     var46.x4[1] = ((uint16_t)(((orc_uint16)(var45.x4[1]+128)) + (((orc_uint16)(var45.x4[1]+128))>>8)))>>8;
7254     var46.x4[2] = ((uint16_t)(((orc_uint16)(var45.x4[2]+128)) + (((orc_uint16)(var45.x4[2]+128))>>8)))>>8;
7255     var46.x4[3] = ((uint16_t)(((orc_uint16)(var45.x4[3]+128)) + (((orc_uint16)(var45.x4[3]+128))>>8)))>>8;
7256     /* 7: convwb */
7257     var47.x4[0] = var46.x4[0];
7258     var47.x4[1] = var46.x4[1];
7259     var47.x4[2] = var46.x4[2];
7260     var47.x4[3] = var46.x4[3];
7261     /* 8: loadl */
7262     var48 = ptr0[i];
7263     /* 9: convubw */
7264     var49.x4[0] = (orc_uint8)var48.x4[0];
7265     var49.x4[1] = (orc_uint8)var48.x4[1];
7266     var49.x4[2] = (orc_uint8)var48.x4[2];
7267     var49.x4[3] = (orc_uint8)var48.x4[3];
7268     /* 11: xorw */
7269     var50.x4[0] = var46.x4[0] ^ var40.x4[0];
7270     var50.x4[1] = var46.x4[1] ^ var40.x4[1];
7271     var50.x4[2] = var46.x4[2] ^ var40.x4[2];
7272     var50.x4[3] = var46.x4[3] ^ var40.x4[3];
7273     /* 12: splatw3q */
7274     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));
7275     /* 13: mullw */
7276     var52.x4[0] = (var49.x4[0] * var51.x4[0]) & 0xffff;
7277     var52.x4[1] = (var49.x4[1] * var51.x4[1]) & 0xffff;
7278     var52.x4[2] = (var49.x4[2] * var51.x4[2]) & 0xffff;
7279     var52.x4[3] = (var49.x4[3] * var51.x4[3]) & 0xffff;
7280     /* 14: div255w */
7281     var53.x4[0] = ((uint16_t)(((orc_uint16)(var52.x4[0]+128)) + (((orc_uint16)(var52.x4[0]+128))>>8)))>>8;
7282     var53.x4[1] = ((uint16_t)(((orc_uint16)(var52.x4[1]+128)) + (((orc_uint16)(var52.x4[1]+128))>>8)))>>8;
7283     var53.x4[2] = ((uint16_t)(((orc_uint16)(var52.x4[2]+128)) + (((orc_uint16)(var52.x4[2]+128))>>8)))>>8;
7284     var53.x4[3] = ((uint16_t)(((orc_uint16)(var52.x4[3]+128)) + (((orc_uint16)(var52.x4[3]+128))>>8)))>>8;
7285     /* 15: convwb */
7286     var54.x4[0] = var53.x4[0];
7287     var54.x4[1] = var53.x4[1];
7288     var54.x4[2] = var53.x4[2];
7289     var54.x4[3] = var53.x4[3];
7290     /* 16: addusb */
7291     var41.x4[0] = ORC_CLAMP_UB((orc_uint8)var54.x4[0] + (orc_uint8)var47.x4[0]);
7292     var41.x4[1] = ORC_CLAMP_UB((orc_uint8)var54.x4[1] + (orc_uint8)var47.x4[1]);
7293     var41.x4[2] = ORC_CLAMP_UB((orc_uint8)var54.x4[2] + (orc_uint8)var47.x4[2]);
7294     var41.x4[3] = ORC_CLAMP_UB((orc_uint8)var54.x4[3] + (orc_uint8)var47.x4[3]);
7295     /* 17: storel */
7296     ptr0[i] = var41;
7297   }
7298
7299 }
7300
7301 /* orc_composite_over_n_8888_8888_ca_2d */
7302 static void
7303 _backup_orc_composite_over_n_8888_8888_ca_2d (OrcExecutor * ORC_RESTRICT ex)
7304 {
7305   int i;
7306   int n = ex->n;
7307   orc_union32 * ORC_RESTRICT ptr0;
7308   const orc_union32 * ORC_RESTRICT ptr4;
7309   orc_union32 var40;
7310   orc_union32 var41;
7311   orc_union64 var42;
7312   orc_union32 var43;
7313   orc_union64 var44;
7314   orc_union64 var45;
7315   orc_union64 var46;
7316   orc_union64 var47;
7317   orc_union64 var48;
7318   orc_union32 var49;
7319   orc_union64 var50;
7320   orc_union64 var51;
7321   orc_union32 var52;
7322   orc_union64 var53;
7323   orc_union64 var54;
7324   orc_union64 var55;
7325   orc_union64 var56;
7326   orc_union32 var57;
7327
7328   ptr0 = (orc_union32 *)ex->arrays[0];
7329   ptr4 = (orc_union32 *)ex->arrays[4];
7330
7331     /* 0: loadpb */
7332     var40.x4[0] = ex->params[24];
7333     var40.x4[1] = ex->params[24];
7334     var40.x4[2] = ex->params[24];
7335     var40.x4[3] = ex->params[24];
7336     /* 12: loadpw */
7337     var42.x4[0] = 0x000000ff; /* 255 or 1.25987e-321f */
7338     var42.x4[1] = 0x000000ff; /* 255 or 1.25987e-321f */
7339     var42.x4[2] = 0x000000ff; /* 255 or 1.25987e-321f */
7340     var42.x4[3] = 0x000000ff; /* 255 or 1.25987e-321f */
7341
7342   for (i = 0; i < n; i++) {
7343     /* 1: convubw */
7344     var44.x4[0] = (orc_uint8)var40.x4[0];
7345     var44.x4[1] = (orc_uint8)var40.x4[1];
7346     var44.x4[2] = (orc_uint8)var40.x4[2];
7347     var44.x4[3] = (orc_uint8)var40.x4[3];
7348     /* 2: loadl */
7349     var41 = ptr4[i];
7350     /* 3: convubw */
7351     var45.x4[0] = (orc_uint8)var41.x4[0];
7352     var45.x4[1] = (orc_uint8)var41.x4[1];
7353     var45.x4[2] = (orc_uint8)var41.x4[2];
7354     var45.x4[3] = (orc_uint8)var41.x4[3];
7355     /* 4: splatw3q */
7356     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));
7357     /* 5: mullw */
7358     var47.x4[0] = (var44.x4[0] * var45.x4[0]) & 0xffff;
7359     var47.x4[1] = (var44.x4[1] * var45.x4[1]) & 0xffff;
7360     var47.x4[2] = (var44.x4[2] * var45.x4[2]) & 0xffff;
7361     var47.x4[3] = (var44.x4[3] * var45.x4[3]) & 0xffff;
7362     /* 6: div255w */
7363     var48.x4[0] = ((uint16_t)(((orc_uint16)(var47.x4[0]+128)) + (((orc_uint16)(var47.x4[0]+128))>>8)))>>8;
7364     var48.x4[1] = ((uint16_t)(((orc_uint16)(var47.x4[1]+128)) + (((orc_uint16)(var47.x4[1]+128))>>8)))>>8;
7365     var48.x4[2] = ((uint16_t)(((orc_uint16)(var47.x4[2]+128)) + (((orc_uint16)(var47.x4[2]+128))>>8)))>>8;
7366     var48.x4[3] = ((uint16_t)(((orc_uint16)(var47.x4[3]+128)) + (((orc_uint16)(var47.x4[3]+128))>>8)))>>8;
7367     /* 7: convwb */
7368     var49.x4[0] = var48.x4[0];
7369     var49.x4[1] = var48.x4[1];
7370     var49.x4[2] = var48.x4[2];
7371     var49.x4[3] = var48.x4[3];
7372     /* 8: mullw */
7373     var50.x4[0] = (var45.x4[0] * var46.x4[0]) & 0xffff;
7374     var50.x4[1] = (var45.x4[1] * var46.x4[1]) & 0xffff;
7375     var50.x4[2] = (var45.x4[2] * var46.x4[2]) & 0xffff;
7376     var50.x4[3] = (var45.x4[3] * var46.x4[3]) & 0xffff;
7377     /* 9: div255w */
7378     var51.x4[0] = ((uint16_t)(((orc_uint16)(var50.x4[0]+128)) + (((orc_uint16)(var50.x4[0]+128))>>8)))>>8;
7379     var51.x4[1] = ((uint16_t)(((orc_uint16)(var50.x4[1]+128)) + (((orc_uint16)(var50.x4[1]+128))>>8)))>>8;
7380     var51.x4[2] = ((uint16_t)(((orc_uint16)(var50.x4[2]+128)) + (((orc_uint16)(var50.x4[2]+128))>>8)))>>8;
7381     var51.x4[3] = ((uint16_t)(((orc_uint16)(var50.x4[3]+128)) + (((orc_uint16)(var50.x4[3]+128))>>8)))>>8;
7382     /* 10: loadl */
7383     var52 = ptr0[i];
7384     /* 11: convubw */
7385     var53.x4[0] = (orc_uint8)var52.x4[0];
7386     var53.x4[1] = (orc_uint8)var52.x4[1];
7387     var53.x4[2] = (orc_uint8)var52.x4[2];
7388     var53.x4[3] = (orc_uint8)var52.x4[3];
7389     /* 13: xorw */
7390     var54.x4[0] = var51.x4[0] ^ var42.x4[0];
7391     var54.x4[1] = var51.x4[1] ^ var42.x4[1];
7392     var54.x4[2] = var51.x4[2] ^ var42.x4[2];
7393     var54.x4[3] = var51.x4[3] ^ var42.x4[3];
7394     /* 14: mullw */
7395     var55.x4[0] = (var53.x4[0] * var54.x4[0]) & 0xffff;
7396     var55.x4[1] = (var53.x4[1] * var54.x4[1]) & 0xffff;
7397     var55.x4[2] = (var53.x4[2] * var54.x4[2]) & 0xffff;
7398     var55.x4[3] = (var53.x4[3] * var54.x4[3]) & 0xffff;
7399     /* 15: div255w */
7400     var56.x4[0] = ((uint16_t)(((orc_uint16)(var55.x4[0]+128)) + (((orc_uint16)(var55.x4[0]+128))>>8)))>>8;
7401     var56.x4[1] = ((uint16_t)(((orc_uint16)(var55.x4[1]+128)) + (((orc_uint16)(var55.x4[1]+128))>>8)))>>8;
7402     var56.x4[2] = ((uint16_t)(((orc_uint16)(var55.x4[2]+128)) + (((orc_uint16)(var55.x4[2]+128))>>8)))>>8;
7403     var56.x4[3] = ((uint16_t)(((orc_uint16)(var55.x4[3]+128)) + (((orc_uint16)(var55.x4[3]+128))>>8)))>>8;
7404     /* 16: convwb */
7405     var57.x4[0] = var56.x4[0];
7406     var57.x4[1] = var56.x4[1];
7407     var57.x4[2] = var56.x4[2];
7408     var57.x4[3] = var56.x4[3];
7409     /* 17: addusb */
7410     var43.x4[0] = ORC_CLAMP_UB((orc_uint8)var57.x4[0] + (orc_uint8)var49.x4[0]);
7411     var43.x4[1] = ORC_CLAMP_UB((orc_uint8)var57.x4[1] + (orc_uint8)var49.x4[1]);
7412     var43.x4[2] = ORC_CLAMP_UB((orc_uint8)var57.x4[2] + (orc_uint8)var49.x4[2]);
7413     var43.x4[3] = ORC_CLAMP_UB((orc_uint8)var57.x4[3] + (orc_uint8)var49.x4[3]);
7414     /* 18: storel */
7415     ptr0[i] = var43;
7416   }
7417
7418 }
7419
7420 /* cogorc_resample_horiz_1tap */
7421 static void
7422 _backup_cogorc_resample_horiz_1tap (OrcExecutor * ORC_RESTRICT ex)
7423 {
7424   int i;
7425   int n = ex->n;
7426   orc_int8 * ORC_RESTRICT ptr0;
7427   const orc_int8 * ORC_RESTRICT ptr4;
7428   orc_int8 var32;
7429
7430   ptr0 = (orc_int8 *)ex->arrays[0];
7431   ptr4 = (orc_int8 *)ex->arrays[4];
7432
7433
7434   for (i = 0; i < n; i++) {
7435     /* 0: ldresnearb */
7436     var32 = ptr4[(ex->params[24] + i*ex->params[25])>>16];
7437     /* 1: storeb */
7438     ptr0[i] = var32;
7439   }
7440
7441 }
7442
7443 /* cogorc_resample_horiz_2tap */
7444 static void
7445 _backup_cogorc_resample_horiz_2tap (OrcExecutor * ORC_RESTRICT ex)
7446 {
7447   int i;
7448   int n = ex->n;
7449   orc_int8 * ORC_RESTRICT ptr0;
7450   const orc_int8 * ORC_RESTRICT ptr4;
7451   orc_int8 var32;
7452
7453   ptr0 = (orc_int8 *)ex->arrays[0];
7454   ptr4 = (orc_int8 *)ex->arrays[4];
7455
7456
7457   for (i = 0; i < n; i++) {
7458     /* 0: ldreslinb */
7459     {
7460     int tmp = ex->params[24] + i * ex->params[25];
7461     var32 = ((orc_uint8)ptr4[tmp>>16] * (256-((tmp>>8)&0xff)) + (orc_uint8)ptr4[(tmp>>16)+1] * ((tmp>>8)&0xff))>>8;
7462     }
7463     /* 1: storeb */
7464     ptr0[i] = var32;
7465   }
7466
7467 }
7468
7469 /* test_float_constant_1 */
7470 static void
7471 _backup_test_float_constant_1 (OrcExecutor * ORC_RESTRICT ex)
7472 {
7473   int i;
7474   int n = ex->n;
7475   orc_union32 * ORC_RESTRICT ptr0;
7476   orc_union32 var32;
7477   orc_union32 var33;
7478
7479   ptr0 = (orc_union32 *)ex->arrays[0];
7480
7481     /* 0: loadpl */
7482     var32.i = 0x40000000; /* 1073741824 or 5.30499e-315f */
7483
7484   for (i = 0; i < n; i++) {
7485     /* 1: copyl */
7486     var33.i = var32.i;
7487     /* 2: storel */
7488     ptr0[i] = var33;
7489   }
7490
7491 }
7492
7493 /* test_float_constant_2 */
7494 static void
7495 _backup_test_float_constant_2 (OrcExecutor * ORC_RESTRICT ex)
7496 {
7497   int i;
7498   int n = ex->n;
7499   orc_union32 * ORC_RESTRICT ptr0;
7500   orc_union32 var32;
7501   orc_union32 var33;
7502
7503   ptr0 = (orc_union32 *)ex->arrays[0];
7504
7505     /* 0: loadpl */
7506     var32.i = 0x40000000; /* 1073741824 or 5.30499e-315f */
7507
7508   for (i = 0; i < n; i++) {
7509     /* 1: copyl */
7510     var33.i = var32.i;
7511     /* 2: storel */
7512     ptr0[i] = var33;
7513   }
7514
7515 }
7516
7517 /* convert_fc32_to_int32 */
7518 static void
7519 _backup_convert_fc32_to_int32 (OrcExecutor * ORC_RESTRICT ex)
7520 {
7521   int i;
7522   int n = ex->n;
7523   orc_union32 * ORC_RESTRICT ptr0;
7524   const orc_union64 * ORC_RESTRICT ptr4;
7525   orc_union64 var34;
7526   orc_union64 var35;
7527   orc_union32 var36;
7528   orc_union64 var37;
7529   orc_union64 var38;
7530
7531   ptr0 = (orc_union32 *)ex->arrays[0];
7532   ptr4 = (orc_union64 *)ex->arrays[4];
7533
7534     /* 1: loadpl */
7535     var35.x2[0] = 0x46fffe00; /* 1191181824 or 5.88522e-315f */
7536     var35.x2[1] = 0x46fffe00; /* 1191181824 or 5.88522e-315f */
7537
7538   for (i = 0; i < n; i++) {
7539     /* 0: loadq */
7540     var34 = ptr4[i];
7541     /* 2: mulf */
7542     {
7543        orc_union32 _src1;
7544        orc_union32 _src2;
7545        orc_union32 _dest1;
7546        _src1.i = ORC_DENORMAL(var34.x2[0]);
7547        _src2.i = ORC_DENORMAL(var35.x2[0]);
7548        _dest1.f = _src1.f * _src2.f;
7549        var37.x2[0] = ORC_DENORMAL(_dest1.i);
7550     }
7551     {
7552        orc_union32 _src1;
7553        orc_union32 _src2;
7554        orc_union32 _dest1;
7555        _src1.i = ORC_DENORMAL(var34.x2[1]);
7556        _src2.i = ORC_DENORMAL(var35.x2[1]);
7557        _dest1.f = _src1.f * _src2.f;
7558        var37.x2[1] = ORC_DENORMAL(_dest1.i);
7559     }
7560     /* 3: convfl */
7561     {
7562        int tmp;
7563        tmp = (int)var37.x2f[0];
7564        if (tmp == 0x80000000 && !(var37.x2[0]&0x80000000)) tmp = 0x7fffffff;
7565        var38.x2[0] = tmp;
7566     }
7567     {
7568        int tmp;
7569        tmp = (int)var37.x2f[1];
7570        if (tmp == 0x80000000 && !(var37.x2[1]&0x80000000)) tmp = 0x7fffffff;
7571        var38.x2[1] = tmp;
7572     }
7573     /* 4: convlw */
7574     var36.x2[0] = var38.x2[0];
7575     var36.x2[1] = var38.x2[1];
7576     /* 5: storel */
7577     ptr0[i] = var36;
7578   }
7579
7580 }
7581
7582 /* param64 */
7583 static void
7584 _backup_param64 (OrcExecutor * ORC_RESTRICT ex)
7585 {
7586   int i;
7587   int n = ex->n;
7588   orc_union64 * ORC_RESTRICT ptr0;
7589   orc_union64 var32;
7590   orc_union64 var33;
7591
7592   ptr0 = (orc_union64 *)ex->arrays[0];
7593
7594     /* 0: loadpq */
7595     var32.i = (ex->params[24] & 0xffffffff) | ((orc_uint64)(ex->params[24 + (ORC_VAR_T1 - ORC_VAR_P1)]) << 32);
7596
7597   for (i = 0; i < n; i++) {
7598     /* 1: copyq */
7599     var33.i = var32.i;
7600     /* 2: storeq */
7601     ptr0[i] = var33;
7602   }
7603
7604 }
7605
7606 /* const64 */
7607 static void
7608 _backup_const64 (OrcExecutor * ORC_RESTRICT ex)
7609 {
7610   int i;
7611   int n = ex->n;
7612   orc_union64 * ORC_RESTRICT ptr0;
7613   orc_union64 var32;
7614   orc_union64 var33;
7615
7616   ptr0 = (orc_union64 *)ex->arrays[0];
7617
7618     /* 0: loadpq */
7619     var32.i = ORC_UINT64_C(0x0123456789abcdef); /* 3.5127e-303f */
7620
7621   for (i = 0; i < n; i++) {
7622     /* 1: copyq */
7623     var33.i = var32.i;
7624     /* 2: storeq */
7625     ptr0[i] = var33;
7626   }
7627
7628 }
7629
7630 /* param64_2 */
7631 static void
7632 _backup_param64_2 (OrcExecutor * ORC_RESTRICT ex)
7633 {
7634   int i;
7635   int n = ex->n;
7636   orc_union64 * ORC_RESTRICT ptr0;
7637   orc_union64 var33;
7638   orc_union64 var34;
7639
7640   ptr0 = (orc_union64 *)ex->arrays[0];
7641
7642     /* 0: loadpq */
7643     var34.i = (ex->params[24] & 0xffffffff) | ((orc_uint64)(ex->params[24 + (ORC_VAR_T1 - ORC_VAR_P1)]) << 32);
7644
7645   for (i = 0; i < n; i++) {
7646     /* 1: copyq */
7647     var33.i = var34.i;
7648     /* 2: storeq */
7649     ptr0[i] = var33;
7650   }
7651
7652 }
7653
7654 /* pa_volume_s16ne_orc_2ch */
7655 static void
7656 _backup_pa_volume_s16ne_orc_2ch (OrcExecutor * ORC_RESTRICT ex)
7657 {
7658   int i;
7659   int n = ex->n;
7660   orc_union32 * ORC_RESTRICT ptr0;
7661   orc_union32 var37;
7662   orc_union32 var38;
7663   orc_union64 var39;
7664   orc_union32 var40;
7665   orc_union64 var41;
7666   orc_union64 var42;
7667   orc_union64 var43;
7668   orc_union64 var44;
7669   orc_union64 var45;
7670   orc_union64 var46;
7671   orc_union64 var47;
7672   orc_union64 var48;
7673   orc_union64 var49;
7674   orc_union64 var50;
7675
7676   ptr0 = (orc_union32 *)ex->arrays[0];
7677
7678     /* 0: loadpq */
7679     var41.i = (ex->params[24] & 0xffffffff) | ((orc_uint64)(ex->params[24 + (ORC_VAR_T1 - ORC_VAR_P1)]) << 32);
7680     /* 5: loadpw */
7681     var39.x4[0] = 0x00000000; /* 0 or 0f */
7682     var39.x4[1] = 0x00000000; /* 0 or 0f */
7683     var39.x4[2] = 0x00000000; /* 0 or 0f */
7684     var39.x4[3] = 0x00000000; /* 0 or 0f */
7685
7686   for (i = 0; i < n; i++) {
7687     /* 1: loadl */
7688     var37 = ptr0[i];
7689     /* 2: convuwl */
7690     var42.x2[0] = (orc_uint16)var37.x2[0];
7691     var42.x2[1] = (orc_uint16)var37.x2[1];
7692     /* 3: loadl */
7693     var38 = ptr0[i];
7694     /* 4: convswl */
7695     var43.x2[0] = var38.x2[0];
7696     var43.x2[1] = var38.x2[1];
7697     /* 6: cmpgtsw */
7698     var44.x4[0] = (var39.x4[0] > var42.x4[0]) ? (~0) : 0;
7699     var44.x4[1] = (var39.x4[1] > var42.x4[1]) ? (~0) : 0;
7700     var44.x4[2] = (var39.x4[2] > var42.x4[2]) ? (~0) : 0;
7701     var44.x4[3] = (var39.x4[3] > var42.x4[3]) ? (~0) : 0;
7702     /* 7: andw */
7703     var45.x4[0] = var44.x4[0] & var41.x4[0];
7704     var45.x4[1] = var44.x4[1] & var41.x4[1];
7705     var45.x4[2] = var44.x4[2] & var41.x4[2];
7706     var45.x4[3] = var44.x4[3] & var41.x4[3];
7707     /* 8: mulhuw */
7708     var46.x4[0] = ((orc_uint32)((orc_uint16)var42.x4[0]) * (orc_uint32)((orc_uint16)var41.x4[0])) >> 16;
7709     var46.x4[1] = ((orc_uint32)((orc_uint16)var42.x4[1]) * (orc_uint32)((orc_uint16)var41.x4[1])) >> 16;
7710     var46.x4[2] = ((orc_uint32)((orc_uint16)var42.x4[2]) * (orc_uint32)((orc_uint16)var41.x4[2])) >> 16;
7711     var46.x4[3] = ((orc_uint32)((orc_uint16)var42.x4[3]) * (orc_uint32)((orc_uint16)var41.x4[3])) >> 16;
7712     /* 9: subl */
7713     var47.x2[0] = var46.x2[0] - var45.x2[0];
7714     var47.x2[1] = var46.x2[1] - var45.x2[1];
7715     /* 10: shrul */
7716     var48.x2[0] = ((orc_uint32)var41.x2[0]) >> 16;
7717     var48.x2[1] = ((orc_uint32)var41.x2[1]) >> 16;
7718     /* 11: mulll */
7719     var49.x2[0] = (var43.x2[0] * var48.x2[0]) & 0xffffffff;
7720     var49.x2[1] = (var43.x2[1] * var48.x2[1]) & 0xffffffff;
7721     /* 12: addl */
7722     var50.x2[0] = var47.x2[0] + var49.x2[0];
7723     var50.x2[1] = var47.x2[1] + var49.x2[1];
7724     /* 13: convssslw */
7725     var40.x2[0] = ORC_CLAMP_SW(var50.x2[0]);
7726     var40.x2[1] = ORC_CLAMP_SW(var50.x2[1]);
7727     /* 14: storel */
7728     ptr0[i] = var40;
7729   }
7730
7731 }
7732
7733
7734 static int quiet = 0;
7735 static int benchmark = 0;
7736
7737 static void help (const char *argv0)
7738 {
7739   printf("Usage:\n");
7740   printf("  %s [OPTION]\n", argv0);
7741   printf("Help Options:\n");
7742   printf("  -h, --help          Show help options\n");
7743   printf("Application Options:\n");
7744   printf("  -b, --benchmark     Run benchmark and show results\n");
7745   printf("  -q, --quiet         Don't output anything except on failures\n");
7746
7747   exit(0);
7748 }
7749
7750 int
7751 main (int argc, char *argv[])
7752 {
7753   int error = FALSE;
7754   int i;
7755
7756   orc_test_init ();
7757
7758   for(i=1;i<argc;i++) {
7759     if (strcmp(argv[i], "--help") == 0 ||
7760       strcmp(argv[i], "-h") == 0) {
7761       help(argv[0]);
7762     } else if (strcmp(argv[i], "--quiet") == 0 ||
7763       strcmp(argv[i], "-q") == 0) {
7764       quiet = 1;
7765       benchmark = 0;
7766     } else if (strcmp(argv[i], "--benchmark") == 0 ||
7767       strcmp(argv[i], "-b") == 0) {
7768       benchmark = 1;
7769       quiet = 0;
7770     }
7771   }
7772
7773   /* orc_add2_rshift_add_s16_22_op */
7774   {
7775     OrcProgram *p = NULL;
7776     int ret;
7777
7778     if (!quiet)      printf ("orc_add2_rshift_add_s16_22_op:\n");
7779     p = orc_program_new ();
7780     orc_program_set_name (p, "orc_add2_rshift_add_s16_22_op");
7781     orc_program_set_backup_function (p, _backup_orc_add2_rshift_add_s16_22_op);
7782     orc_program_add_destination (p, 2, "d1");
7783     orc_program_add_source (p, 2, "s1");
7784     orc_program_add_source (p, 2, "s2");
7785     orc_program_add_source (p, 2, "s3");
7786       orc_program_add_constant (p, 4, 0x00000002, "c1");
7787     orc_program_add_temporary (p, 2, "t1");
7788
7789       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S3, ORC_VAR_D1);
7790       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
7791       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
7792       orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_T1, ORC_VAR_D1);
7793
7794     if (benchmark) {
7795       printf ("    cycles (emulate) :   %g\n",
7796           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
7797     }
7798
7799     ret = orc_test_compare_output_backup (p);
7800     if (!ret) {
7801       error = TRUE;
7802     } else if (!quiet) {
7803       printf ("    backup function  :   PASSED\n");
7804     }
7805
7806     if (benchmark) {
7807       printf ("    cycles (backup)  :   %g\n",
7808           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
7809     }
7810
7811     ret = orc_test_compare_output (p);
7812     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
7813       printf ("    compiled function:   COMPILE FAILED\n");
7814     } else if (!ret) {
7815       error = TRUE;
7816     } else if (!quiet) {
7817       printf ("    compiled function:   PASSED\n");
7818     }
7819
7820     if (benchmark) {
7821       printf ("    cycles (compiled):   %g\n",
7822           orc_test_performance_full (p, 0, NULL));
7823     }
7824
7825     orc_program_free (p);
7826   }
7827
7828   /* orc_add2_rshift_add_s16_22 */
7829   {
7830     OrcProgram *p = NULL;
7831     int ret;
7832
7833     if (!quiet)      printf ("orc_add2_rshift_add_s16_22:\n");
7834     p = orc_program_new ();
7835     orc_program_set_name (p, "orc_add2_rshift_add_s16_22");
7836     orc_program_set_backup_function (p, _backup_orc_add2_rshift_add_s16_22);
7837     orc_program_add_destination (p, 2, "d1");
7838     orc_program_add_source (p, 2, "s1");
7839     orc_program_add_source (p, 2, "s2");
7840       orc_program_add_constant (p, 4, 0x00000002, "c1");
7841     orc_program_add_temporary (p, 2, "t1");
7842
7843       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_S2, ORC_VAR_D1);
7844       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
7845       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
7846       orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1);
7847
7848     if (benchmark) {
7849       printf ("    cycles (emulate) :   %g\n",
7850           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
7851     }
7852
7853     ret = orc_test_compare_output_backup (p);
7854     if (!ret) {
7855       error = TRUE;
7856     } else if (!quiet) {
7857       printf ("    backup function  :   PASSED\n");
7858     }
7859
7860     if (benchmark) {
7861       printf ("    cycles (backup)  :   %g\n",
7862           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
7863     }
7864
7865     ret = orc_test_compare_output (p);
7866     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
7867       printf ("    compiled function:   COMPILE FAILED\n");
7868     } else if (!ret) {
7869       error = TRUE;
7870     } else if (!quiet) {
7871       printf ("    compiled function:   PASSED\n");
7872     }
7873
7874     if (benchmark) {
7875       printf ("    cycles (compiled):   %g\n",
7876           orc_test_performance_full (p, 0, NULL));
7877     }
7878
7879     orc_program_free (p);
7880   }
7881
7882   /* orc_add2_rshift_sub_s16_22_op */
7883   {
7884     OrcProgram *p = NULL;
7885     int ret;
7886
7887     if (!quiet)      printf ("orc_add2_rshift_sub_s16_22_op:\n");
7888     p = orc_program_new ();
7889     orc_program_set_name (p, "orc_add2_rshift_sub_s16_22_op");
7890     orc_program_set_backup_function (p, _backup_orc_add2_rshift_sub_s16_22_op);
7891     orc_program_add_destination (p, 2, "d1");
7892     orc_program_add_source (p, 2, "s1");
7893     orc_program_add_source (p, 2, "s2");
7894     orc_program_add_source (p, 2, "s3");
7895       orc_program_add_constant (p, 4, 0x00000002, "c1");
7896     orc_program_add_temporary (p, 2, "t1");
7897
7898       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S3, ORC_VAR_D1);
7899       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
7900       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
7901       orc_program_append_2 (p, "subw", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_T1, ORC_VAR_D1);
7902
7903     if (benchmark) {
7904       printf ("    cycles (emulate) :   %g\n",
7905           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
7906     }
7907
7908     ret = orc_test_compare_output_backup (p);
7909     if (!ret) {
7910       error = TRUE;
7911     } else if (!quiet) {
7912       printf ("    backup function  :   PASSED\n");
7913     }
7914
7915     if (benchmark) {
7916       printf ("    cycles (backup)  :   %g\n",
7917           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
7918     }
7919
7920     ret = orc_test_compare_output (p);
7921     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
7922       printf ("    compiled function:   COMPILE FAILED\n");
7923     } else if (!ret) {
7924       error = TRUE;
7925     } else if (!quiet) {
7926       printf ("    compiled function:   PASSED\n");
7927     }
7928
7929     if (benchmark) {
7930       printf ("    cycles (compiled):   %g\n",
7931           orc_test_performance_full (p, 0, NULL));
7932     }
7933
7934     orc_program_free (p);
7935   }
7936
7937   /* orc_add2_rshift_sub_s16_22 */
7938   {
7939     OrcProgram *p = NULL;
7940     int ret;
7941
7942     if (!quiet)      printf ("orc_add2_rshift_sub_s16_22:\n");
7943     p = orc_program_new ();
7944     orc_program_set_name (p, "orc_add2_rshift_sub_s16_22");
7945     orc_program_set_backup_function (p, _backup_orc_add2_rshift_sub_s16_22);
7946     orc_program_add_destination (p, 2, "d1");
7947     orc_program_add_source (p, 2, "s1");
7948     orc_program_add_source (p, 2, "s2");
7949       orc_program_add_constant (p, 4, 0x00000002, "c1");
7950     orc_program_add_temporary (p, 2, "t1");
7951
7952       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_S2, ORC_VAR_D1);
7953       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
7954       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
7955       orc_program_append_2 (p, "subw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1);
7956
7957     if (benchmark) {
7958       printf ("    cycles (emulate) :   %g\n",
7959           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
7960     }
7961
7962     ret = orc_test_compare_output_backup (p);
7963     if (!ret) {
7964       error = TRUE;
7965     } else if (!quiet) {
7966       printf ("    backup function  :   PASSED\n");
7967     }
7968
7969     if (benchmark) {
7970       printf ("    cycles (backup)  :   %g\n",
7971           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
7972     }
7973
7974     ret = orc_test_compare_output (p);
7975     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
7976       printf ("    compiled function:   COMPILE FAILED\n");
7977     } else if (!ret) {
7978       error = TRUE;
7979     } else if (!quiet) {
7980       printf ("    compiled function:   PASSED\n");
7981     }
7982
7983     if (benchmark) {
7984       printf ("    cycles (compiled):   %g\n",
7985           orc_test_performance_full (p, 0, NULL));
7986     }
7987
7988     orc_program_free (p);
7989   }
7990
7991   /* orc_add2_rshift_add_s16_11_op */
7992   {
7993     OrcProgram *p = NULL;
7994     int ret;
7995
7996     if (!quiet)      printf ("orc_add2_rshift_add_s16_11_op:\n");
7997     p = orc_program_new ();
7998     orc_program_set_name (p, "orc_add2_rshift_add_s16_11_op");
7999     orc_program_set_backup_function (p, _backup_orc_add2_rshift_add_s16_11_op);
8000     orc_program_add_destination (p, 2, "d1");
8001     orc_program_add_source (p, 2, "s1");
8002     orc_program_add_source (p, 2, "s2");
8003     orc_program_add_source (p, 2, "s3");
8004     orc_program_add_temporary (p, 2, "t1");
8005
8006       orc_program_append_2 (p, "avgsw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S3, ORC_VAR_D1);
8007       orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_T1, ORC_VAR_D1);
8008
8009     if (benchmark) {
8010       printf ("    cycles (emulate) :   %g\n",
8011           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
8012     }
8013
8014     ret = orc_test_compare_output_backup (p);
8015     if (!ret) {
8016       error = TRUE;
8017     } else if (!quiet) {
8018       printf ("    backup function  :   PASSED\n");
8019     }
8020
8021     if (benchmark) {
8022       printf ("    cycles (backup)  :   %g\n",
8023           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
8024     }
8025
8026     ret = orc_test_compare_output (p);
8027     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
8028       printf ("    compiled function:   COMPILE FAILED\n");
8029     } else if (!ret) {
8030       error = TRUE;
8031     } else if (!quiet) {
8032       printf ("    compiled function:   PASSED\n");
8033     }
8034
8035     if (benchmark) {
8036       printf ("    cycles (compiled):   %g\n",
8037           orc_test_performance_full (p, 0, NULL));
8038     }
8039
8040     orc_program_free (p);
8041   }
8042
8043   /* orc_add2_rshift_add_s16_11 */
8044   {
8045     OrcProgram *p = NULL;
8046     int ret;
8047
8048     if (!quiet)      printf ("orc_add2_rshift_add_s16_11:\n");
8049     p = orc_program_new ();
8050     orc_program_set_name (p, "orc_add2_rshift_add_s16_11");
8051     orc_program_set_backup_function (p, _backup_orc_add2_rshift_add_s16_11);
8052     orc_program_add_destination (p, 2, "d1");
8053     orc_program_add_source (p, 2, "s1");
8054     orc_program_add_source (p, 2, "s2");
8055     orc_program_add_temporary (p, 2, "t1");
8056
8057       orc_program_append_2 (p, "avgsw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_S2, ORC_VAR_D1);
8058       orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1);
8059
8060     if (benchmark) {
8061       printf ("    cycles (emulate) :   %g\n",
8062           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
8063     }
8064
8065     ret = orc_test_compare_output_backup (p);
8066     if (!ret) {
8067       error = TRUE;
8068     } else if (!quiet) {
8069       printf ("    backup function  :   PASSED\n");
8070     }
8071
8072     if (benchmark) {
8073       printf ("    cycles (backup)  :   %g\n",
8074           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
8075     }
8076
8077     ret = orc_test_compare_output (p);
8078     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
8079       printf ("    compiled function:   COMPILE FAILED\n");
8080     } else if (!ret) {
8081       error = TRUE;
8082     } else if (!quiet) {
8083       printf ("    compiled function:   PASSED\n");
8084     }
8085
8086     if (benchmark) {
8087       printf ("    cycles (compiled):   %g\n",
8088           orc_test_performance_full (p, 0, NULL));
8089     }
8090
8091     orc_program_free (p);
8092   }
8093
8094   /* orc_add2_rshift_sub_s16_11_op */
8095   {
8096     OrcProgram *p = NULL;
8097     int ret;
8098
8099     if (!quiet)      printf ("orc_add2_rshift_sub_s16_11_op:\n");
8100     p = orc_program_new ();
8101     orc_program_set_name (p, "orc_add2_rshift_sub_s16_11_op");
8102     orc_program_set_backup_function (p, _backup_orc_add2_rshift_sub_s16_11_op);
8103     orc_program_add_destination (p, 2, "d1");
8104     orc_program_add_source (p, 2, "s1");
8105     orc_program_add_source (p, 2, "s2");
8106     orc_program_add_source (p, 2, "s3");
8107     orc_program_add_temporary (p, 2, "t1");
8108
8109       orc_program_append_2 (p, "avgsw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S3, ORC_VAR_D1);
8110       orc_program_append_2 (p, "subw", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_T1, ORC_VAR_D1);
8111
8112     if (benchmark) {
8113       printf ("    cycles (emulate) :   %g\n",
8114           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
8115     }
8116
8117     ret = orc_test_compare_output_backup (p);
8118     if (!ret) {
8119       error = TRUE;
8120     } else if (!quiet) {
8121       printf ("    backup function  :   PASSED\n");
8122     }
8123
8124     if (benchmark) {
8125       printf ("    cycles (backup)  :   %g\n",
8126           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
8127     }
8128
8129     ret = orc_test_compare_output (p);
8130     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
8131       printf ("    compiled function:   COMPILE FAILED\n");
8132     } else if (!ret) {
8133       error = TRUE;
8134     } else if (!quiet) {
8135       printf ("    compiled function:   PASSED\n");
8136     }
8137
8138     if (benchmark) {
8139       printf ("    cycles (compiled):   %g\n",
8140           orc_test_performance_full (p, 0, NULL));
8141     }
8142
8143     orc_program_free (p);
8144   }
8145
8146   /* orc_add2_rshift_sub_s16_11 */
8147   {
8148     OrcProgram *p = NULL;
8149     int ret;
8150
8151     if (!quiet)      printf ("orc_add2_rshift_sub_s16_11:\n");
8152     p = orc_program_new ();
8153     orc_program_set_name (p, "orc_add2_rshift_sub_s16_11");
8154     orc_program_set_backup_function (p, _backup_orc_add2_rshift_sub_s16_11);
8155     orc_program_add_destination (p, 2, "d1");
8156     orc_program_add_source (p, 2, "s1");
8157     orc_program_add_source (p, 2, "s2");
8158     orc_program_add_temporary (p, 2, "t1");
8159
8160       orc_program_append_2 (p, "avgsw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_S2, ORC_VAR_D1);
8161       orc_program_append_2 (p, "subw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1);
8162
8163     if (benchmark) {
8164       printf ("    cycles (emulate) :   %g\n",
8165           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
8166     }
8167
8168     ret = orc_test_compare_output_backup (p);
8169     if (!ret) {
8170       error = TRUE;
8171     } else if (!quiet) {
8172       printf ("    backup function  :   PASSED\n");
8173     }
8174
8175     if (benchmark) {
8176       printf ("    cycles (backup)  :   %g\n",
8177           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
8178     }
8179
8180     ret = orc_test_compare_output (p);
8181     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
8182       printf ("    compiled function:   COMPILE FAILED\n");
8183     } else if (!ret) {
8184       error = TRUE;
8185     } else if (!quiet) {
8186       printf ("    compiled function:   PASSED\n");
8187     }
8188
8189     if (benchmark) {
8190       printf ("    cycles (compiled):   %g\n",
8191           orc_test_performance_full (p, 0, NULL));
8192     }
8193
8194     orc_program_free (p);
8195   }
8196
8197   /* orc_add_const_rshift_s16_11 */
8198   {
8199     OrcProgram *p = NULL;
8200     int ret;
8201
8202     if (!quiet)      printf ("orc_add_const_rshift_s16_11:\n");
8203     p = orc_program_new ();
8204     orc_program_set_name (p, "orc_add_const_rshift_s16_11");
8205     orc_program_set_backup_function (p, _backup_orc_add_const_rshift_s16_11);
8206     orc_program_add_destination (p, 2, "d1");
8207     orc_program_add_source (p, 2, "s1");
8208       orc_program_add_constant (p, 4, 0x00000001, "c1");
8209     orc_program_add_temporary (p, 2, "t1");
8210
8211       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_C1, ORC_VAR_D1);
8212       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
8213
8214     if (benchmark) {
8215       printf ("    cycles (emulate) :   %g\n",
8216           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
8217     }
8218
8219     ret = orc_test_compare_output_backup (p);
8220     if (!ret) {
8221       error = TRUE;
8222     } else if (!quiet) {
8223       printf ("    backup function  :   PASSED\n");
8224     }
8225
8226     if (benchmark) {
8227       printf ("    cycles (backup)  :   %g\n",
8228           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
8229     }
8230
8231     ret = orc_test_compare_output (p);
8232     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
8233       printf ("    compiled function:   COMPILE FAILED\n");
8234     } else if (!ret) {
8235       error = TRUE;
8236     } else if (!quiet) {
8237       printf ("    compiled function:   PASSED\n");
8238     }
8239
8240     if (benchmark) {
8241       printf ("    cycles (compiled):   %g\n",
8242           orc_test_performance_full (p, 0, NULL));
8243     }
8244
8245     orc_program_free (p);
8246   }
8247
8248   /* orc_add_const_rshift_s16 */
8249   {
8250     OrcProgram *p = NULL;
8251     int ret;
8252
8253     if (!quiet)      printf ("orc_add_const_rshift_s16:\n");
8254     p = orc_program_new ();
8255     orc_program_set_name (p, "orc_add_const_rshift_s16");
8256     orc_program_set_backup_function (p, _backup_orc_add_const_rshift_s16);
8257     orc_program_add_destination (p, 2, "d1");
8258     orc_program_add_parameter (p, 2, "p1");
8259     orc_program_add_parameter (p, 2, "p2");
8260     orc_program_add_temporary (p, 2, "t1");
8261
8262       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1);
8263       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_P2, ORC_VAR_D1);
8264
8265     if (benchmark) {
8266       printf ("    cycles (emulate) :   %g\n",
8267           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
8268     }
8269
8270     ret = orc_test_compare_output_backup (p);
8271     if (!ret) {
8272       error = TRUE;
8273     } else if (!quiet) {
8274       printf ("    backup function  :   PASSED\n");
8275     }
8276
8277     if (benchmark) {
8278       printf ("    cycles (backup)  :   %g\n",
8279           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
8280     }
8281
8282     ret = orc_test_compare_output (p);
8283     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
8284       printf ("    compiled function:   COMPILE FAILED\n");
8285     } else if (!ret) {
8286       error = TRUE;
8287     } else if (!quiet) {
8288       printf ("    compiled function:   PASSED\n");
8289     }
8290
8291     if (benchmark) {
8292       printf ("    cycles (compiled):   %g\n",
8293           orc_test_performance_full (p, 0, NULL));
8294     }
8295
8296     orc_program_free (p);
8297   }
8298
8299   /* orc_add_s16 */
8300   {
8301     OrcProgram *p = NULL;
8302     int ret;
8303
8304     if (!quiet)      printf ("orc_add_s16:\n");
8305     p = orc_program_new ();
8306     orc_program_set_name (p, "orc_add_s16");
8307     orc_program_set_backup_function (p, _backup_orc_add_s16);
8308     orc_program_add_destination (p, 2, "d1");
8309     orc_program_add_source (p, 2, "s1");
8310     orc_program_add_source (p, 2, "s2");
8311
8312       orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_S2, ORC_VAR_D1);
8313
8314     if (benchmark) {
8315       printf ("    cycles (emulate) :   %g\n",
8316           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
8317     }
8318
8319     ret = orc_test_compare_output_backup (p);
8320     if (!ret) {
8321       error = TRUE;
8322     } else if (!quiet) {
8323       printf ("    backup function  :   PASSED\n");
8324     }
8325
8326     if (benchmark) {
8327       printf ("    cycles (backup)  :   %g\n",
8328           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
8329     }
8330
8331     ret = orc_test_compare_output (p);
8332     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
8333       printf ("    compiled function:   COMPILE FAILED\n");
8334     } else if (!ret) {
8335       error = TRUE;
8336     } else if (!quiet) {
8337       printf ("    compiled function:   PASSED\n");
8338     }
8339
8340     if (benchmark) {
8341       printf ("    cycles (compiled):   %g\n",
8342           orc_test_performance_full (p, 0, NULL));
8343     }
8344
8345     orc_program_free (p);
8346   }
8347
8348   /* orc_add_s16_2d */
8349   {
8350     OrcProgram *p = NULL;
8351     int ret;
8352
8353     if (!quiet)      printf ("orc_add_s16_2d:\n");
8354     p = orc_program_new ();
8355       orc_program_set_2d (p);
8356     orc_program_set_name (p, "orc_add_s16_2d");
8357     orc_program_set_backup_function (p, _backup_orc_add_s16_2d);
8358     orc_program_add_destination (p, 2, "d1");
8359     orc_program_add_source (p, 2, "s1");
8360
8361       orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1);
8362
8363     if (benchmark) {
8364       printf ("    cycles (emulate) :   %g\n",
8365           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
8366     }
8367
8368     ret = orc_test_compare_output_backup (p);
8369     if (!ret) {
8370       error = TRUE;
8371     } else if (!quiet) {
8372       printf ("    backup function  :   PASSED\n");
8373     }
8374
8375     if (benchmark) {
8376       printf ("    cycles (backup)  :   %g\n",
8377           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
8378     }
8379
8380     ret = orc_test_compare_output (p);
8381     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
8382       printf ("    compiled function:   COMPILE FAILED\n");
8383     } else if (!ret) {
8384       error = TRUE;
8385     } else if (!quiet) {
8386       printf ("    compiled function:   PASSED\n");
8387     }
8388
8389     if (benchmark) {
8390       printf ("    cycles (compiled):   %g\n",
8391           orc_test_performance_full (p, 0, NULL));
8392     }
8393
8394     orc_program_free (p);
8395   }
8396
8397   /* orc_addc_rshift_s16 */
8398   {
8399     OrcProgram *p = NULL;
8400     int ret;
8401
8402     if (!quiet)      printf ("orc_addc_rshift_s16:\n");
8403     p = orc_program_new ();
8404     orc_program_set_name (p, "orc_addc_rshift_s16");
8405     orc_program_set_backup_function (p, _backup_orc_addc_rshift_s16);
8406     orc_program_add_destination (p, 2, "d1");
8407     orc_program_add_source (p, 2, "s1");
8408     orc_program_add_source (p, 2, "s2");
8409     orc_program_add_parameter (p, 2, "p1");
8410     orc_program_add_temporary (p, 2, "t1");
8411
8412       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_S2, ORC_VAR_D1);
8413       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1);
8414
8415     if (benchmark) {
8416       printf ("    cycles (emulate) :   %g\n",
8417           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
8418     }
8419
8420     ret = orc_test_compare_output_backup (p);
8421     if (!ret) {
8422       error = TRUE;
8423     } else if (!quiet) {
8424       printf ("    backup function  :   PASSED\n");
8425     }
8426
8427     if (benchmark) {
8428       printf ("    cycles (backup)  :   %g\n",
8429           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
8430     }
8431
8432     ret = orc_test_compare_output (p);
8433     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
8434       printf ("    compiled function:   COMPILE FAILED\n");
8435     } else if (!ret) {
8436       error = TRUE;
8437     } else if (!quiet) {
8438       printf ("    compiled function:   PASSED\n");
8439     }
8440
8441     if (benchmark) {
8442       printf ("    cycles (compiled):   %g\n",
8443           orc_test_performance_full (p, 0, NULL));
8444     }
8445
8446     orc_program_free (p);
8447   }
8448
8449   /* orc_lshift1_s16 */
8450   {
8451     OrcProgram *p = NULL;
8452     int ret;
8453
8454     if (!quiet)      printf ("orc_lshift1_s16:\n");
8455     p = orc_program_new ();
8456     orc_program_set_name (p, "orc_lshift1_s16");
8457     orc_program_set_backup_function (p, _backup_orc_lshift1_s16);
8458     orc_program_add_destination (p, 2, "d1");
8459     orc_program_add_source (p, 2, "s1");
8460       orc_program_add_constant (p, 4, 0x00000001, "c1");
8461
8462       orc_program_append_2 (p, "shlw", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_C1, ORC_VAR_D1);
8463
8464     if (benchmark) {
8465       printf ("    cycles (emulate) :   %g\n",
8466           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
8467     }
8468
8469     ret = orc_test_compare_output_backup (p);
8470     if (!ret) {
8471       error = TRUE;
8472     } else if (!quiet) {
8473       printf ("    backup function  :   PASSED\n");
8474     }
8475
8476     if (benchmark) {
8477       printf ("    cycles (backup)  :   %g\n",
8478           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
8479     }
8480
8481     ret = orc_test_compare_output (p);
8482     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
8483       printf ("    compiled function:   COMPILE FAILED\n");
8484     } else if (!ret) {
8485       error = TRUE;
8486     } else if (!quiet) {
8487       printf ("    compiled function:   PASSED\n");
8488     }
8489
8490     if (benchmark) {
8491       printf ("    cycles (compiled):   %g\n",
8492           orc_test_performance_full (p, 0, NULL));
8493     }
8494
8495     orc_program_free (p);
8496   }
8497
8498   /* orc_lshift2_s16 */
8499   {
8500     OrcProgram *p = NULL;
8501     int ret;
8502
8503     if (!quiet)      printf ("orc_lshift2_s16:\n");
8504     p = orc_program_new ();
8505     orc_program_set_name (p, "orc_lshift2_s16");
8506     orc_program_set_backup_function (p, _backup_orc_lshift2_s16);
8507     orc_program_add_destination (p, 2, "d1");
8508     orc_program_add_source (p, 2, "s1");
8509       orc_program_add_constant (p, 4, 0x00000002, "c1");
8510
8511       orc_program_append_2 (p, "shlw", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_C1, ORC_VAR_D1);
8512
8513     if (benchmark) {
8514       printf ("    cycles (emulate) :   %g\n",
8515           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
8516     }
8517
8518     ret = orc_test_compare_output_backup (p);
8519     if (!ret) {
8520       error = TRUE;
8521     } else if (!quiet) {
8522       printf ("    backup function  :   PASSED\n");
8523     }
8524
8525     if (benchmark) {
8526       printf ("    cycles (backup)  :   %g\n",
8527           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
8528     }
8529
8530     ret = orc_test_compare_output (p);
8531     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
8532       printf ("    compiled function:   COMPILE FAILED\n");
8533     } else if (!ret) {
8534       error = TRUE;
8535     } else if (!quiet) {
8536       printf ("    compiled function:   PASSED\n");
8537     }
8538
8539     if (benchmark) {
8540       printf ("    cycles (compiled):   %g\n",
8541           orc_test_performance_full (p, 0, NULL));
8542     }
8543
8544     orc_program_free (p);
8545   }
8546
8547   /* orc_lshift_s16_ip */
8548   {
8549     OrcProgram *p = NULL;
8550     int ret;
8551
8552     if (!quiet)      printf ("orc_lshift_s16_ip:\n");
8553     p = orc_program_new ();
8554     orc_program_set_name (p, "orc_lshift_s16_ip");
8555     orc_program_set_backup_function (p, _backup_orc_lshift_s16_ip);
8556     orc_program_add_destination (p, 2, "d1");
8557     orc_program_add_parameter (p, 2, "p1");
8558
8559       orc_program_append_2 (p, "shlw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1);
8560
8561     if (benchmark) {
8562       printf ("    cycles (emulate) :   %g\n",
8563           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
8564     }
8565
8566     ret = orc_test_compare_output_backup (p);
8567     if (!ret) {
8568       error = TRUE;
8569     } else if (!quiet) {
8570       printf ("    backup function  :   PASSED\n");
8571     }
8572
8573     if (benchmark) {
8574       printf ("    cycles (backup)  :   %g\n",
8575           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
8576     }
8577
8578     ret = orc_test_compare_output (p);
8579     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
8580       printf ("    compiled function:   COMPILE FAILED\n");
8581     } else if (!ret) {
8582       error = TRUE;
8583     } else if (!quiet) {
8584       printf ("    compiled function:   PASSED\n");
8585     }
8586
8587     if (benchmark) {
8588       printf ("    cycles (compiled):   %g\n",
8589           orc_test_performance_full (p, 0, NULL));
8590     }
8591
8592     orc_program_free (p);
8593   }
8594
8595   /* orc_mas2_add_s16_op */
8596   {
8597     OrcProgram *p = NULL;
8598     int ret;
8599
8600     if (!quiet)      printf ("orc_mas2_add_s16_op:\n");
8601     p = orc_program_new ();
8602     orc_program_set_name (p, "orc_mas2_add_s16_op");
8603     orc_program_set_backup_function (p, _backup_orc_mas2_add_s16_op);
8604     orc_program_add_destination (p, 2, "d1");
8605     orc_program_add_source (p, 2, "s1");
8606     orc_program_add_source (p, 2, "s2");
8607     orc_program_add_source (p, 2, "s3");
8608     orc_program_add_parameter (p, 2, "p1");
8609     orc_program_add_parameter (p, 4, "p2");
8610     orc_program_add_parameter (p, 4, "p3");
8611     orc_program_add_temporary (p, 2, "t1");
8612     orc_program_add_temporary (p, 4, "t2");
8613
8614       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S3, ORC_VAR_D1);
8615       orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1);
8616       orc_program_append_2 (p, "addl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P2, ORC_VAR_D1);
8617       orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P3, ORC_VAR_D1);
8618       orc_program_append_2 (p, "convlw", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
8619       orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_T1, ORC_VAR_D1);
8620
8621     if (benchmark) {
8622       printf ("    cycles (emulate) :   %g\n",
8623           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
8624     }
8625
8626     ret = orc_test_compare_output_backup (p);
8627     if (!ret) {
8628       error = TRUE;
8629     } else if (!quiet) {
8630       printf ("    backup function  :   PASSED\n");
8631     }
8632
8633     if (benchmark) {
8634       printf ("    cycles (backup)  :   %g\n",
8635           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
8636     }
8637
8638     ret = orc_test_compare_output (p);
8639     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
8640       printf ("    compiled function:   COMPILE FAILED\n");
8641     } else if (!ret) {
8642       error = TRUE;
8643     } else if (!quiet) {
8644       printf ("    compiled function:   PASSED\n");
8645     }
8646
8647     if (benchmark) {
8648       printf ("    cycles (compiled):   %g\n",
8649           orc_test_performance_full (p, 0, NULL));
8650     }
8651
8652     orc_program_free (p);
8653   }
8654
8655   /* orc_mas2_add_s16_ip */
8656   {
8657     OrcProgram *p = NULL;
8658     int ret;
8659
8660     if (!quiet)      printf ("orc_mas2_add_s16_ip:\n");
8661     p = orc_program_new ();
8662     orc_program_set_name (p, "orc_mas2_add_s16_ip");
8663     orc_program_set_backup_function (p, _backup_orc_mas2_add_s16_ip);
8664     orc_program_add_destination (p, 2, "d1");
8665     orc_program_add_source (p, 2, "s1");
8666     orc_program_add_source (p, 2, "s2");
8667     orc_program_add_parameter (p, 2, "p1");
8668     orc_program_add_parameter (p, 4, "p2");
8669     orc_program_add_parameter (p, 4, "p3");
8670     orc_program_add_temporary (p, 2, "t1");
8671     orc_program_add_temporary (p, 4, "t2");
8672
8673       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_S2, ORC_VAR_D1);
8674       orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1);
8675       orc_program_append_2 (p, "addl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P2, ORC_VAR_D1);
8676       orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P3, ORC_VAR_D1);
8677       orc_program_append_2 (p, "convlw", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
8678       orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1);
8679
8680     if (benchmark) {
8681       printf ("    cycles (emulate) :   %g\n",
8682           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
8683     }
8684
8685     ret = orc_test_compare_output_backup (p);
8686     if (!ret) {
8687       error = TRUE;
8688     } else if (!quiet) {
8689       printf ("    backup function  :   PASSED\n");
8690     }
8691
8692     if (benchmark) {
8693       printf ("    cycles (backup)  :   %g\n",
8694           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
8695     }
8696
8697     ret = orc_test_compare_output (p);
8698     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
8699       printf ("    compiled function:   COMPILE FAILED\n");
8700     } else if (!ret) {
8701       error = TRUE;
8702     } else if (!quiet) {
8703       printf ("    compiled function:   PASSED\n");
8704     }
8705
8706     if (benchmark) {
8707       printf ("    cycles (compiled):   %g\n",
8708           orc_test_performance_full (p, 0, NULL));
8709     }
8710
8711     orc_program_free (p);
8712   }
8713
8714   /* orc_mas2_sub_s16_op */
8715   {
8716     OrcProgram *p = NULL;
8717     int ret;
8718
8719     if (!quiet)      printf ("orc_mas2_sub_s16_op:\n");
8720     p = orc_program_new ();
8721     orc_program_set_name (p, "orc_mas2_sub_s16_op");
8722     orc_program_set_backup_function (p, _backup_orc_mas2_sub_s16_op);
8723     orc_program_add_destination (p, 2, "d1");
8724     orc_program_add_source (p, 2, "s1");
8725     orc_program_add_source (p, 2, "s2");
8726     orc_program_add_source (p, 2, "s3");
8727     orc_program_add_parameter (p, 2, "p1");
8728     orc_program_add_parameter (p, 4, "p2");
8729     orc_program_add_parameter (p, 4, "p3");
8730     orc_program_add_temporary (p, 2, "t1");
8731     orc_program_add_temporary (p, 4, "t2");
8732
8733       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S3, ORC_VAR_D1);
8734       orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1);
8735       orc_program_append_2 (p, "addl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P2, ORC_VAR_D1);
8736       orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P3, ORC_VAR_D1);
8737       orc_program_append_2 (p, "convlw", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
8738       orc_program_append_2 (p, "subw", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_T1, ORC_VAR_D1);
8739
8740     if (benchmark) {
8741       printf ("    cycles (emulate) :   %g\n",
8742           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
8743     }
8744
8745     ret = orc_test_compare_output_backup (p);
8746     if (!ret) {
8747       error = TRUE;
8748     } else if (!quiet) {
8749       printf ("    backup function  :   PASSED\n");
8750     }
8751
8752     if (benchmark) {
8753       printf ("    cycles (backup)  :   %g\n",
8754           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
8755     }
8756
8757     ret = orc_test_compare_output (p);
8758     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
8759       printf ("    compiled function:   COMPILE FAILED\n");
8760     } else if (!ret) {
8761       error = TRUE;
8762     } else if (!quiet) {
8763       printf ("    compiled function:   PASSED\n");
8764     }
8765
8766     if (benchmark) {
8767       printf ("    cycles (compiled):   %g\n",
8768           orc_test_performance_full (p, 0, NULL));
8769     }
8770
8771     orc_program_free (p);
8772   }
8773
8774   /* orc_mas2_sub_s16_ip */
8775   {
8776     OrcProgram *p = NULL;
8777     int ret;
8778
8779     if (!quiet)      printf ("orc_mas2_sub_s16_ip:\n");
8780     p = orc_program_new ();
8781     orc_program_set_name (p, "orc_mas2_sub_s16_ip");
8782     orc_program_set_backup_function (p, _backup_orc_mas2_sub_s16_ip);
8783     orc_program_add_destination (p, 2, "d1");
8784     orc_program_add_source (p, 2, "s1");
8785     orc_program_add_source (p, 2, "s2");
8786     orc_program_add_parameter (p, 2, "p1");
8787     orc_program_add_parameter (p, 4, "p2");
8788     orc_program_add_parameter (p, 4, "p3");
8789     orc_program_add_temporary (p, 2, "t1");
8790     orc_program_add_temporary (p, 4, "t2");
8791
8792       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_S2, ORC_VAR_D1);
8793       orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1);
8794       orc_program_append_2 (p, "addl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P2, ORC_VAR_D1);
8795       orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P3, ORC_VAR_D1);
8796       orc_program_append_2 (p, "convlw", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
8797       orc_program_append_2 (p, "subw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1);
8798
8799     if (benchmark) {
8800       printf ("    cycles (emulate) :   %g\n",
8801           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
8802     }
8803
8804     ret = orc_test_compare_output_backup (p);
8805     if (!ret) {
8806       error = TRUE;
8807     } else if (!quiet) {
8808       printf ("    backup function  :   PASSED\n");
8809     }
8810
8811     if (benchmark) {
8812       printf ("    cycles (backup)  :   %g\n",
8813           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
8814     }
8815
8816     ret = orc_test_compare_output (p);
8817     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
8818       printf ("    compiled function:   COMPILE FAILED\n");
8819     } else if (!ret) {
8820       error = TRUE;
8821     } else if (!quiet) {
8822       printf ("    compiled function:   PASSED\n");
8823     }
8824
8825     if (benchmark) {
8826       printf ("    cycles (compiled):   %g\n",
8827           orc_test_performance_full (p, 0, NULL));
8828     }
8829
8830     orc_program_free (p);
8831   }
8832
8833   /* orc_mas4_across_add_s16_1991_op */
8834   {
8835     OrcProgram *p = NULL;
8836     int ret;
8837
8838     if (!quiet)      printf ("orc_mas4_across_add_s16_1991_op:\n");
8839     p = orc_program_new ();
8840     orc_program_set_name (p, "orc_mas4_across_add_s16_1991_op");
8841     orc_program_set_backup_function (p, _backup_orc_mas4_across_add_s16_1991_op);
8842     orc_program_add_destination (p, 2, "d1");
8843     orc_program_add_source (p, 2, "s1");
8844     orc_program_add_source (p, 2, "s2");
8845     orc_program_add_source (p, 2, "s3");
8846     orc_program_add_source (p, 2, "s4");
8847     orc_program_add_source (p, 2, "s5");
8848       orc_program_add_constant (p, 4, 0x00000009, "c1");
8849     orc_program_add_parameter (p, 4, "p1");
8850     orc_program_add_parameter (p, 4, "p2");
8851     orc_program_add_temporary (p, 2, "t1");
8852     orc_program_add_temporary (p, 2, "t2");
8853     orc_program_add_temporary (p, 4, "t3");
8854     orc_program_add_temporary (p, 4, "t4");
8855
8856       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_S3, ORC_VAR_S4, ORC_VAR_D1);
8857       orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
8858       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_S5, ORC_VAR_D1);
8859       orc_program_append_2 (p, "convswl", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
8860       orc_program_append_2 (p, "subl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4, ORC_VAR_D1);
8861       orc_program_append_2 (p, "addl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_P1, ORC_VAR_D1);
8862       orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_P2, ORC_VAR_D1);
8863       orc_program_append_2 (p, "convlw", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_D1, ORC_VAR_D1);
8864       orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_T1, ORC_VAR_D1);
8865
8866     if (benchmark) {
8867       printf ("    cycles (emulate) :   %g\n",
8868           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
8869     }
8870
8871     ret = orc_test_compare_output_backup (p);
8872     if (!ret) {
8873       error = TRUE;
8874     } else if (!quiet) {
8875       printf ("    backup function  :   PASSED\n");
8876     }
8877
8878     if (benchmark) {
8879       printf ("    cycles (backup)  :   %g\n",
8880           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
8881     }
8882
8883     ret = orc_test_compare_output (p);
8884     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
8885       printf ("    compiled function:   COMPILE FAILED\n");
8886     } else if (!ret) {
8887       error = TRUE;
8888     } else if (!quiet) {
8889       printf ("    compiled function:   PASSED\n");
8890     }
8891
8892     if (benchmark) {
8893       printf ("    cycles (compiled):   %g\n",
8894           orc_test_performance_full (p, 0, NULL));
8895     }
8896
8897     orc_program_free (p);
8898   }
8899
8900   /* orc_mas4_across_add_s16_1991_ip */
8901   {
8902     OrcProgram *p = NULL;
8903     int ret;
8904
8905     if (!quiet)      printf ("orc_mas4_across_add_s16_1991_ip:\n");
8906     p = orc_program_new ();
8907     orc_program_set_name (p, "orc_mas4_across_add_s16_1991_ip");
8908     orc_program_set_backup_function (p, _backup_orc_mas4_across_add_s16_1991_ip);
8909     orc_program_add_destination (p, 2, "d1");
8910     orc_program_add_source (p, 2, "s1");
8911     orc_program_add_source (p, 2, "s2");
8912     orc_program_add_source (p, 2, "s3");
8913     orc_program_add_source (p, 2, "s4");
8914       orc_program_add_constant (p, 4, 0x00000009, "c1");
8915     orc_program_add_parameter (p, 4, "p1");
8916     orc_program_add_parameter (p, 4, "p2");
8917     orc_program_add_temporary (p, 2, "t1");
8918     orc_program_add_temporary (p, 2, "t2");
8919     orc_program_add_temporary (p, 4, "t3");
8920     orc_program_add_temporary (p, 4, "t4");
8921
8922       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S3, ORC_VAR_D1);
8923       orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
8924       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_S4, ORC_VAR_D1);
8925       orc_program_append_2 (p, "convswl", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
8926       orc_program_append_2 (p, "subl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4, ORC_VAR_D1);
8927       orc_program_append_2 (p, "addl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_P1, ORC_VAR_D1);
8928       orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_P2, ORC_VAR_D1);
8929       orc_program_append_2 (p, "convlw", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_D1, ORC_VAR_D1);
8930       orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1);
8931
8932     if (benchmark) {
8933       printf ("    cycles (emulate) :   %g\n",
8934           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
8935     }
8936
8937     ret = orc_test_compare_output_backup (p);
8938     if (!ret) {
8939       error = TRUE;
8940     } else if (!quiet) {
8941       printf ("    backup function  :   PASSED\n");
8942     }
8943
8944     if (benchmark) {
8945       printf ("    cycles (backup)  :   %g\n",
8946           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
8947     }
8948
8949     ret = orc_test_compare_output (p);
8950     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
8951       printf ("    compiled function:   COMPILE FAILED\n");
8952     } else if (!ret) {
8953       error = TRUE;
8954     } else if (!quiet) {
8955       printf ("    compiled function:   PASSED\n");
8956     }
8957
8958     if (benchmark) {
8959       printf ("    cycles (compiled):   %g\n",
8960           orc_test_performance_full (p, 0, NULL));
8961     }
8962
8963     orc_program_free (p);
8964   }
8965
8966   /* orc_mas4_across_sub_s16_1991_op */
8967   {
8968     OrcProgram *p = NULL;
8969     int ret;
8970
8971     if (!quiet)      printf ("orc_mas4_across_sub_s16_1991_op:\n");
8972     p = orc_program_new ();
8973     orc_program_set_name (p, "orc_mas4_across_sub_s16_1991_op");
8974     orc_program_set_backup_function (p, _backup_orc_mas4_across_sub_s16_1991_op);
8975     orc_program_add_destination (p, 2, "d1");
8976     orc_program_add_source (p, 2, "s1");
8977     orc_program_add_source (p, 2, "s2");
8978     orc_program_add_source (p, 2, "s3");
8979     orc_program_add_source (p, 2, "s4");
8980     orc_program_add_source (p, 2, "s5");
8981       orc_program_add_constant (p, 4, 0x00000009, "c1");
8982     orc_program_add_parameter (p, 4, "p1");
8983     orc_program_add_parameter (p, 4, "p2");
8984     orc_program_add_temporary (p, 2, "t1");
8985     orc_program_add_temporary (p, 2, "t2");
8986     orc_program_add_temporary (p, 4, "t3");
8987     orc_program_add_temporary (p, 4, "t4");
8988
8989       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_S3, ORC_VAR_S4, ORC_VAR_D1);
8990       orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
8991       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_S5, ORC_VAR_D1);
8992       orc_program_append_2 (p, "convswl", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
8993       orc_program_append_2 (p, "subl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4, ORC_VAR_D1);
8994       orc_program_append_2 (p, "addl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_P1, ORC_VAR_D1);
8995       orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_P2, ORC_VAR_D1);
8996       orc_program_append_2 (p, "convlw", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_D1, ORC_VAR_D1);
8997       orc_program_append_2 (p, "subw", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_T1, ORC_VAR_D1);
8998
8999     if (benchmark) {
9000       printf ("    cycles (emulate) :   %g\n",
9001           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
9002     }
9003
9004     ret = orc_test_compare_output_backup (p);
9005     if (!ret) {
9006       error = TRUE;
9007     } else if (!quiet) {
9008       printf ("    backup function  :   PASSED\n");
9009     }
9010
9011     if (benchmark) {
9012       printf ("    cycles (backup)  :   %g\n",
9013           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
9014     }
9015
9016     ret = orc_test_compare_output (p);
9017     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
9018       printf ("    compiled function:   COMPILE FAILED\n");
9019     } else if (!ret) {
9020       error = TRUE;
9021     } else if (!quiet) {
9022       printf ("    compiled function:   PASSED\n");
9023     }
9024
9025     if (benchmark) {
9026       printf ("    cycles (compiled):   %g\n",
9027           orc_test_performance_full (p, 0, NULL));
9028     }
9029
9030     orc_program_free (p);
9031   }
9032
9033   /* orc_mas4_across_sub_s16_1991_ip */
9034   {
9035     OrcProgram *p = NULL;
9036     int ret;
9037
9038     if (!quiet)      printf ("orc_mas4_across_sub_s16_1991_ip:\n");
9039     p = orc_program_new ();
9040     orc_program_set_name (p, "orc_mas4_across_sub_s16_1991_ip");
9041     orc_program_set_backup_function (p, _backup_orc_mas4_across_sub_s16_1991_ip);
9042     orc_program_add_destination (p, 2, "d1");
9043     orc_program_add_source (p, 2, "s1");
9044     orc_program_add_source (p, 2, "s2");
9045     orc_program_add_source (p, 2, "s3");
9046     orc_program_add_source (p, 2, "s4");
9047       orc_program_add_constant (p, 4, 0x00000009, "c1");
9048     orc_program_add_parameter (p, 4, "p1");
9049     orc_program_add_parameter (p, 4, "p2");
9050     orc_program_add_temporary (p, 2, "t1");
9051     orc_program_add_temporary (p, 2, "t2");
9052     orc_program_add_temporary (p, 4, "t3");
9053     orc_program_add_temporary (p, 4, "t4");
9054
9055       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S3, ORC_VAR_D1);
9056       orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
9057       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_S4, ORC_VAR_D1);
9058       orc_program_append_2 (p, "convswl", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
9059       orc_program_append_2 (p, "subl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4, ORC_VAR_D1);
9060       orc_program_append_2 (p, "addl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_P1, ORC_VAR_D1);
9061       orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_P2, ORC_VAR_D1);
9062       orc_program_append_2 (p, "convlw", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_D1, ORC_VAR_D1);
9063       orc_program_append_2 (p, "subw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1);
9064
9065     if (benchmark) {
9066       printf ("    cycles (emulate) :   %g\n",
9067           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
9068     }
9069
9070     ret = orc_test_compare_output_backup (p);
9071     if (!ret) {
9072       error = TRUE;
9073     } else if (!quiet) {
9074       printf ("    backup function  :   PASSED\n");
9075     }
9076
9077     if (benchmark) {
9078       printf ("    cycles (backup)  :   %g\n",
9079           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
9080     }
9081
9082     ret = orc_test_compare_output (p);
9083     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
9084       printf ("    compiled function:   COMPILE FAILED\n");
9085     } else if (!ret) {
9086       error = TRUE;
9087     } else if (!quiet) {
9088       printf ("    compiled function:   PASSED\n");
9089     }
9090
9091     if (benchmark) {
9092       printf ("    cycles (compiled):   %g\n",
9093           orc_test_performance_full (p, 0, NULL));
9094     }
9095
9096     orc_program_free (p);
9097   }
9098
9099   /* orc_subtract_s16 */
9100   {
9101     OrcProgram *p = NULL;
9102     int ret;
9103
9104     if (!quiet)      printf ("orc_subtract_s16:\n");
9105     p = orc_program_new ();
9106     orc_program_set_name (p, "orc_subtract_s16");
9107     orc_program_set_backup_function (p, _backup_orc_subtract_s16);
9108     orc_program_add_destination (p, 2, "d1");
9109     orc_program_add_source (p, 2, "s1");
9110     orc_program_add_source (p, 2, "s2");
9111
9112       orc_program_append_2 (p, "subw", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_S2, ORC_VAR_D1);
9113
9114     if (benchmark) {
9115       printf ("    cycles (emulate) :   %g\n",
9116           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
9117     }
9118
9119     ret = orc_test_compare_output_backup (p);
9120     if (!ret) {
9121       error = TRUE;
9122     } else if (!quiet) {
9123       printf ("    backup function  :   PASSED\n");
9124     }
9125
9126     if (benchmark) {
9127       printf ("    cycles (backup)  :   %g\n",
9128           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
9129     }
9130
9131     ret = orc_test_compare_output (p);
9132     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
9133       printf ("    compiled function:   COMPILE FAILED\n");
9134     } else if (!ret) {
9135       error = TRUE;
9136     } else if (!quiet) {
9137       printf ("    compiled function:   PASSED\n");
9138     }
9139
9140     if (benchmark) {
9141       printf ("    cycles (compiled):   %g\n",
9142           orc_test_performance_full (p, 0, NULL));
9143     }
9144
9145     orc_program_free (p);
9146   }
9147
9148   /* orc_add_s16_u8 */
9149   {
9150     OrcProgram *p = NULL;
9151     int ret;
9152
9153     if (!quiet)      printf ("orc_add_s16_u8:\n");
9154     p = orc_program_new ();
9155     orc_program_set_name (p, "orc_add_s16_u8");
9156     orc_program_set_backup_function (p, _backup_orc_add_s16_u8);
9157     orc_program_add_destination (p, 2, "d1");
9158     orc_program_add_source (p, 2, "s1");
9159     orc_program_add_source (p, 1, "s2");
9160     orc_program_add_temporary (p, 2, "t1");
9161
9162       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_D1, ORC_VAR_D1);
9163       orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1);
9164
9165     if (benchmark) {
9166       printf ("    cycles (emulate) :   %g\n",
9167           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
9168     }
9169
9170     ret = orc_test_compare_output_backup (p);
9171     if (!ret) {
9172       error = TRUE;
9173     } else if (!quiet) {
9174       printf ("    backup function  :   PASSED\n");
9175     }
9176
9177     if (benchmark) {
9178       printf ("    cycles (backup)  :   %g\n",
9179           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
9180     }
9181
9182     ret = orc_test_compare_output (p);
9183     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
9184       printf ("    compiled function:   COMPILE FAILED\n");
9185     } else if (!ret) {
9186       error = TRUE;
9187     } else if (!quiet) {
9188       printf ("    compiled function:   PASSED\n");
9189     }
9190
9191     if (benchmark) {
9192       printf ("    cycles (compiled):   %g\n",
9193           orc_test_performance_full (p, 0, NULL));
9194     }
9195
9196     orc_program_free (p);
9197   }
9198
9199   /* orc_add_s16_u8_2d */
9200   {
9201     OrcProgram *p = NULL;
9202     int ret;
9203
9204     if (!quiet)      printf ("orc_add_s16_u8_2d:\n");
9205     p = orc_program_new ();
9206       orc_program_set_2d (p);
9207     orc_program_set_name (p, "orc_add_s16_u8_2d");
9208     orc_program_set_backup_function (p, _backup_orc_add_s16_u8_2d);
9209     orc_program_add_destination (p, 2, "d1");
9210     orc_program_add_source (p, 1, "s1");
9211     orc_program_add_temporary (p, 2, "t1");
9212
9213       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
9214       orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1);
9215
9216     if (benchmark) {
9217       printf ("    cycles (emulate) :   %g\n",
9218           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
9219     }
9220
9221     ret = orc_test_compare_output_backup (p);
9222     if (!ret) {
9223       error = TRUE;
9224     } else if (!quiet) {
9225       printf ("    backup function  :   PASSED\n");
9226     }
9227
9228     if (benchmark) {
9229       printf ("    cycles (backup)  :   %g\n",
9230           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
9231     }
9232
9233     ret = orc_test_compare_output (p);
9234     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
9235       printf ("    compiled function:   COMPILE FAILED\n");
9236     } else if (!ret) {
9237       error = TRUE;
9238     } else if (!quiet) {
9239       printf ("    compiled function:   PASSED\n");
9240     }
9241
9242     if (benchmark) {
9243       printf ("    cycles (compiled):   %g\n",
9244           orc_test_performance_full (p, 0, NULL));
9245     }
9246
9247     orc_program_free (p);
9248   }
9249
9250   /* orc_convert_s16_u8 */
9251   {
9252     OrcProgram *p = NULL;
9253     int ret;
9254
9255     if (!quiet)      printf ("orc_convert_s16_u8:\n");
9256     p = orc_program_new ();
9257     orc_program_set_name (p, "orc_convert_s16_u8");
9258     orc_program_set_backup_function (p, _backup_orc_convert_s16_u8);
9259     orc_program_add_destination (p, 2, "d1");
9260     orc_program_add_source (p, 1, "s1");
9261
9262       orc_program_append_2 (p, "convubw", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
9263
9264     if (benchmark) {
9265       printf ("    cycles (emulate) :   %g\n",
9266           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
9267     }
9268
9269     ret = orc_test_compare_output_backup (p);
9270     if (!ret) {
9271       error = TRUE;
9272     } else if (!quiet) {
9273       printf ("    backup function  :   PASSED\n");
9274     }
9275
9276     if (benchmark) {
9277       printf ("    cycles (backup)  :   %g\n",
9278           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
9279     }
9280
9281     ret = orc_test_compare_output (p);
9282     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
9283       printf ("    compiled function:   COMPILE FAILED\n");
9284     } else if (!ret) {
9285       error = TRUE;
9286     } else if (!quiet) {
9287       printf ("    compiled function:   PASSED\n");
9288     }
9289
9290     if (benchmark) {
9291       printf ("    cycles (compiled):   %g\n",
9292           orc_test_performance_full (p, 0, NULL));
9293     }
9294
9295     orc_program_free (p);
9296   }
9297
9298   /* orc_convert_u8_s16 */
9299   {
9300     OrcProgram *p = NULL;
9301     int ret;
9302
9303     if (!quiet)      printf ("orc_convert_u8_s16:\n");
9304     p = orc_program_new ();
9305     orc_program_set_name (p, "orc_convert_u8_s16");
9306     orc_program_set_backup_function (p, _backup_orc_convert_u8_s16);
9307     orc_program_add_destination (p, 1, "d1");
9308     orc_program_add_source (p, 2, "s1");
9309
9310       orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
9311
9312     if (benchmark) {
9313       printf ("    cycles (emulate) :   %g\n",
9314           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
9315     }
9316
9317     ret = orc_test_compare_output_backup (p);
9318     if (!ret) {
9319       error = TRUE;
9320     } else if (!quiet) {
9321       printf ("    backup function  :   PASSED\n");
9322     }
9323
9324     if (benchmark) {
9325       printf ("    cycles (backup)  :   %g\n",
9326           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
9327     }
9328
9329     ret = orc_test_compare_output (p);
9330     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
9331       printf ("    compiled function:   COMPILE FAILED\n");
9332     } else if (!ret) {
9333       error = TRUE;
9334     } else if (!quiet) {
9335       printf ("    compiled function:   PASSED\n");
9336     }
9337
9338     if (benchmark) {
9339       printf ("    cycles (compiled):   %g\n",
9340           orc_test_performance_full (p, 0, NULL));
9341     }
9342
9343     orc_program_free (p);
9344   }
9345
9346   /* orc_offsetconvert_u8_s16 */
9347   {
9348     OrcProgram *p = NULL;
9349     int ret;
9350
9351     if (!quiet)      printf ("orc_offsetconvert_u8_s16:\n");
9352     p = orc_program_new ();
9353     orc_program_set_name (p, "orc_offsetconvert_u8_s16");
9354     orc_program_set_backup_function (p, _backup_orc_offsetconvert_u8_s16);
9355     orc_program_add_destination (p, 1, "d1");
9356     orc_program_add_source (p, 2, "s1");
9357       orc_program_add_constant (p, 4, 0x00000080, "c1");
9358     orc_program_add_temporary (p, 2, "t1");
9359
9360       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_C1, ORC_VAR_D1);
9361       orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
9362
9363     if (benchmark) {
9364       printf ("    cycles (emulate) :   %g\n",
9365           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
9366     }
9367
9368     ret = orc_test_compare_output_backup (p);
9369     if (!ret) {
9370       error = TRUE;
9371     } else if (!quiet) {
9372       printf ("    backup function  :   PASSED\n");
9373     }
9374
9375     if (benchmark) {
9376       printf ("    cycles (backup)  :   %g\n",
9377           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
9378     }
9379
9380     ret = orc_test_compare_output (p);
9381     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
9382       printf ("    compiled function:   COMPILE FAILED\n");
9383     } else if (!ret) {
9384       error = TRUE;
9385     } else if (!quiet) {
9386       printf ("    compiled function:   PASSED\n");
9387     }
9388
9389     if (benchmark) {
9390       printf ("    cycles (compiled):   %g\n",
9391           orc_test_performance_full (p, 0, NULL));
9392     }
9393
9394     orc_program_free (p);
9395   }
9396
9397   /* orc_offsetconvert_s16_u8 */
9398   {
9399     OrcProgram *p = NULL;
9400     int ret;
9401
9402     if (!quiet)      printf ("orc_offsetconvert_s16_u8:\n");
9403     p = orc_program_new ();
9404     orc_program_set_name (p, "orc_offsetconvert_s16_u8");
9405     orc_program_set_backup_function (p, _backup_orc_offsetconvert_s16_u8);
9406     orc_program_add_destination (p, 2, "d1");
9407     orc_program_add_source (p, 1, "s1");
9408       orc_program_add_constant (p, 4, 0x00000080, "c1");
9409     orc_program_add_temporary (p, 2, "t1");
9410
9411       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
9412       orc_program_append_2 (p, "subw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
9413
9414     if (benchmark) {
9415       printf ("    cycles (emulate) :   %g\n",
9416           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
9417     }
9418
9419     ret = orc_test_compare_output_backup (p);
9420     if (!ret) {
9421       error = TRUE;
9422     } else if (!quiet) {
9423       printf ("    backup function  :   PASSED\n");
9424     }
9425
9426     if (benchmark) {
9427       printf ("    cycles (backup)  :   %g\n",
9428           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
9429     }
9430
9431     ret = orc_test_compare_output (p);
9432     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
9433       printf ("    compiled function:   COMPILE FAILED\n");
9434     } else if (!ret) {
9435       error = TRUE;
9436     } else if (!quiet) {
9437       printf ("    compiled function:   PASSED\n");
9438     }
9439
9440     if (benchmark) {
9441       printf ("    cycles (compiled):   %g\n",
9442           orc_test_performance_full (p, 0, NULL));
9443     }
9444
9445     orc_program_free (p);
9446   }
9447
9448   /* orc_subtract_s16_u8 */
9449   {
9450     OrcProgram *p = NULL;
9451     int ret;
9452
9453     if (!quiet)      printf ("orc_subtract_s16_u8:\n");
9454     p = orc_program_new ();
9455     orc_program_set_name (p, "orc_subtract_s16_u8");
9456     orc_program_set_backup_function (p, _backup_orc_subtract_s16_u8);
9457     orc_program_add_destination (p, 2, "d1");
9458     orc_program_add_source (p, 2, "s1");
9459     orc_program_add_source (p, 1, "s2");
9460     orc_program_add_temporary (p, 2, "t1");
9461
9462       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_D1, ORC_VAR_D1);
9463       orc_program_append_2 (p, "subw", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_T1, ORC_VAR_D1);
9464
9465     if (benchmark) {
9466       printf ("    cycles (emulate) :   %g\n",
9467           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
9468     }
9469
9470     ret = orc_test_compare_output_backup (p);
9471     if (!ret) {
9472       error = TRUE;
9473     } else if (!quiet) {
9474       printf ("    backup function  :   PASSED\n");
9475     }
9476
9477     if (benchmark) {
9478       printf ("    cycles (backup)  :   %g\n",
9479           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
9480     }
9481
9482     ret = orc_test_compare_output (p);
9483     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
9484       printf ("    compiled function:   COMPILE FAILED\n");
9485     } else if (!ret) {
9486       error = TRUE;
9487     } else if (!quiet) {
9488       printf ("    compiled function:   PASSED\n");
9489     }
9490
9491     if (benchmark) {
9492       printf ("    cycles (compiled):   %g\n",
9493           orc_test_performance_full (p, 0, NULL));
9494     }
9495
9496     orc_program_free (p);
9497   }
9498
9499   /* orc_multiply_and_add_s16_u8 */
9500   {
9501     OrcProgram *p = NULL;
9502     int ret;
9503
9504     if (!quiet)      printf ("orc_multiply_and_add_s16_u8:\n");
9505     p = orc_program_new ();
9506     orc_program_set_name (p, "orc_multiply_and_add_s16_u8");
9507     orc_program_set_backup_function (p, _backup_orc_multiply_and_add_s16_u8);
9508     orc_program_add_destination (p, 2, "d1");
9509     orc_program_add_source (p, 2, "s1");
9510     orc_program_add_source (p, 1, "s2");
9511     orc_program_add_temporary (p, 2, "t1");
9512
9513       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_D1, ORC_VAR_D1);
9514       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1);
9515       orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1);
9516
9517     if (benchmark) {
9518       printf ("    cycles (emulate) :   %g\n",
9519           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
9520     }
9521
9522     ret = orc_test_compare_output_backup (p);
9523     if (!ret) {
9524       error = TRUE;
9525     } else if (!quiet) {
9526       printf ("    backup function  :   PASSED\n");
9527     }
9528
9529     if (benchmark) {
9530       printf ("    cycles (backup)  :   %g\n",
9531           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
9532     }
9533
9534     ret = orc_test_compare_output (p);
9535     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
9536       printf ("    compiled function:   COMPILE FAILED\n");
9537     } else if (!ret) {
9538       error = TRUE;
9539     } else if (!quiet) {
9540       printf ("    compiled function:   PASSED\n");
9541     }
9542
9543     if (benchmark) {
9544       printf ("    cycles (compiled):   %g\n",
9545           orc_test_performance_full (p, 0, NULL));
9546     }
9547
9548     orc_program_free (p);
9549   }
9550
9551   /* orc_splat_s16_ns */
9552   {
9553     OrcProgram *p = NULL;
9554     int ret;
9555
9556     if (!quiet)      printf ("orc_splat_s16_ns:\n");
9557     p = orc_program_new ();
9558     orc_program_set_name (p, "orc_splat_s16_ns");
9559     orc_program_set_backup_function (p, _backup_orc_splat_s16_ns);
9560     orc_program_add_destination (p, 2, "d1");
9561     orc_program_add_parameter (p, 2, "p1");
9562
9563       orc_program_append_2 (p, "copyw", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1, ORC_VAR_D1);
9564
9565     if (benchmark) {
9566       printf ("    cycles (emulate) :   %g\n",
9567           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
9568     }
9569
9570     ret = orc_test_compare_output_backup (p);
9571     if (!ret) {
9572       error = TRUE;
9573     } else if (!quiet) {
9574       printf ("    backup function  :   PASSED\n");
9575     }
9576
9577     if (benchmark) {
9578       printf ("    cycles (backup)  :   %g\n",
9579           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
9580     }
9581
9582     ret = orc_test_compare_output (p);
9583     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
9584       printf ("    compiled function:   COMPILE FAILED\n");
9585     } else if (!ret) {
9586       error = TRUE;
9587     } else if (!quiet) {
9588       printf ("    compiled function:   PASSED\n");
9589     }
9590
9591     if (benchmark) {
9592       printf ("    cycles (compiled):   %g\n",
9593           orc_test_performance_full (p, 0, NULL));
9594     }
9595
9596     orc_program_free (p);
9597   }
9598
9599   /* orc_splat_s16_2d_4xn */
9600   {
9601     OrcProgram *p = NULL;
9602     int ret;
9603
9604     if (!quiet)      printf ("orc_splat_s16_2d_4xn:\n");
9605     p = orc_program_new ();
9606       orc_program_set_constant_n (p, 4);
9607       orc_program_set_2d (p);
9608     orc_program_set_name (p, "orc_splat_s16_2d_4xn");
9609     orc_program_set_backup_function (p, _backup_orc_splat_s16_2d_4xn);
9610     orc_program_add_destination (p, 2, "d1");
9611     orc_program_add_parameter (p, 2, "p1");
9612
9613       orc_program_append_2 (p, "copyw", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1, ORC_VAR_D1);
9614
9615     if (benchmark) {
9616       printf ("    cycles (emulate) :   %g\n",
9617           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
9618     }
9619
9620     ret = orc_test_compare_output_backup (p);
9621     if (!ret) {
9622       error = TRUE;
9623     } else if (!quiet) {
9624       printf ("    backup function  :   PASSED\n");
9625     }
9626
9627     if (benchmark) {
9628       printf ("    cycles (backup)  :   %g\n",
9629           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
9630     }
9631
9632     ret = orc_test_compare_output (p);
9633     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
9634       printf ("    compiled function:   COMPILE FAILED\n");
9635     } else if (!ret) {
9636       error = TRUE;
9637     } else if (!quiet) {
9638       printf ("    compiled function:   PASSED\n");
9639     }
9640
9641     if (benchmark) {
9642       printf ("    cycles (compiled):   %g\n",
9643           orc_test_performance_full (p, 0, NULL));
9644     }
9645
9646     orc_program_free (p);
9647   }
9648
9649   /* orc_splat_s16_2d_8xn */
9650   {
9651     OrcProgram *p = NULL;
9652     int ret;
9653
9654     if (!quiet)      printf ("orc_splat_s16_2d_8xn:\n");
9655     p = orc_program_new ();
9656       orc_program_set_constant_n (p, 8);
9657       orc_program_set_2d (p);
9658     orc_program_set_name (p, "orc_splat_s16_2d_8xn");
9659     orc_program_set_backup_function (p, _backup_orc_splat_s16_2d_8xn);
9660     orc_program_add_destination (p, 2, "d1");
9661     orc_program_add_parameter (p, 2, "p1");
9662
9663       orc_program_append_2 (p, "copyw", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1, ORC_VAR_D1);
9664
9665     if (benchmark) {
9666       printf ("    cycles (emulate) :   %g\n",
9667           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
9668     }
9669
9670     ret = orc_test_compare_output_backup (p);
9671     if (!ret) {
9672       error = TRUE;
9673     } else if (!quiet) {
9674       printf ("    backup function  :   PASSED\n");
9675     }
9676
9677     if (benchmark) {
9678       printf ("    cycles (backup)  :   %g\n",
9679           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
9680     }
9681
9682     ret = orc_test_compare_output (p);
9683     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
9684       printf ("    compiled function:   COMPILE FAILED\n");
9685     } else if (!ret) {
9686       error = TRUE;
9687     } else if (!quiet) {
9688       printf ("    compiled function:   PASSED\n");
9689     }
9690
9691     if (benchmark) {
9692       printf ("    cycles (compiled):   %g\n",
9693           orc_test_performance_full (p, 0, NULL));
9694     }
9695
9696     orc_program_free (p);
9697   }
9698
9699   /* orc_splat_s16_2d */
9700   {
9701     OrcProgram *p = NULL;
9702     int ret;
9703
9704     if (!quiet)      printf ("orc_splat_s16_2d:\n");
9705     p = orc_program_new ();
9706       orc_program_set_2d (p);
9707     orc_program_set_name (p, "orc_splat_s16_2d");
9708     orc_program_set_backup_function (p, _backup_orc_splat_s16_2d);
9709     orc_program_add_destination (p, 2, "d1");
9710     orc_program_add_parameter (p, 2, "p1");
9711
9712       orc_program_append_2 (p, "copyw", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1, ORC_VAR_D1);
9713
9714     if (benchmark) {
9715       printf ("    cycles (emulate) :   %g\n",
9716           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
9717     }
9718
9719     ret = orc_test_compare_output_backup (p);
9720     if (!ret) {
9721       error = TRUE;
9722     } else if (!quiet) {
9723       printf ("    backup function  :   PASSED\n");
9724     }
9725
9726     if (benchmark) {
9727       printf ("    cycles (backup)  :   %g\n",
9728           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
9729     }
9730
9731     ret = orc_test_compare_output (p);
9732     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
9733       printf ("    compiled function:   COMPILE FAILED\n");
9734     } else if (!ret) {
9735       error = TRUE;
9736     } else if (!quiet) {
9737       printf ("    compiled function:   PASSED\n");
9738     }
9739
9740     if (benchmark) {
9741       printf ("    cycles (compiled):   %g\n",
9742           orc_test_performance_full (p, 0, NULL));
9743     }
9744
9745     orc_program_free (p);
9746   }
9747
9748   /* orc_splat_u8_ns */
9749   {
9750     OrcProgram *p = NULL;
9751     int ret;
9752
9753     if (!quiet)      printf ("orc_splat_u8_ns:\n");
9754     p = orc_program_new ();
9755     orc_program_set_name (p, "orc_splat_u8_ns");
9756     orc_program_set_backup_function (p, _backup_orc_splat_u8_ns);
9757     orc_program_add_destination (p, 1, "d1");
9758     orc_program_add_parameter (p, 1, "p1");
9759
9760       orc_program_append_2 (p, "copyb", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1, ORC_VAR_D1);
9761
9762     if (benchmark) {
9763       printf ("    cycles (emulate) :   %g\n",
9764           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
9765     }
9766
9767     ret = orc_test_compare_output_backup (p);
9768     if (!ret) {
9769       error = TRUE;
9770     } else if (!quiet) {
9771       printf ("    backup function  :   PASSED\n");
9772     }
9773
9774     if (benchmark) {
9775       printf ("    cycles (backup)  :   %g\n",
9776           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
9777     }
9778
9779     ret = orc_test_compare_output (p);
9780     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
9781       printf ("    compiled function:   COMPILE FAILED\n");
9782     } else if (!ret) {
9783       error = TRUE;
9784     } else if (!quiet) {
9785       printf ("    compiled function:   PASSED\n");
9786     }
9787
9788     if (benchmark) {
9789       printf ("    cycles (compiled):   %g\n",
9790           orc_test_performance_full (p, 0, NULL));
9791     }
9792
9793     orc_program_free (p);
9794   }
9795
9796   /* orc_splat_u8_2d */
9797   {
9798     OrcProgram *p = NULL;
9799     int ret;
9800
9801     if (!quiet)      printf ("orc_splat_u8_2d:\n");
9802     p = orc_program_new ();
9803       orc_program_set_2d (p);
9804     orc_program_set_name (p, "orc_splat_u8_2d");
9805     orc_program_set_backup_function (p, _backup_orc_splat_u8_2d);
9806     orc_program_add_destination (p, 1, "d1");
9807     orc_program_add_parameter (p, 1, "p1");
9808
9809       orc_program_append_2 (p, "copyb", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1, ORC_VAR_D1);
9810
9811     if (benchmark) {
9812       printf ("    cycles (emulate) :   %g\n",
9813           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
9814     }
9815
9816     ret = orc_test_compare_output_backup (p);
9817     if (!ret) {
9818       error = TRUE;
9819     } else if (!quiet) {
9820       printf ("    backup function  :   PASSED\n");
9821     }
9822
9823     if (benchmark) {
9824       printf ("    cycles (backup)  :   %g\n",
9825           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
9826     }
9827
9828     ret = orc_test_compare_output (p);
9829     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
9830       printf ("    compiled function:   COMPILE FAILED\n");
9831     } else if (!ret) {
9832       error = TRUE;
9833     } else if (!quiet) {
9834       printf ("    compiled function:   PASSED\n");
9835     }
9836
9837     if (benchmark) {
9838       printf ("    cycles (compiled):   %g\n",
9839           orc_test_performance_full (p, 0, NULL));
9840     }
9841
9842     orc_program_free (p);
9843   }
9844
9845   /* orc_average_u8 */
9846   {
9847     OrcProgram *p = NULL;
9848     int ret;
9849
9850     if (!quiet)      printf ("orc_average_u8:\n");
9851     p = orc_program_new ();
9852     orc_program_set_name (p, "orc_average_u8");
9853     orc_program_set_backup_function (p, _backup_orc_average_u8);
9854     orc_program_add_destination (p, 1, "d1");
9855     orc_program_add_source (p, 1, "s1");
9856     orc_program_add_source (p, 1, "s2");
9857
9858       orc_program_append_2 (p, "avgub", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_S2, ORC_VAR_D1);
9859
9860     if (benchmark) {
9861       printf ("    cycles (emulate) :   %g\n",
9862           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
9863     }
9864
9865     ret = orc_test_compare_output_backup (p);
9866     if (!ret) {
9867       error = TRUE;
9868     } else if (!quiet) {
9869       printf ("    backup function  :   PASSED\n");
9870     }
9871
9872     if (benchmark) {
9873       printf ("    cycles (backup)  :   %g\n",
9874           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
9875     }
9876
9877     ret = orc_test_compare_output (p);
9878     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
9879       printf ("    compiled function:   COMPILE FAILED\n");
9880     } else if (!ret) {
9881       error = TRUE;
9882     } else if (!quiet) {
9883       printf ("    compiled function:   PASSED\n");
9884     }
9885
9886     if (benchmark) {
9887       printf ("    cycles (compiled):   %g\n",
9888           orc_test_performance_full (p, 0, NULL));
9889     }
9890
9891     orc_program_free (p);
9892   }
9893
9894   /* orc_rrshift6_add_s16_2d */
9895   {
9896     OrcProgram *p = NULL;
9897     int ret;
9898
9899     if (!quiet)      printf ("orc_rrshift6_add_s16_2d:\n");
9900     p = orc_program_new ();
9901       orc_program_set_2d (p);
9902     orc_program_set_name (p, "orc_rrshift6_add_s16_2d");
9903     orc_program_set_backup_function (p, _backup_orc_rrshift6_add_s16_2d);
9904     orc_program_add_destination (p, 1, "d1");
9905     orc_program_add_source (p, 2, "s1");
9906     orc_program_add_source (p, 2, "s2");
9907       orc_program_add_constant (p, 4, 0x00000020, "c1");
9908       orc_program_add_constant (p, 4, 0x00000006, "c2");
9909     orc_program_add_temporary (p, 2, "t1");
9910
9911       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_C1, ORC_VAR_D1);
9912       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2, ORC_VAR_D1);
9913       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_T1, ORC_VAR_D1);
9914       orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
9915
9916     if (benchmark) {
9917       printf ("    cycles (emulate) :   %g\n",
9918           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
9919     }
9920
9921     ret = orc_test_compare_output_backup (p);
9922     if (!ret) {
9923       error = TRUE;
9924     } else if (!quiet) {
9925       printf ("    backup function  :   PASSED\n");
9926     }
9927
9928     if (benchmark) {
9929       printf ("    cycles (backup)  :   %g\n",
9930           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
9931     }
9932
9933     ret = orc_test_compare_output (p);
9934     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
9935       printf ("    compiled function:   COMPILE FAILED\n");
9936     } else if (!ret) {
9937       error = TRUE;
9938     } else if (!quiet) {
9939       printf ("    compiled function:   PASSED\n");
9940     }
9941
9942     if (benchmark) {
9943       printf ("    cycles (compiled):   %g\n",
9944           orc_test_performance_full (p, 0, NULL));
9945     }
9946
9947     orc_program_free (p);
9948   }
9949
9950   /* orc_rrshift6_sub_s16_2d */
9951   {
9952     OrcProgram *p = NULL;
9953     int ret;
9954
9955     if (!quiet)      printf ("orc_rrshift6_sub_s16_2d:\n");
9956     p = orc_program_new ();
9957       orc_program_set_2d (p);
9958     orc_program_set_name (p, "orc_rrshift6_sub_s16_2d");
9959     orc_program_set_backup_function (p, _backup_orc_rrshift6_sub_s16_2d);
9960     orc_program_add_destination (p, 2, "d1");
9961     orc_program_add_destination (p, 2, "d2");
9962       orc_program_add_constant (p, 4, 0x00001fe0, "c1");
9963       orc_program_add_constant (p, 4, 0x00000006, "c2");
9964     orc_program_add_temporary (p, 2, "t1");
9965
9966       orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_D2, ORC_VAR_C1, ORC_VAR_D1);
9967       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2, ORC_VAR_D1);
9968       orc_program_append_2 (p, "copyw", 0, ORC_VAR_D2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
9969       orc_program_append_2 (p, "subw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1);
9970
9971     if (benchmark) {
9972       printf ("    cycles (emulate) :   %g\n",
9973           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
9974     }
9975
9976     ret = orc_test_compare_output_backup (p);
9977     if (!ret) {
9978       error = TRUE;
9979     } else if (!quiet) {
9980       printf ("    backup function  :   PASSED\n");
9981     }
9982
9983     if (benchmark) {
9984       printf ("    cycles (backup)  :   %g\n",
9985           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
9986     }
9987
9988     ret = orc_test_compare_output (p);
9989     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
9990       printf ("    compiled function:   COMPILE FAILED\n");
9991     } else if (!ret) {
9992       error = TRUE;
9993     } else if (!quiet) {
9994       printf ("    compiled function:   PASSED\n");
9995     }
9996
9997     if (benchmark) {
9998       printf ("    cycles (compiled):   %g\n",
9999           orc_test_performance_full (p, 0, NULL));
10000     }
10001
10002     orc_program_free (p);
10003   }
10004
10005   /* orc_rrshift6_s16_ip_2d */
10006   {
10007     OrcProgram *p = NULL;
10008     int ret;
10009
10010     if (!quiet)      printf ("orc_rrshift6_s16_ip_2d:\n");
10011     p = orc_program_new ();
10012       orc_program_set_2d (p);
10013     orc_program_set_name (p, "orc_rrshift6_s16_ip_2d");
10014     orc_program_set_backup_function (p, _backup_orc_rrshift6_s16_ip_2d);
10015     orc_program_add_destination (p, 2, "d1");
10016       orc_program_add_constant (p, 4, 0x00001fe0, "c1");
10017       orc_program_add_constant (p, 4, 0x00000006, "c2");
10018     orc_program_add_temporary (p, 2, "t1");
10019
10020       orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_C1, ORC_VAR_D1);
10021       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C2, ORC_VAR_D1);
10022
10023     if (benchmark) {
10024       printf ("    cycles (emulate) :   %g\n",
10025           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
10026     }
10027
10028     ret = orc_test_compare_output_backup (p);
10029     if (!ret) {
10030       error = TRUE;
10031     } else if (!quiet) {
10032       printf ("    backup function  :   PASSED\n");
10033     }
10034
10035     if (benchmark) {
10036       printf ("    cycles (backup)  :   %g\n",
10037           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
10038     }
10039
10040     ret = orc_test_compare_output (p);
10041     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
10042       printf ("    compiled function:   COMPILE FAILED\n");
10043     } else if (!ret) {
10044       error = TRUE;
10045     } else if (!quiet) {
10046       printf ("    compiled function:   PASSED\n");
10047     }
10048
10049     if (benchmark) {
10050       printf ("    cycles (compiled):   %g\n",
10051           orc_test_performance_full (p, 0, NULL));
10052     }
10053
10054     orc_program_free (p);
10055   }
10056
10057   /* orc_rrshift6_s16_ip */
10058   {
10059     OrcProgram *p = NULL;
10060     int ret;
10061
10062     if (!quiet)      printf ("orc_rrshift6_s16_ip:\n");
10063     p = orc_program_new ();
10064     orc_program_set_name (p, "orc_rrshift6_s16_ip");
10065     orc_program_set_backup_function (p, _backup_orc_rrshift6_s16_ip);
10066     orc_program_add_destination (p, 2, "d1");
10067       orc_program_add_constant (p, 4, 0x00001fe0, "c1");
10068       orc_program_add_constant (p, 4, 0x00000006, "c2");
10069     orc_program_add_temporary (p, 2, "t1");
10070
10071       orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_C1, ORC_VAR_D1);
10072       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C2, ORC_VAR_D1);
10073
10074     if (benchmark) {
10075       printf ("    cycles (emulate) :   %g\n",
10076           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
10077     }
10078
10079     ret = orc_test_compare_output_backup (p);
10080     if (!ret) {
10081       error = TRUE;
10082     } else if (!quiet) {
10083       printf ("    backup function  :   PASSED\n");
10084     }
10085
10086     if (benchmark) {
10087       printf ("    cycles (backup)  :   %g\n",
10088           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
10089     }
10090
10091     ret = orc_test_compare_output (p);
10092     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
10093       printf ("    compiled function:   COMPILE FAILED\n");
10094     } else if (!ret) {
10095       error = TRUE;
10096     } else if (!quiet) {
10097       printf ("    compiled function:   PASSED\n");
10098     }
10099
10100     if (benchmark) {
10101       printf ("    cycles (compiled):   %g\n",
10102           orc_test_performance_full (p, 0, NULL));
10103     }
10104
10105     orc_program_free (p);
10106   }
10107
10108   /* orc_unpack_yuyv_y */
10109   {
10110     OrcProgram *p = NULL;
10111     int ret;
10112
10113     if (!quiet)      printf ("orc_unpack_yuyv_y:\n");
10114     p = orc_program_new ();
10115     orc_program_set_name (p, "orc_unpack_yuyv_y");
10116     orc_program_set_backup_function (p, _backup_orc_unpack_yuyv_y);
10117     orc_program_add_destination (p, 1, "d1");
10118     orc_program_add_source (p, 2, "s1");
10119
10120       orc_program_append_2 (p, "select0wb", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
10121
10122     if (benchmark) {
10123       printf ("    cycles (emulate) :   %g\n",
10124           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
10125     }
10126
10127     ret = orc_test_compare_output_backup (p);
10128     if (!ret) {
10129       error = TRUE;
10130     } else if (!quiet) {
10131       printf ("    backup function  :   PASSED\n");
10132     }
10133
10134     if (benchmark) {
10135       printf ("    cycles (backup)  :   %g\n",
10136           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
10137     }
10138
10139     ret = orc_test_compare_output (p);
10140     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
10141       printf ("    compiled function:   COMPILE FAILED\n");
10142     } else if (!ret) {
10143       error = TRUE;
10144     } else if (!quiet) {
10145       printf ("    compiled function:   PASSED\n");
10146     }
10147
10148     if (benchmark) {
10149       printf ("    cycles (compiled):   %g\n",
10150           orc_test_performance_full (p, 0, NULL));
10151     }
10152
10153     orc_program_free (p);
10154   }
10155
10156   /* orc_unpack_yuyv_u */
10157   {
10158     OrcProgram *p = NULL;
10159     int ret;
10160
10161     if (!quiet)      printf ("orc_unpack_yuyv_u:\n");
10162     p = orc_program_new ();
10163     orc_program_set_name (p, "orc_unpack_yuyv_u");
10164     orc_program_set_backup_function (p, _backup_orc_unpack_yuyv_u);
10165     orc_program_add_destination (p, 1, "d1");
10166     orc_program_add_source (p, 4, "s1");
10167     orc_program_add_temporary (p, 2, "t1");
10168
10169       orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
10170       orc_program_append_2 (p, "select1wb", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
10171
10172     if (benchmark) {
10173       printf ("    cycles (emulate) :   %g\n",
10174           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
10175     }
10176
10177     ret = orc_test_compare_output_backup (p);
10178     if (!ret) {
10179       error = TRUE;
10180     } else if (!quiet) {
10181       printf ("    backup function  :   PASSED\n");
10182     }
10183
10184     if (benchmark) {
10185       printf ("    cycles (backup)  :   %g\n",
10186           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
10187     }
10188
10189     ret = orc_test_compare_output (p);
10190     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
10191       printf ("    compiled function:   COMPILE FAILED\n");
10192     } else if (!ret) {
10193       error = TRUE;
10194     } else if (!quiet) {
10195       printf ("    compiled function:   PASSED\n");
10196     }
10197
10198     if (benchmark) {
10199       printf ("    cycles (compiled):   %g\n",
10200           orc_test_performance_full (p, 0, NULL));
10201     }
10202
10203     orc_program_free (p);
10204   }
10205
10206   /* orc_unpack_yuyv_v */
10207   {
10208     OrcProgram *p = NULL;
10209     int ret;
10210
10211     if (!quiet)      printf ("orc_unpack_yuyv_v:\n");
10212     p = orc_program_new ();
10213     orc_program_set_name (p, "orc_unpack_yuyv_v");
10214     orc_program_set_backup_function (p, _backup_orc_unpack_yuyv_v);
10215     orc_program_add_destination (p, 1, "d1");
10216     orc_program_add_source (p, 4, "s1");
10217     orc_program_add_temporary (p, 2, "t1");
10218
10219       orc_program_append_2 (p, "select1lw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
10220       orc_program_append_2 (p, "select1wb", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
10221
10222     if (benchmark) {
10223       printf ("    cycles (emulate) :   %g\n",
10224           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
10225     }
10226
10227     ret = orc_test_compare_output_backup (p);
10228     if (!ret) {
10229       error = TRUE;
10230     } else if (!quiet) {
10231       printf ("    backup function  :   PASSED\n");
10232     }
10233
10234     if (benchmark) {
10235       printf ("    cycles (backup)  :   %g\n",
10236           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
10237     }
10238
10239     ret = orc_test_compare_output (p);
10240     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
10241       printf ("    compiled function:   COMPILE FAILED\n");
10242     } else if (!ret) {
10243       error = TRUE;
10244     } else if (!quiet) {
10245       printf ("    compiled function:   PASSED\n");
10246     }
10247
10248     if (benchmark) {
10249       printf ("    cycles (compiled):   %g\n",
10250           orc_test_performance_full (p, 0, NULL));
10251     }
10252
10253     orc_program_free (p);
10254   }
10255
10256   /* orc_packyuyv */
10257   {
10258     OrcProgram *p = NULL;
10259     int ret;
10260
10261     if (!quiet)      printf ("orc_packyuyv:\n");
10262     p = orc_program_new ();
10263     orc_program_set_name (p, "orc_packyuyv");
10264     orc_program_set_backup_function (p, _backup_orc_packyuyv);
10265     orc_program_add_destination (p, 4, "d1");
10266     orc_program_add_source (p, 2, "s1");
10267     orc_program_add_source (p, 1, "s2");
10268     orc_program_add_source (p, 1, "s3");
10269     orc_program_add_temporary (p, 1, "t1");
10270     orc_program_add_temporary (p, 1, "t2");
10271     orc_program_add_temporary (p, 2, "t3");
10272     orc_program_add_temporary (p, 2, "t4");
10273     orc_program_add_temporary (p, 2, "t5");
10274
10275       orc_program_append_2 (p, "copyw", 0, ORC_VAR_T5, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
10276       orc_program_append_2 (p, "select0wb", 0, ORC_VAR_T1, ORC_VAR_T5, ORC_VAR_D1, ORC_VAR_D1);
10277       orc_program_append_2 (p, "select1wb", 0, ORC_VAR_T2, ORC_VAR_T5, ORC_VAR_D1, ORC_VAR_D1);
10278       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_D1);
10279       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_S3, ORC_VAR_D1);
10280       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T4, ORC_VAR_D1);
10281
10282     if (benchmark) {
10283       printf ("    cycles (emulate) :   %g\n",
10284           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
10285     }
10286
10287     ret = orc_test_compare_output_backup (p);
10288     if (!ret) {
10289       error = TRUE;
10290     } else if (!quiet) {
10291       printf ("    backup function  :   PASSED\n");
10292     }
10293
10294     if (benchmark) {
10295       printf ("    cycles (backup)  :   %g\n",
10296           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
10297     }
10298
10299     ret = orc_test_compare_output (p);
10300     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
10301       printf ("    compiled function:   COMPILE FAILED\n");
10302     } else if (!ret) {
10303       error = TRUE;
10304     } else if (!quiet) {
10305       printf ("    compiled function:   PASSED\n");
10306     }
10307
10308     if (benchmark) {
10309       printf ("    cycles (compiled):   %g\n",
10310           orc_test_performance_full (p, 0, NULL));
10311     }
10312
10313     orc_program_free (p);
10314   }
10315
10316   /* orc_unpack_uyvy_y */
10317   {
10318     OrcProgram *p = NULL;
10319     int ret;
10320
10321     if (!quiet)      printf ("orc_unpack_uyvy_y:\n");
10322     p = orc_program_new ();
10323     orc_program_set_name (p, "orc_unpack_uyvy_y");
10324     orc_program_set_backup_function (p, _backup_orc_unpack_uyvy_y);
10325     orc_program_add_destination (p, 1, "d1");
10326     orc_program_add_source (p, 2, "s1");
10327
10328       orc_program_append_2 (p, "select1wb", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
10329
10330     if (benchmark) {
10331       printf ("    cycles (emulate) :   %g\n",
10332           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
10333     }
10334
10335     ret = orc_test_compare_output_backup (p);
10336     if (!ret) {
10337       error = TRUE;
10338     } else if (!quiet) {
10339       printf ("    backup function  :   PASSED\n");
10340     }
10341
10342     if (benchmark) {
10343       printf ("    cycles (backup)  :   %g\n",
10344           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
10345     }
10346
10347     ret = orc_test_compare_output (p);
10348     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
10349       printf ("    compiled function:   COMPILE FAILED\n");
10350     } else if (!ret) {
10351       error = TRUE;
10352     } else if (!quiet) {
10353       printf ("    compiled function:   PASSED\n");
10354     }
10355
10356     if (benchmark) {
10357       printf ("    cycles (compiled):   %g\n",
10358           orc_test_performance_full (p, 0, NULL));
10359     }
10360
10361     orc_program_free (p);
10362   }
10363
10364   /* orc_unpack_uyvy_u */
10365   {
10366     OrcProgram *p = NULL;
10367     int ret;
10368
10369     if (!quiet)      printf ("orc_unpack_uyvy_u:\n");
10370     p = orc_program_new ();
10371     orc_program_set_name (p, "orc_unpack_uyvy_u");
10372     orc_program_set_backup_function (p, _backup_orc_unpack_uyvy_u);
10373     orc_program_add_destination (p, 1, "d1");
10374     orc_program_add_source (p, 4, "s1");
10375     orc_program_add_temporary (p, 2, "t1");
10376
10377       orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
10378       orc_program_append_2 (p, "select0wb", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
10379
10380     if (benchmark) {
10381       printf ("    cycles (emulate) :   %g\n",
10382           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
10383     }
10384
10385     ret = orc_test_compare_output_backup (p);
10386     if (!ret) {
10387       error = TRUE;
10388     } else if (!quiet) {
10389       printf ("    backup function  :   PASSED\n");
10390     }
10391
10392     if (benchmark) {
10393       printf ("    cycles (backup)  :   %g\n",
10394           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
10395     }
10396
10397     ret = orc_test_compare_output (p);
10398     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
10399       printf ("    compiled function:   COMPILE FAILED\n");
10400     } else if (!ret) {
10401       error = TRUE;
10402     } else if (!quiet) {
10403       printf ("    compiled function:   PASSED\n");
10404     }
10405
10406     if (benchmark) {
10407       printf ("    cycles (compiled):   %g\n",
10408           orc_test_performance_full (p, 0, NULL));
10409     }
10410
10411     orc_program_free (p);
10412   }
10413
10414   /* orc_unpack_uyvy_v */
10415   {
10416     OrcProgram *p = NULL;
10417     int ret;
10418
10419     if (!quiet)      printf ("orc_unpack_uyvy_v:\n");
10420     p = orc_program_new ();
10421     orc_program_set_name (p, "orc_unpack_uyvy_v");
10422     orc_program_set_backup_function (p, _backup_orc_unpack_uyvy_v);
10423     orc_program_add_destination (p, 1, "d1");
10424     orc_program_add_source (p, 4, "s1");
10425     orc_program_add_temporary (p, 2, "t1");
10426
10427       orc_program_append_2 (p, "select1lw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
10428       orc_program_append_2 (p, "select0wb", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
10429
10430     if (benchmark) {
10431       printf ("    cycles (emulate) :   %g\n",
10432           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
10433     }
10434
10435     ret = orc_test_compare_output_backup (p);
10436     if (!ret) {
10437       error = TRUE;
10438     } else if (!quiet) {
10439       printf ("    backup function  :   PASSED\n");
10440     }
10441
10442     if (benchmark) {
10443       printf ("    cycles (backup)  :   %g\n",
10444           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
10445     }
10446
10447     ret = orc_test_compare_output (p);
10448     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
10449       printf ("    compiled function:   COMPILE FAILED\n");
10450     } else if (!ret) {
10451       error = TRUE;
10452     } else if (!quiet) {
10453       printf ("    compiled function:   PASSED\n");
10454     }
10455
10456     if (benchmark) {
10457       printf ("    cycles (compiled):   %g\n",
10458           orc_test_performance_full (p, 0, NULL));
10459     }
10460
10461     orc_program_free (p);
10462   }
10463
10464   /* orc_interleave2_s16 */
10465   {
10466     OrcProgram *p = NULL;
10467     int ret;
10468
10469     if (!quiet)      printf ("orc_interleave2_s16:\n");
10470     p = orc_program_new ();
10471     orc_program_set_name (p, "orc_interleave2_s16");
10472     orc_program_set_backup_function (p, _backup_orc_interleave2_s16);
10473     orc_program_add_destination (p, 4, "d1");
10474     orc_program_add_source (p, 2, "s1");
10475     orc_program_add_source (p, 2, "s2");
10476
10477       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_S2, ORC_VAR_D1);
10478
10479     if (benchmark) {
10480       printf ("    cycles (emulate) :   %g\n",
10481           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
10482     }
10483
10484     ret = orc_test_compare_output_backup (p);
10485     if (!ret) {
10486       error = TRUE;
10487     } else if (!quiet) {
10488       printf ("    backup function  :   PASSED\n");
10489     }
10490
10491     if (benchmark) {
10492       printf ("    cycles (backup)  :   %g\n",
10493           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
10494     }
10495
10496     ret = orc_test_compare_output (p);
10497     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
10498       printf ("    compiled function:   COMPILE FAILED\n");
10499     } else if (!ret) {
10500       error = TRUE;
10501     } else if (!quiet) {
10502       printf ("    compiled function:   PASSED\n");
10503     }
10504
10505     if (benchmark) {
10506       printf ("    cycles (compiled):   %g\n",
10507           orc_test_performance_full (p, 0, NULL));
10508     }
10509
10510     orc_program_free (p);
10511   }
10512
10513   /* orc_interleave2_rrshift1_s16 */
10514   {
10515     OrcProgram *p = NULL;
10516     int ret;
10517
10518     if (!quiet)      printf ("orc_interleave2_rrshift1_s16:\n");
10519     p = orc_program_new ();
10520     orc_program_set_name (p, "orc_interleave2_rrshift1_s16");
10521     orc_program_set_backup_function (p, _backup_orc_interleave2_rrshift1_s16);
10522     orc_program_add_destination (p, 4, "d1");
10523     orc_program_add_source (p, 2, "s1");
10524     orc_program_add_source (p, 2, "s2");
10525       orc_program_add_constant (p, 4, 0x00000001, "c1");
10526     orc_program_add_temporary (p, 2, "t1");
10527     orc_program_add_temporary (p, 2, "t2");
10528
10529       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_C1, ORC_VAR_D1);
10530       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
10531       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_C1, ORC_VAR_D1);
10532       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_D1);
10533       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1);
10534
10535     if (benchmark) {
10536       printf ("    cycles (emulate) :   %g\n",
10537           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
10538     }
10539
10540     ret = orc_test_compare_output_backup (p);
10541     if (!ret) {
10542       error = TRUE;
10543     } else if (!quiet) {
10544       printf ("    backup function  :   PASSED\n");
10545     }
10546
10547     if (benchmark) {
10548       printf ("    cycles (backup)  :   %g\n",
10549           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
10550     }
10551
10552     ret = orc_test_compare_output (p);
10553     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
10554       printf ("    compiled function:   COMPILE FAILED\n");
10555     } else if (!ret) {
10556       error = TRUE;
10557     } else if (!quiet) {
10558       printf ("    compiled function:   PASSED\n");
10559     }
10560
10561     if (benchmark) {
10562       printf ("    cycles (compiled):   %g\n",
10563           orc_test_performance_full (p, 0, NULL));
10564     }
10565
10566     orc_program_free (p);
10567   }
10568
10569   /* orc_deinterleave2_s16 */
10570   {
10571     OrcProgram *p = NULL;
10572     int ret;
10573
10574     if (!quiet)      printf ("orc_deinterleave2_s16:\n");
10575     p = orc_program_new ();
10576     orc_program_set_name (p, "orc_deinterleave2_s16");
10577     orc_program_set_backup_function (p, _backup_orc_deinterleave2_s16);
10578     orc_program_add_destination (p, 2, "d1");
10579     orc_program_add_destination (p, 2, "d2");
10580     orc_program_add_source (p, 4, "s1");
10581     orc_program_add_temporary (p, 4, "t1");
10582
10583       orc_program_append_2 (p, "copyl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
10584       orc_program_append_2 (p, "select0lw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
10585       orc_program_append_2 (p, "select1lw", 0, ORC_VAR_D2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
10586
10587     if (benchmark) {
10588       printf ("    cycles (emulate) :   %g\n",
10589           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
10590     }
10591
10592     ret = orc_test_compare_output_backup (p);
10593     if (!ret) {
10594       error = TRUE;
10595     } else if (!quiet) {
10596       printf ("    backup function  :   PASSED\n");
10597     }
10598
10599     if (benchmark) {
10600       printf ("    cycles (backup)  :   %g\n",
10601           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
10602     }
10603
10604     ret = orc_test_compare_output (p);
10605     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
10606       printf ("    compiled function:   COMPILE FAILED\n");
10607     } else if (!ret) {
10608       error = TRUE;
10609     } else if (!quiet) {
10610       printf ("    compiled function:   PASSED\n");
10611     }
10612
10613     if (benchmark) {
10614       printf ("    cycles (compiled):   %g\n",
10615           orc_test_performance_full (p, 0, NULL));
10616     }
10617
10618     orc_program_free (p);
10619   }
10620
10621   /* orc_deinterleave2_lshift1_s16 */
10622   {
10623     OrcProgram *p = NULL;
10624     int ret;
10625
10626     if (!quiet)      printf ("orc_deinterleave2_lshift1_s16:\n");
10627     p = orc_program_new ();
10628     orc_program_set_name (p, "orc_deinterleave2_lshift1_s16");
10629     orc_program_set_backup_function (p, _backup_orc_deinterleave2_lshift1_s16);
10630     orc_program_add_destination (p, 2, "d1");
10631     orc_program_add_destination (p, 2, "d2");
10632     orc_program_add_source (p, 4, "s1");
10633       orc_program_add_constant (p, 4, 0x00000001, "c1");
10634     orc_program_add_temporary (p, 4, "t1");
10635     orc_program_add_temporary (p, 2, "t2");
10636     orc_program_add_temporary (p, 2, "t3");
10637
10638       orc_program_append_2 (p, "copyl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
10639       orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
10640       orc_program_append_2 (p, "shlw", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_D1);
10641       orc_program_append_2 (p, "select1lw", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
10642       orc_program_append_2 (p, "shlw", 0, ORC_VAR_D2, ORC_VAR_T3, ORC_VAR_C1, ORC_VAR_D1);
10643
10644     if (benchmark) {
10645       printf ("    cycles (emulate) :   %g\n",
10646           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
10647     }
10648
10649     ret = orc_test_compare_output_backup (p);
10650     if (!ret) {
10651       error = TRUE;
10652     } else if (!quiet) {
10653       printf ("    backup function  :   PASSED\n");
10654     }
10655
10656     if (benchmark) {
10657       printf ("    cycles (backup)  :   %g\n",
10658           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
10659     }
10660
10661     ret = orc_test_compare_output (p);
10662     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
10663       printf ("    compiled function:   COMPILE FAILED\n");
10664     } else if (!ret) {
10665       error = TRUE;
10666     } else if (!quiet) {
10667       printf ("    compiled function:   PASSED\n");
10668     }
10669
10670     if (benchmark) {
10671       printf ("    cycles (compiled):   %g\n",
10672           orc_test_performance_full (p, 0, NULL));
10673     }
10674
10675     orc_program_free (p);
10676   }
10677
10678   /* orc_haar_deint_lshift1_split_s16 */
10679   {
10680     OrcProgram *p = NULL;
10681     int ret;
10682
10683     if (!quiet)      printf ("orc_haar_deint_lshift1_split_s16:\n");
10684     p = orc_program_new ();
10685     orc_program_set_name (p, "orc_haar_deint_lshift1_split_s16");
10686     orc_program_set_backup_function (p, _backup_orc_haar_deint_lshift1_split_s16);
10687     orc_program_add_destination (p, 2, "d1");
10688     orc_program_add_destination (p, 2, "d2");
10689     orc_program_add_source (p, 4, "s1");
10690       orc_program_add_constant (p, 4, 0x00000001, "c1");
10691       orc_program_add_constant (p, 4, 0x00000000, "c2");
10692     orc_program_add_temporary (p, 2, "t1");
10693     orc_program_add_temporary (p, 2, "t2");
10694     orc_program_add_temporary (p, 4, "t3");
10695
10696       orc_program_append_2 (p, "copyl", 0, ORC_VAR_T3, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
10697       orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_D1, ORC_VAR_D1);
10698       orc_program_append_2 (p, "select1lw", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_D1, ORC_VAR_D1);
10699       orc_program_append_2 (p, "shlw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
10700       orc_program_append_2 (p, "shlw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_D1);
10701       orc_program_append_2 (p, "subw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1);
10702       orc_program_append_2 (p, "copyw", 0, ORC_VAR_D2, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
10703       orc_program_append_2 (p, "avgsw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C2, ORC_VAR_D1);
10704       orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1);
10705
10706     if (benchmark) {
10707       printf ("    cycles (emulate) :   %g\n",
10708           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
10709     }
10710
10711     ret = orc_test_compare_output_backup (p);
10712     if (!ret) {
10713       error = TRUE;
10714     } else if (!quiet) {
10715       printf ("    backup function  :   PASSED\n");
10716     }
10717
10718     if (benchmark) {
10719       printf ("    cycles (backup)  :   %g\n",
10720           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
10721     }
10722
10723     ret = orc_test_compare_output (p);
10724     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
10725       printf ("    compiled function:   COMPILE FAILED\n");
10726     } else if (!ret) {
10727       error = TRUE;
10728     } else if (!quiet) {
10729       printf ("    compiled function:   PASSED\n");
10730     }
10731
10732     if (benchmark) {
10733       printf ("    cycles (compiled):   %g\n",
10734           orc_test_performance_full (p, 0, NULL));
10735     }
10736
10737     orc_program_free (p);
10738   }
10739
10740   /* orc_haar_deint_split_s16 */
10741   {
10742     OrcProgram *p = NULL;
10743     int ret;
10744
10745     if (!quiet)      printf ("orc_haar_deint_split_s16:\n");
10746     p = orc_program_new ();
10747     orc_program_set_name (p, "orc_haar_deint_split_s16");
10748     orc_program_set_backup_function (p, _backup_orc_haar_deint_split_s16);
10749     orc_program_add_destination (p, 2, "d1");
10750     orc_program_add_destination (p, 2, "d2");
10751     orc_program_add_source (p, 4, "s1");
10752       orc_program_add_constant (p, 4, 0x00000000, "c1");
10753     orc_program_add_temporary (p, 2, "t1");
10754     orc_program_add_temporary (p, 2, "t2");
10755     orc_program_add_temporary (p, 4, "t3");
10756
10757       orc_program_append_2 (p, "copyl", 0, ORC_VAR_T3, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
10758       orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_D1, ORC_VAR_D1);
10759       orc_program_append_2 (p, "select1lw", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_D1, ORC_VAR_D1);
10760       orc_program_append_2 (p, "subw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1);
10761       orc_program_append_2 (p, "copyw", 0, ORC_VAR_D2, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
10762       orc_program_append_2 (p, "avgsw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_D1);
10763       orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1);
10764
10765     if (benchmark) {
10766       printf ("    cycles (emulate) :   %g\n",
10767           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
10768     }
10769
10770     ret = orc_test_compare_output_backup (p);
10771     if (!ret) {
10772       error = TRUE;
10773     } else if (!quiet) {
10774       printf ("    backup function  :   PASSED\n");
10775     }
10776
10777     if (benchmark) {
10778       printf ("    cycles (backup)  :   %g\n",
10779           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
10780     }
10781
10782     ret = orc_test_compare_output (p);
10783     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
10784       printf ("    compiled function:   COMPILE FAILED\n");
10785     } else if (!ret) {
10786       error = TRUE;
10787     } else if (!quiet) {
10788       printf ("    compiled function:   PASSED\n");
10789     }
10790
10791     if (benchmark) {
10792       printf ("    cycles (compiled):   %g\n",
10793           orc_test_performance_full (p, 0, NULL));
10794     }
10795
10796     orc_program_free (p);
10797   }
10798
10799   /* orc_haar_split_s16_lo */
10800   {
10801     OrcProgram *p = NULL;
10802     int ret;
10803
10804     if (!quiet)      printf ("orc_haar_split_s16_lo:\n");
10805     p = orc_program_new ();
10806     orc_program_set_name (p, "orc_haar_split_s16_lo");
10807     orc_program_set_backup_function (p, _backup_orc_haar_split_s16_lo);
10808     orc_program_add_destination (p, 2, "d1");
10809     orc_program_add_source (p, 2, "s1");
10810     orc_program_add_source (p, 2, "s2");
10811       orc_program_add_constant (p, 4, 0x00000000, "c1");
10812     orc_program_add_temporary (p, 2, "t1");
10813     orc_program_add_temporary (p, 2, "t2");
10814
10815       orc_program_append_2 (p, "copyw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
10816       orc_program_append_2 (p, "subw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_T1, ORC_VAR_D1);
10817       orc_program_append_2 (p, "avgsw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_D1);
10818       orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1);
10819
10820     if (benchmark) {
10821       printf ("    cycles (emulate) :   %g\n",
10822           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
10823     }
10824
10825     ret = orc_test_compare_output_backup (p);
10826     if (!ret) {
10827       error = TRUE;
10828     } else if (!quiet) {
10829       printf ("    backup function  :   PASSED\n");
10830     }
10831
10832     if (benchmark) {
10833       printf ("    cycles (backup)  :   %g\n",
10834           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
10835     }
10836
10837     ret = orc_test_compare_output (p);
10838     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
10839       printf ("    compiled function:   COMPILE FAILED\n");
10840     } else if (!ret) {
10841       error = TRUE;
10842     } else if (!quiet) {
10843       printf ("    compiled function:   PASSED\n");
10844     }
10845
10846     if (benchmark) {
10847       printf ("    cycles (compiled):   %g\n",
10848           orc_test_performance_full (p, 0, NULL));
10849     }
10850
10851     orc_program_free (p);
10852   }
10853
10854   /* orc_haar_split_s16_hi */
10855   {
10856     OrcProgram *p = NULL;
10857     int ret;
10858
10859     if (!quiet)      printf ("orc_haar_split_s16_hi:\n");
10860     p = orc_program_new ();
10861     orc_program_set_name (p, "orc_haar_split_s16_hi");
10862     orc_program_set_backup_function (p, _backup_orc_haar_split_s16_hi);
10863     orc_program_add_destination (p, 2, "d1");
10864     orc_program_add_source (p, 2, "s1");
10865     orc_program_add_source (p, 2, "s2");
10866
10867       orc_program_append_2 (p, "subw", 0, ORC_VAR_D1, ORC_VAR_S2, ORC_VAR_S1, ORC_VAR_D1);
10868
10869     if (benchmark) {
10870       printf ("    cycles (emulate) :   %g\n",
10871           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
10872     }
10873
10874     ret = orc_test_compare_output_backup (p);
10875     if (!ret) {
10876       error = TRUE;
10877     } else if (!quiet) {
10878       printf ("    backup function  :   PASSED\n");
10879     }
10880
10881     if (benchmark) {
10882       printf ("    cycles (backup)  :   %g\n",
10883           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
10884     }
10885
10886     ret = orc_test_compare_output (p);
10887     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
10888       printf ("    compiled function:   COMPILE FAILED\n");
10889     } else if (!ret) {
10890       error = TRUE;
10891     } else if (!quiet) {
10892       printf ("    compiled function:   PASSED\n");
10893     }
10894
10895     if (benchmark) {
10896       printf ("    cycles (compiled):   %g\n",
10897           orc_test_performance_full (p, 0, NULL));
10898     }
10899
10900     orc_program_free (p);
10901   }
10902
10903   /* orc_haar_split_s16_op */
10904   {
10905     OrcProgram *p = NULL;
10906     int ret;
10907
10908     if (!quiet)      printf ("orc_haar_split_s16_op:\n");
10909     p = orc_program_new ();
10910     orc_program_set_name (p, "orc_haar_split_s16_op");
10911     orc_program_set_backup_function (p, _backup_orc_haar_split_s16_op);
10912     orc_program_add_destination (p, 2, "d1");
10913     orc_program_add_destination (p, 2, "d2");
10914     orc_program_add_source (p, 2, "s1");
10915     orc_program_add_source (p, 2, "s2");
10916       orc_program_add_constant (p, 4, 0x00000000, "c1");
10917     orc_program_add_temporary (p, 2, "t1");
10918     orc_program_add_temporary (p, 2, "t2");
10919
10920       orc_program_append_2 (p, "copyw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
10921       orc_program_append_2 (p, "subw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_T1, ORC_VAR_D1);
10922       orc_program_append_2 (p, "copyw", 0, ORC_VAR_D2, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
10923       orc_program_append_2 (p, "avgsw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_D1);
10924       orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1);
10925
10926     if (benchmark) {
10927       printf ("    cycles (emulate) :   %g\n",
10928           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
10929     }
10930
10931     ret = orc_test_compare_output_backup (p);
10932     if (!ret) {
10933       error = TRUE;
10934     } else if (!quiet) {
10935       printf ("    backup function  :   PASSED\n");
10936     }
10937
10938     if (benchmark) {
10939       printf ("    cycles (backup)  :   %g\n",
10940           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
10941     }
10942
10943     ret = orc_test_compare_output (p);
10944     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
10945       printf ("    compiled function:   COMPILE FAILED\n");
10946     } else if (!ret) {
10947       error = TRUE;
10948     } else if (!quiet) {
10949       printf ("    compiled function:   PASSED\n");
10950     }
10951
10952     if (benchmark) {
10953       printf ("    cycles (compiled):   %g\n",
10954           orc_test_performance_full (p, 0, NULL));
10955     }
10956
10957     orc_program_free (p);
10958   }
10959
10960   /* orc_haar_split_s16 */
10961   {
10962     OrcProgram *p = NULL;
10963     int ret;
10964
10965     if (!quiet)      printf ("orc_haar_split_s16:\n");
10966     p = orc_program_new ();
10967     orc_program_set_name (p, "orc_haar_split_s16");
10968     orc_program_set_backup_function (p, _backup_orc_haar_split_s16);
10969     orc_program_add_destination (p, 2, "d1");
10970     orc_program_add_destination (p, 2, "d2");
10971       orc_program_add_constant (p, 4, 0x00000000, "c1");
10972     orc_program_add_temporary (p, 2, "t1");
10973     orc_program_add_temporary (p, 2, "t2");
10974
10975       orc_program_append_2 (p, "copyw", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_D1);
10976       orc_program_append_2 (p, "copyw", 0, ORC_VAR_T2, ORC_VAR_D2, ORC_VAR_D1, ORC_VAR_D1);
10977       orc_program_append_2 (p, "subw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1);
10978       orc_program_append_2 (p, "copyw", 0, ORC_VAR_D2, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
10979       orc_program_append_2 (p, "avgsw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_D1);
10980       orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1);
10981
10982     if (benchmark) {
10983       printf ("    cycles (emulate) :   %g\n",
10984           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
10985     }
10986
10987     ret = orc_test_compare_output_backup (p);
10988     if (!ret) {
10989       error = TRUE;
10990     } else if (!quiet) {
10991       printf ("    backup function  :   PASSED\n");
10992     }
10993
10994     if (benchmark) {
10995       printf ("    cycles (backup)  :   %g\n",
10996           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
10997     }
10998
10999     ret = orc_test_compare_output (p);
11000     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
11001       printf ("    compiled function:   COMPILE FAILED\n");
11002     } else if (!ret) {
11003       error = TRUE;
11004     } else if (!quiet) {
11005       printf ("    compiled function:   PASSED\n");
11006     }
11007
11008     if (benchmark) {
11009       printf ("    cycles (compiled):   %g\n",
11010           orc_test_performance_full (p, 0, NULL));
11011     }
11012
11013     orc_program_free (p);
11014   }
11015
11016   /* orc_haar_synth_s16_lo */
11017   {
11018     OrcProgram *p = NULL;
11019     int ret;
11020
11021     if (!quiet)      printf ("orc_haar_synth_s16_lo:\n");
11022     p = orc_program_new ();
11023     orc_program_set_name (p, "orc_haar_synth_s16_lo");
11024     orc_program_set_backup_function (p, _backup_orc_haar_synth_s16_lo);
11025     orc_program_add_destination (p, 2, "d1");
11026     orc_program_add_source (p, 2, "s1");
11027     orc_program_add_source (p, 2, "s2");
11028       orc_program_add_constant (p, 4, 0x00000000, "c1");
11029     orc_program_add_temporary (p, 2, "t1");
11030
11031       orc_program_append_2 (p, "avgsw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_C1, ORC_VAR_D1);
11032       orc_program_append_2 (p, "subw", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_T1, ORC_VAR_D1);
11033
11034     if (benchmark) {
11035       printf ("    cycles (emulate) :   %g\n",
11036           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
11037     }
11038
11039     ret = orc_test_compare_output_backup (p);
11040     if (!ret) {
11041       error = TRUE;
11042     } else if (!quiet) {
11043       printf ("    backup function  :   PASSED\n");
11044     }
11045
11046     if (benchmark) {
11047       printf ("    cycles (backup)  :   %g\n",
11048           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
11049     }
11050
11051     ret = orc_test_compare_output (p);
11052     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
11053       printf ("    compiled function:   COMPILE FAILED\n");
11054     } else if (!ret) {
11055       error = TRUE;
11056     } else if (!quiet) {
11057       printf ("    compiled function:   PASSED\n");
11058     }
11059
11060     if (benchmark) {
11061       printf ("    cycles (compiled):   %g\n",
11062           orc_test_performance_full (p, 0, NULL));
11063     }
11064
11065     orc_program_free (p);
11066   }
11067
11068   /* orc_haar_synth_s16_hi */
11069   {
11070     OrcProgram *p = NULL;
11071     int ret;
11072
11073     if (!quiet)      printf ("orc_haar_synth_s16_hi:\n");
11074     p = orc_program_new ();
11075     orc_program_set_name (p, "orc_haar_synth_s16_hi");
11076     orc_program_set_backup_function (p, _backup_orc_haar_synth_s16_hi);
11077     orc_program_add_destination (p, 2, "d1");
11078     orc_program_add_source (p, 2, "s1");
11079     orc_program_add_source (p, 2, "s2");
11080       orc_program_add_constant (p, 4, 0x00000000, "c1");
11081     orc_program_add_temporary (p, 2, "t1");
11082     orc_program_add_temporary (p, 2, "t2");
11083     orc_program_add_temporary (p, 2, "t3");
11084
11085       orc_program_append_2 (p, "copyw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, ORC_VAR_D1);
11086       orc_program_append_2 (p, "avgsw", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_D1);
11087       orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_T3, ORC_VAR_D1);
11088       orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1);
11089
11090     if (benchmark) {
11091       printf ("    cycles (emulate) :   %g\n",
11092           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
11093     }
11094
11095     ret = orc_test_compare_output_backup (p);
11096     if (!ret) {
11097       error = TRUE;
11098     } else if (!quiet) {
11099       printf ("    backup function  :   PASSED\n");
11100     }
11101
11102     if (benchmark) {
11103       printf ("    cycles (backup)  :   %g\n",
11104           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
11105     }
11106
11107     ret = orc_test_compare_output (p);
11108     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
11109       printf ("    compiled function:   COMPILE FAILED\n");
11110     } else if (!ret) {
11111       error = TRUE;
11112     } else if (!quiet) {
11113       printf ("    compiled function:   PASSED\n");
11114     }
11115
11116     if (benchmark) {
11117       printf ("    cycles (compiled):   %g\n",
11118           orc_test_performance_full (p, 0, NULL));
11119     }
11120
11121     orc_program_free (p);
11122   }
11123
11124   /* orc_haar_synth_s16_op */
11125   {
11126     OrcProgram *p = NULL;
11127     int ret;
11128
11129     if (!quiet)      printf ("orc_haar_synth_s16_op:\n");
11130     p = orc_program_new ();
11131     orc_program_set_name (p, "orc_haar_synth_s16_op");
11132     orc_program_set_backup_function (p, _backup_orc_haar_synth_s16_op);
11133     orc_program_add_destination (p, 2, "d1");
11134     orc_program_add_destination (p, 2, "d2");
11135     orc_program_add_source (p, 2, "s1");
11136     orc_program_add_source (p, 2, "s2");
11137       orc_program_add_constant (p, 4, 0x00000000, "c1");
11138     orc_program_add_temporary (p, 2, "t1");
11139     orc_program_add_temporary (p, 2, "t2");
11140     orc_program_add_temporary (p, 2, "t3");
11141
11142       orc_program_append_2 (p, "copyw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, ORC_VAR_D1);
11143       orc_program_append_2 (p, "avgsw", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_D1);
11144       orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_T3, ORC_VAR_D1);
11145       orc_program_append_2 (p, "copyw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
11146       orc_program_append_2 (p, "addw", 0, ORC_VAR_D2, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1);
11147
11148     if (benchmark) {
11149       printf ("    cycles (emulate) :   %g\n",
11150           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
11151     }
11152
11153     ret = orc_test_compare_output_backup (p);
11154     if (!ret) {
11155       error = TRUE;
11156     } else if (!quiet) {
11157       printf ("    backup function  :   PASSED\n");
11158     }
11159
11160     if (benchmark) {
11161       printf ("    cycles (backup)  :   %g\n",
11162           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
11163     }
11164
11165     ret = orc_test_compare_output (p);
11166     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
11167       printf ("    compiled function:   COMPILE FAILED\n");
11168     } else if (!ret) {
11169       error = TRUE;
11170     } else if (!quiet) {
11171       printf ("    compiled function:   PASSED\n");
11172     }
11173
11174     if (benchmark) {
11175       printf ("    cycles (compiled):   %g\n",
11176           orc_test_performance_full (p, 0, NULL));
11177     }
11178
11179     orc_program_free (p);
11180   }
11181
11182   /* orc_haar_synth_s16 */
11183   {
11184     OrcProgram *p = NULL;
11185     int ret;
11186
11187     if (!quiet)      printf ("orc_haar_synth_s16:\n");
11188     p = orc_program_new ();
11189     orc_program_set_name (p, "orc_haar_synth_s16");
11190     orc_program_set_backup_function (p, _backup_orc_haar_synth_s16);
11191     orc_program_add_destination (p, 2, "d1");
11192     orc_program_add_destination (p, 2, "d2");
11193       orc_program_add_constant (p, 4, 0x00000000, "c1");
11194     orc_program_add_temporary (p, 2, "t1");
11195     orc_program_add_temporary (p, 2, "t2");
11196     orc_program_add_temporary (p, 2, "t3");
11197
11198       orc_program_append_2 (p, "copyw", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_D1);
11199       orc_program_append_2 (p, "copyw", 0, ORC_VAR_T2, ORC_VAR_D2, ORC_VAR_D1, ORC_VAR_D1);
11200       orc_program_append_2 (p, "avgsw", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_D1);
11201       orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_D1);
11202       orc_program_append_2 (p, "copyw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
11203       orc_program_append_2 (p, "addw", 0, ORC_VAR_D2, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1);
11204
11205     if (benchmark) {
11206       printf ("    cycles (emulate) :   %g\n",
11207           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
11208     }
11209
11210     ret = orc_test_compare_output_backup (p);
11211     if (!ret) {
11212       error = TRUE;
11213     } else if (!quiet) {
11214       printf ("    backup function  :   PASSED\n");
11215     }
11216
11217     if (benchmark) {
11218       printf ("    cycles (backup)  :   %g\n",
11219           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
11220     }
11221
11222     ret = orc_test_compare_output (p);
11223     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
11224       printf ("    compiled function:   COMPILE FAILED\n");
11225     } else if (!ret) {
11226       error = TRUE;
11227     } else if (!quiet) {
11228       printf ("    compiled function:   PASSED\n");
11229     }
11230
11231     if (benchmark) {
11232       printf ("    cycles (compiled):   %g\n",
11233           orc_test_performance_full (p, 0, NULL));
11234     }
11235
11236     orc_program_free (p);
11237   }
11238
11239   /* orc_haar_synth_rrshift1_int_s16 */
11240   {
11241     OrcProgram *p = NULL;
11242     int ret;
11243
11244     if (!quiet)      printf ("orc_haar_synth_rrshift1_int_s16:\n");
11245     p = orc_program_new ();
11246     orc_program_set_name (p, "orc_haar_synth_rrshift1_int_s16");
11247     orc_program_set_backup_function (p, _backup_orc_haar_synth_rrshift1_int_s16);
11248     orc_program_add_destination (p, 4, "d1");
11249     orc_program_add_source (p, 2, "s1");
11250     orc_program_add_source (p, 2, "s2");
11251       orc_program_add_constant (p, 4, 0x00000000, "c1");
11252     orc_program_add_temporary (p, 2, "t1");
11253     orc_program_add_temporary (p, 2, "t2");
11254
11255       orc_program_append_2 (p, "copyw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, ORC_VAR_D1);
11256       orc_program_append_2 (p, "avgsw", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_D1);
11257       orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_T1, ORC_VAR_D1);
11258       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1);
11259       orc_program_append_2 (p, "avgsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
11260       orc_program_append_2 (p, "avgsw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_D1);
11261       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1);
11262
11263     if (benchmark) {
11264       printf ("    cycles (emulate) :   %g\n",
11265           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
11266     }
11267
11268     ret = orc_test_compare_output_backup (p);
11269     if (!ret) {
11270       error = TRUE;
11271     } else if (!quiet) {
11272       printf ("    backup function  :   PASSED\n");
11273     }
11274
11275     if (benchmark) {
11276       printf ("    cycles (backup)  :   %g\n",
11277           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
11278     }
11279
11280     ret = orc_test_compare_output (p);
11281     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
11282       printf ("    compiled function:   COMPILE FAILED\n");
11283     } else if (!ret) {
11284       error = TRUE;
11285     } else if (!quiet) {
11286       printf ("    compiled function:   PASSED\n");
11287     }
11288
11289     if (benchmark) {
11290       printf ("    cycles (compiled):   %g\n",
11291           orc_test_performance_full (p, 0, NULL));
11292     }
11293
11294     orc_program_free (p);
11295   }
11296
11297   /* orc_haar_synth_int_s16 */
11298   {
11299     OrcProgram *p = NULL;
11300     int ret;
11301
11302     if (!quiet)      printf ("orc_haar_synth_int_s16:\n");
11303     p = orc_program_new ();
11304     orc_program_set_name (p, "orc_haar_synth_int_s16");
11305     orc_program_set_backup_function (p, _backup_orc_haar_synth_int_s16);
11306     orc_program_add_destination (p, 4, "d1");
11307     orc_program_add_source (p, 2, "s1");
11308     orc_program_add_source (p, 2, "s2");
11309       orc_program_add_constant (p, 4, 0x00000000, "c1");
11310     orc_program_add_temporary (p, 2, "t1");
11311     orc_program_add_temporary (p, 2, "t2");
11312
11313       orc_program_append_2 (p, "copyw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, ORC_VAR_D1);
11314       orc_program_append_2 (p, "avgsw", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_D1);
11315       orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_T1, ORC_VAR_D1);
11316       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1);
11317       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1);
11318
11319     if (benchmark) {
11320       printf ("    cycles (emulate) :   %g\n",
11321           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
11322     }
11323
11324     ret = orc_test_compare_output_backup (p);
11325     if (!ret) {
11326       error = TRUE;
11327     } else if (!quiet) {
11328       printf ("    backup function  :   PASSED\n");
11329     }
11330
11331     if (benchmark) {
11332       printf ("    cycles (backup)  :   %g\n",
11333           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
11334     }
11335
11336     ret = orc_test_compare_output (p);
11337     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
11338       printf ("    compiled function:   COMPILE FAILED\n");
11339     } else if (!ret) {
11340       error = TRUE;
11341     } else if (!quiet) {
11342       printf ("    compiled function:   PASSED\n");
11343     }
11344
11345     if (benchmark) {
11346       printf ("    cycles (compiled):   %g\n",
11347           orc_test_performance_full (p, 0, NULL));
11348     }
11349
11350     orc_program_free (p);
11351   }
11352
11353   /* orc_haar_sub_s16 */
11354   {
11355     OrcProgram *p = NULL;
11356     int ret;
11357
11358     if (!quiet)      printf ("orc_haar_sub_s16:\n");
11359     p = orc_program_new ();
11360     orc_program_set_name (p, "orc_haar_sub_s16");
11361     orc_program_set_backup_function (p, _backup_orc_haar_sub_s16);
11362     orc_program_add_destination (p, 2, "d1");
11363     orc_program_add_source (p, 2, "s1");
11364
11365       orc_program_append_2 (p, "subw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1);
11366
11367     if (benchmark) {
11368       printf ("    cycles (emulate) :   %g\n",
11369           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
11370     }
11371
11372     ret = orc_test_compare_output_backup (p);
11373     if (!ret) {
11374       error = TRUE;
11375     } else if (!quiet) {
11376       printf ("    backup function  :   PASSED\n");
11377     }
11378
11379     if (benchmark) {
11380       printf ("    cycles (backup)  :   %g\n",
11381           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
11382     }
11383
11384     ret = orc_test_compare_output (p);
11385     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
11386       printf ("    compiled function:   COMPILE FAILED\n");
11387     } else if (!ret) {
11388       error = TRUE;
11389     } else if (!quiet) {
11390       printf ("    compiled function:   PASSED\n");
11391     }
11392
11393     if (benchmark) {
11394       printf ("    cycles (compiled):   %g\n",
11395           orc_test_performance_full (p, 0, NULL));
11396     }
11397
11398     orc_program_free (p);
11399   }
11400
11401   /* orc_haar_add_half_s16 */
11402   {
11403     OrcProgram *p = NULL;
11404     int ret;
11405
11406     if (!quiet)      printf ("orc_haar_add_half_s16:\n");
11407     p = orc_program_new ();
11408     orc_program_set_name (p, "orc_haar_add_half_s16");
11409     orc_program_set_backup_function (p, _backup_orc_haar_add_half_s16);
11410     orc_program_add_destination (p, 2, "d1");
11411     orc_program_add_source (p, 2, "s1");
11412       orc_program_add_constant (p, 4, 0x00000000, "c1");
11413     orc_program_add_temporary (p, 2, "t1");
11414
11415       orc_program_append_2 (p, "avgsw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_C1, ORC_VAR_D1);
11416       orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1);
11417
11418     if (benchmark) {
11419       printf ("    cycles (emulate) :   %g\n",
11420           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
11421     }
11422
11423     ret = orc_test_compare_output_backup (p);
11424     if (!ret) {
11425       error = TRUE;
11426     } else if (!quiet) {
11427       printf ("    backup function  :   PASSED\n");
11428     }
11429
11430     if (benchmark) {
11431       printf ("    cycles (backup)  :   %g\n",
11432           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
11433     }
11434
11435     ret = orc_test_compare_output (p);
11436     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
11437       printf ("    compiled function:   COMPILE FAILED\n");
11438     } else if (!ret) {
11439       error = TRUE;
11440     } else if (!quiet) {
11441       printf ("    compiled function:   PASSED\n");
11442     }
11443
11444     if (benchmark) {
11445       printf ("    cycles (compiled):   %g\n",
11446           orc_test_performance_full (p, 0, NULL));
11447     }
11448
11449     orc_program_free (p);
11450   }
11451
11452   /* orc_haar_add_s16 */
11453   {
11454     OrcProgram *p = NULL;
11455     int ret;
11456
11457     if (!quiet)      printf ("orc_haar_add_s16:\n");
11458     p = orc_program_new ();
11459     orc_program_set_name (p, "orc_haar_add_s16");
11460     orc_program_set_backup_function (p, _backup_orc_haar_add_s16);
11461     orc_program_add_destination (p, 2, "d1");
11462     orc_program_add_source (p, 2, "s1");
11463
11464       orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1);
11465
11466     if (benchmark) {
11467       printf ("    cycles (emulate) :   %g\n",
11468           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
11469     }
11470
11471     ret = orc_test_compare_output_backup (p);
11472     if (!ret) {
11473       error = TRUE;
11474     } else if (!quiet) {
11475       printf ("    backup function  :   PASSED\n");
11476     }
11477
11478     if (benchmark) {
11479       printf ("    cycles (backup)  :   %g\n",
11480           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
11481     }
11482
11483     ret = orc_test_compare_output (p);
11484     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
11485       printf ("    compiled function:   COMPILE FAILED\n");
11486     } else if (!ret) {
11487       error = TRUE;
11488     } else if (!quiet) {
11489       printf ("    compiled function:   PASSED\n");
11490     }
11491
11492     if (benchmark) {
11493       printf ("    cycles (compiled):   %g\n",
11494           orc_test_performance_full (p, 0, NULL));
11495     }
11496
11497     orc_program_free (p);
11498   }
11499
11500   /* orc_haar_sub_half_s16 */
11501   {
11502     OrcProgram *p = NULL;
11503     int ret;
11504
11505     if (!quiet)      printf ("orc_haar_sub_half_s16:\n");
11506     p = orc_program_new ();
11507     orc_program_set_name (p, "orc_haar_sub_half_s16");
11508     orc_program_set_backup_function (p, _backup_orc_haar_sub_half_s16);
11509     orc_program_add_destination (p, 2, "d1");
11510     orc_program_add_source (p, 2, "s1");
11511       orc_program_add_constant (p, 4, 0x00000000, "c1");
11512     orc_program_add_temporary (p, 2, "t1");
11513
11514       orc_program_append_2 (p, "avgsw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_C1, ORC_VAR_D1);
11515       orc_program_append_2 (p, "subw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1);
11516
11517     if (benchmark) {
11518       printf ("    cycles (emulate) :   %g\n",
11519           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
11520     }
11521
11522     ret = orc_test_compare_output_backup (p);
11523     if (!ret) {
11524       error = TRUE;
11525     } else if (!quiet) {
11526       printf ("    backup function  :   PASSED\n");
11527     }
11528
11529     if (benchmark) {
11530       printf ("    cycles (backup)  :   %g\n",
11531           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
11532     }
11533
11534     ret = orc_test_compare_output (p);
11535     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
11536       printf ("    compiled function:   COMPILE FAILED\n");
11537     } else if (!ret) {
11538       error = TRUE;
11539     } else if (!quiet) {
11540       printf ("    compiled function:   PASSED\n");
11541     }
11542
11543     if (benchmark) {
11544       printf ("    cycles (compiled):   %g\n",
11545           orc_test_performance_full (p, 0, NULL));
11546     }
11547
11548     orc_program_free (p);
11549   }
11550
11551   /* orc_sum_u8 */
11552   {
11553     OrcProgram *p = NULL;
11554     int ret;
11555
11556     if (!quiet)      printf ("orc_sum_u8:\n");
11557     p = orc_program_new ();
11558     orc_program_set_name (p, "orc_sum_u8");
11559     orc_program_set_backup_function (p, _backup_orc_sum_u8);
11560     orc_program_add_source (p, 1, "s1");
11561     orc_program_add_accumulator (p, 4, "a1");
11562     orc_program_add_temporary (p, 2, "t1");
11563     orc_program_add_temporary (p, 4, "t2");
11564
11565       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
11566       orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
11567       orc_program_append_2 (p, "accl", 0, ORC_VAR_A1, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
11568
11569     if (benchmark) {
11570       printf ("    cycles (emulate) :   %g\n",
11571           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
11572     }
11573
11574     ret = orc_test_compare_output_backup (p);
11575     if (!ret) {
11576       error = TRUE;
11577     } else if (!quiet) {
11578       printf ("    backup function  :   PASSED\n");
11579     }
11580
11581     if (benchmark) {
11582       printf ("    cycles (backup)  :   %g\n",
11583           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
11584     }
11585
11586     ret = orc_test_compare_output (p);
11587     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
11588       printf ("    compiled function:   COMPILE FAILED\n");
11589     } else if (!ret) {
11590       error = TRUE;
11591     } else if (!quiet) {
11592       printf ("    compiled function:   PASSED\n");
11593     }
11594
11595     if (benchmark) {
11596       printf ("    cycles (compiled):   %g\n",
11597           orc_test_performance_full (p, 0, NULL));
11598     }
11599
11600     orc_program_free (p);
11601   }
11602
11603   /* orc_sum_s16 */
11604   {
11605     OrcProgram *p = NULL;
11606     int ret;
11607
11608     if (!quiet)      printf ("orc_sum_s16:\n");
11609     p = orc_program_new ();
11610     orc_program_set_name (p, "orc_sum_s16");
11611     orc_program_set_backup_function (p, _backup_orc_sum_s16);
11612     orc_program_add_source (p, 2, "s1");
11613     orc_program_add_accumulator (p, 4, "a1");
11614     orc_program_add_temporary (p, 4, "t1");
11615
11616       orc_program_append_2 (p, "convswl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
11617       orc_program_append_2 (p, "accl", 0, ORC_VAR_A1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
11618
11619     if (benchmark) {
11620       printf ("    cycles (emulate) :   %g\n",
11621           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
11622     }
11623
11624     ret = orc_test_compare_output_backup (p);
11625     if (!ret) {
11626       error = TRUE;
11627     } else if (!quiet) {
11628       printf ("    backup function  :   PASSED\n");
11629     }
11630
11631     if (benchmark) {
11632       printf ("    cycles (backup)  :   %g\n",
11633           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
11634     }
11635
11636     ret = orc_test_compare_output (p);
11637     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
11638       printf ("    compiled function:   COMPILE FAILED\n");
11639     } else if (!ret) {
11640       error = TRUE;
11641     } else if (!quiet) {
11642       printf ("    compiled function:   PASSED\n");
11643     }
11644
11645     if (benchmark) {
11646       printf ("    cycles (compiled):   %g\n",
11647           orc_test_performance_full (p, 0, NULL));
11648     }
11649
11650     orc_program_free (p);
11651   }
11652
11653   /* orc_sum_square_diff_u8 */
11654   {
11655     OrcProgram *p = NULL;
11656     int ret;
11657
11658     if (!quiet)      printf ("orc_sum_square_diff_u8:\n");
11659     p = orc_program_new ();
11660     orc_program_set_name (p, "orc_sum_square_diff_u8");
11661     orc_program_set_backup_function (p, _backup_orc_sum_square_diff_u8);
11662     orc_program_add_source (p, 1, "s1");
11663     orc_program_add_source (p, 1, "s2");
11664     orc_program_add_accumulator (p, 4, "a1");
11665     orc_program_add_temporary (p, 2, "t1");
11666     orc_program_add_temporary (p, 2, "t2");
11667     orc_program_add_temporary (p, 4, "t3");
11668
11669       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
11670       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, ORC_VAR_D1);
11671       orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1);
11672       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1);
11673       orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
11674       orc_program_append_2 (p, "accl", 0, ORC_VAR_A1, ORC_VAR_T3, ORC_VAR_D1, ORC_VAR_D1);
11675
11676     if (benchmark) {
11677       printf ("    cycles (emulate) :   %g\n",
11678           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
11679     }
11680
11681     ret = orc_test_compare_output_backup (p);
11682     if (!ret) {
11683       error = TRUE;
11684     } else if (!quiet) {
11685       printf ("    backup function  :   PASSED\n");
11686     }
11687
11688     if (benchmark) {
11689       printf ("    cycles (backup)  :   %g\n",
11690           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
11691     }
11692
11693     ret = orc_test_compare_output (p);
11694     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
11695       printf ("    compiled function:   COMPILE FAILED\n");
11696     } else if (!ret) {
11697       error = TRUE;
11698     } else if (!quiet) {
11699       printf ("    compiled function:   PASSED\n");
11700     }
11701
11702     if (benchmark) {
11703       printf ("    cycles (compiled):   %g\n",
11704           orc_test_performance_full (p, 0, NULL));
11705     }
11706
11707     orc_program_free (p);
11708   }
11709
11710   /* orc_dequantise_s16_2d_4xn */
11711   {
11712     OrcProgram *p = NULL;
11713     int ret;
11714
11715     if (!quiet)      printf ("orc_dequantise_s16_2d_4xn:\n");
11716     p = orc_program_new ();
11717       orc_program_set_constant_n (p, 4);
11718       orc_program_set_2d (p);
11719     orc_program_set_name (p, "orc_dequantise_s16_2d_4xn");
11720     orc_program_set_backup_function (p, _backup_orc_dequantise_s16_2d_4xn);
11721     orc_program_add_destination (p, 2, "d1");
11722     orc_program_add_source (p, 2, "s1");
11723       orc_program_add_constant (p, 4, 0x00000002, "c1");
11724     orc_program_add_parameter (p, 2, "p1");
11725     orc_program_add_parameter (p, 2, "p2");
11726     orc_program_add_temporary (p, 2, "t1");
11727     orc_program_add_temporary (p, 2, "t2");
11728
11729       orc_program_append_2 (p, "copyw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
11730       orc_program_append_2 (p, "signw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
11731       orc_program_append_2 (p, "absw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
11732       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1);
11733       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P2, ORC_VAR_D1);
11734       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
11735       orc_program_append_2 (p, "mullw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1);
11736
11737     if (benchmark) {
11738       printf ("    cycles (emulate) :   %g\n",
11739           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
11740     }
11741
11742     ret = orc_test_compare_output_backup (p);
11743     if (!ret) {
11744       error = TRUE;
11745     } else if (!quiet) {
11746       printf ("    backup function  :   PASSED\n");
11747     }
11748
11749     if (benchmark) {
11750       printf ("    cycles (backup)  :   %g\n",
11751           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
11752     }
11753
11754     ret = orc_test_compare_output (p);
11755     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
11756       printf ("    compiled function:   COMPILE FAILED\n");
11757     } else if (!ret) {
11758       error = TRUE;
11759     } else if (!quiet) {
11760       printf ("    compiled function:   PASSED\n");
11761     }
11762
11763     if (benchmark) {
11764       printf ("    cycles (compiled):   %g\n",
11765           orc_test_performance_full (p, 0, NULL));
11766     }
11767
11768     orc_program_free (p);
11769   }
11770
11771   /* orc_dequantise_s16_2d_8xn */
11772   {
11773     OrcProgram *p = NULL;
11774     int ret;
11775
11776     if (!quiet)      printf ("orc_dequantise_s16_2d_8xn:\n");
11777     p = orc_program_new ();
11778       orc_program_set_constant_n (p, 8);
11779       orc_program_set_2d (p);
11780     orc_program_set_name (p, "orc_dequantise_s16_2d_8xn");
11781     orc_program_set_backup_function (p, _backup_orc_dequantise_s16_2d_8xn);
11782     orc_program_add_destination (p, 2, "d1");
11783     orc_program_add_source (p, 2, "s1");
11784       orc_program_add_constant (p, 4, 0x00000002, "c1");
11785     orc_program_add_parameter (p, 2, "p1");
11786     orc_program_add_parameter (p, 2, "p2");
11787     orc_program_add_temporary (p, 2, "t1");
11788     orc_program_add_temporary (p, 2, "t2");
11789
11790       orc_program_append_2 (p, "copyw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
11791       orc_program_append_2 (p, "signw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
11792       orc_program_append_2 (p, "absw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
11793       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1);
11794       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P2, ORC_VAR_D1);
11795       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
11796       orc_program_append_2 (p, "mullw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1);
11797
11798     if (benchmark) {
11799       printf ("    cycles (emulate) :   %g\n",
11800           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
11801     }
11802
11803     ret = orc_test_compare_output_backup (p);
11804     if (!ret) {
11805       error = TRUE;
11806     } else if (!quiet) {
11807       printf ("    backup function  :   PASSED\n");
11808     }
11809
11810     if (benchmark) {
11811       printf ("    cycles (backup)  :   %g\n",
11812           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
11813     }
11814
11815     ret = orc_test_compare_output (p);
11816     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
11817       printf ("    compiled function:   COMPILE FAILED\n");
11818     } else if (!ret) {
11819       error = TRUE;
11820     } else if (!quiet) {
11821       printf ("    compiled function:   PASSED\n");
11822     }
11823
11824     if (benchmark) {
11825       printf ("    cycles (compiled):   %g\n",
11826           orc_test_performance_full (p, 0, NULL));
11827     }
11828
11829     orc_program_free (p);
11830   }
11831
11832   /* orc_dequantise_s16_ip_2d_8xn */
11833   {
11834     OrcProgram *p = NULL;
11835     int ret;
11836
11837     if (!quiet)      printf ("orc_dequantise_s16_ip_2d_8xn:\n");
11838     p = orc_program_new ();
11839       orc_program_set_constant_n (p, 8);
11840       orc_program_set_2d (p);
11841     orc_program_set_name (p, "orc_dequantise_s16_ip_2d_8xn");
11842     orc_program_set_backup_function (p, _backup_orc_dequantise_s16_ip_2d_8xn);
11843     orc_program_add_destination (p, 2, "d1");
11844       orc_program_add_constant (p, 4, 0x00000002, "c1");
11845     orc_program_add_parameter (p, 2, "p1");
11846     orc_program_add_parameter (p, 2, "p2");
11847     orc_program_add_temporary (p, 2, "t1");
11848     orc_program_add_temporary (p, 2, "t2");
11849
11850       orc_program_append_2 (p, "copyw", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_D1);
11851       orc_program_append_2 (p, "signw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
11852       orc_program_append_2 (p, "absw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
11853       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1);
11854       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P2, ORC_VAR_D1);
11855       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
11856       orc_program_append_2 (p, "mullw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1);
11857
11858     if (benchmark) {
11859       printf ("    cycles (emulate) :   %g\n",
11860           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
11861     }
11862
11863     ret = orc_test_compare_output_backup (p);
11864     if (!ret) {
11865       error = TRUE;
11866     } else if (!quiet) {
11867       printf ("    backup function  :   PASSED\n");
11868     }
11869
11870     if (benchmark) {
11871       printf ("    cycles (backup)  :   %g\n",
11872           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
11873     }
11874
11875     ret = orc_test_compare_output (p);
11876     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
11877       printf ("    compiled function:   COMPILE FAILED\n");
11878     } else if (!ret) {
11879       error = TRUE;
11880     } else if (!quiet) {
11881       printf ("    compiled function:   PASSED\n");
11882     }
11883
11884     if (benchmark) {
11885       printf ("    cycles (compiled):   %g\n",
11886           orc_test_performance_full (p, 0, NULL));
11887     }
11888
11889     orc_program_free (p);
11890   }
11891
11892   /* orc_dequantise_s16_ip_2d */
11893   {
11894     OrcProgram *p = NULL;
11895     int ret;
11896
11897     if (!quiet)      printf ("orc_dequantise_s16_ip_2d:\n");
11898     p = orc_program_new ();
11899       orc_program_set_2d (p);
11900     orc_program_set_name (p, "orc_dequantise_s16_ip_2d");
11901     orc_program_set_backup_function (p, _backup_orc_dequantise_s16_ip_2d);
11902     orc_program_add_destination (p, 2, "d1");
11903       orc_program_add_constant (p, 4, 0x00000002, "c1");
11904     orc_program_add_parameter (p, 2, "p1");
11905     orc_program_add_parameter (p, 2, "p2");
11906     orc_program_add_temporary (p, 2, "t1");
11907     orc_program_add_temporary (p, 2, "t2");
11908
11909       orc_program_append_2 (p, "copyw", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_D1);
11910       orc_program_append_2 (p, "signw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
11911       orc_program_append_2 (p, "absw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
11912       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1);
11913       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P2, ORC_VAR_D1);
11914       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
11915       orc_program_append_2 (p, "mullw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1);
11916
11917     if (benchmark) {
11918       printf ("    cycles (emulate) :   %g\n",
11919           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
11920     }
11921
11922     ret = orc_test_compare_output_backup (p);
11923     if (!ret) {
11924       error = TRUE;
11925     } else if (!quiet) {
11926       printf ("    backup function  :   PASSED\n");
11927     }
11928
11929     if (benchmark) {
11930       printf ("    cycles (backup)  :   %g\n",
11931           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
11932     }
11933
11934     ret = orc_test_compare_output (p);
11935     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
11936       printf ("    compiled function:   COMPILE FAILED\n");
11937     } else if (!ret) {
11938       error = TRUE;
11939     } else if (!quiet) {
11940       printf ("    compiled function:   PASSED\n");
11941     }
11942
11943     if (benchmark) {
11944       printf ("    cycles (compiled):   %g\n",
11945           orc_test_performance_full (p, 0, NULL));
11946     }
11947
11948     orc_program_free (p);
11949   }
11950
11951   /* orc_dequantise_s16_ip */
11952   {
11953     OrcProgram *p = NULL;
11954     int ret;
11955
11956     if (!quiet)      printf ("orc_dequantise_s16_ip:\n");
11957     p = orc_program_new ();
11958     orc_program_set_name (p, "orc_dequantise_s16_ip");
11959     orc_program_set_backup_function (p, _backup_orc_dequantise_s16_ip);
11960     orc_program_add_destination (p, 2, "d1");
11961       orc_program_add_constant (p, 4, 0x00000002, "c1");
11962     orc_program_add_parameter (p, 2, "p1");
11963     orc_program_add_parameter (p, 2, "p2");
11964     orc_program_add_temporary (p, 2, "t1");
11965     orc_program_add_temporary (p, 2, "t2");
11966
11967       orc_program_append_2 (p, "copyw", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_D1);
11968       orc_program_append_2 (p, "signw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
11969       orc_program_append_2 (p, "absw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
11970       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1);
11971       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P2, ORC_VAR_D1);
11972       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
11973       orc_program_append_2 (p, "mullw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1);
11974
11975     if (benchmark) {
11976       printf ("    cycles (emulate) :   %g\n",
11977           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
11978     }
11979
11980     ret = orc_test_compare_output_backup (p);
11981     if (!ret) {
11982       error = TRUE;
11983     } else if (!quiet) {
11984       printf ("    backup function  :   PASSED\n");
11985     }
11986
11987     if (benchmark) {
11988       printf ("    cycles (backup)  :   %g\n",
11989           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
11990     }
11991
11992     ret = orc_test_compare_output (p);
11993     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
11994       printf ("    compiled function:   COMPILE FAILED\n");
11995     } else if (!ret) {
11996       error = TRUE;
11997     } else if (!quiet) {
11998       printf ("    compiled function:   PASSED\n");
11999     }
12000
12001     if (benchmark) {
12002       printf ("    cycles (compiled):   %g\n",
12003           orc_test_performance_full (p, 0, NULL));
12004     }
12005
12006     orc_program_free (p);
12007   }
12008
12009   /* orc_dequantise_s16 */
12010   {
12011     OrcProgram *p = NULL;
12012     int ret;
12013
12014     if (!quiet)      printf ("orc_dequantise_s16:\n");
12015     p = orc_program_new ();
12016     orc_program_set_name (p, "orc_dequantise_s16");
12017     orc_program_set_backup_function (p, _backup_orc_dequantise_s16);
12018     orc_program_add_destination (p, 2, "d1");
12019     orc_program_add_source (p, 2, "s1");
12020       orc_program_add_constant (p, 4, 0x00000002, "c1");
12021     orc_program_add_parameter (p, 2, "p1");
12022     orc_program_add_parameter (p, 2, "p2");
12023     orc_program_add_temporary (p, 2, "t1");
12024     orc_program_add_temporary (p, 2, "t2");
12025
12026       orc_program_append_2 (p, "copyw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
12027       orc_program_append_2 (p, "signw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
12028       orc_program_append_2 (p, "absw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
12029       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1);
12030       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P2, ORC_VAR_D1);
12031       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
12032       orc_program_append_2 (p, "mullw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1);
12033
12034     if (benchmark) {
12035       printf ("    cycles (emulate) :   %g\n",
12036           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
12037     }
12038
12039     ret = orc_test_compare_output_backup (p);
12040     if (!ret) {
12041       error = TRUE;
12042     } else if (!quiet) {
12043       printf ("    backup function  :   PASSED\n");
12044     }
12045
12046     if (benchmark) {
12047       printf ("    cycles (backup)  :   %g\n",
12048           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
12049     }
12050
12051     ret = orc_test_compare_output (p);
12052     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
12053       printf ("    compiled function:   COMPILE FAILED\n");
12054     } else if (!ret) {
12055       error = TRUE;
12056     } else if (!quiet) {
12057       printf ("    compiled function:   PASSED\n");
12058     }
12059
12060     if (benchmark) {
12061       printf ("    cycles (compiled):   %g\n",
12062           orc_test_performance_full (p, 0, NULL));
12063     }
12064
12065     orc_program_free (p);
12066   }
12067
12068   /* orc_dequantise_var_s16_ip */
12069   {
12070     OrcProgram *p = NULL;
12071     int ret;
12072
12073     if (!quiet)      printf ("orc_dequantise_var_s16_ip:\n");
12074     p = orc_program_new ();
12075     orc_program_set_name (p, "orc_dequantise_var_s16_ip");
12076     orc_program_set_backup_function (p, _backup_orc_dequantise_var_s16_ip);
12077     orc_program_add_destination (p, 2, "d1");
12078     orc_program_add_source (p, 2, "s1");
12079     orc_program_add_source (p, 2, "s2");
12080       orc_program_add_constant (p, 4, 0x00000002, "c1");
12081     orc_program_add_temporary (p, 2, "t1");
12082     orc_program_add_temporary (p, 2, "t2");
12083
12084       orc_program_append_2 (p, "copyw", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_D1);
12085       orc_program_append_2 (p, "signw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
12086       orc_program_append_2 (p, "absw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
12087       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1);
12088       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_D1);
12089       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
12090       orc_program_append_2 (p, "mullw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1);
12091
12092     if (benchmark) {
12093       printf ("    cycles (emulate) :   %g\n",
12094           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
12095     }
12096
12097     ret = orc_test_compare_output_backup (p);
12098     if (!ret) {
12099       error = TRUE;
12100     } else if (!quiet) {
12101       printf ("    backup function  :   PASSED\n");
12102     }
12103
12104     if (benchmark) {
12105       printf ("    cycles (backup)  :   %g\n",
12106           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
12107     }
12108
12109     ret = orc_test_compare_output (p);
12110     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
12111       printf ("    compiled function:   COMPILE FAILED\n");
12112     } else if (!ret) {
12113       error = TRUE;
12114     } else if (!quiet) {
12115       printf ("    compiled function:   PASSED\n");
12116     }
12117
12118     if (benchmark) {
12119       printf ("    cycles (compiled):   %g\n",
12120           orc_test_performance_full (p, 0, NULL));
12121     }
12122
12123     orc_program_free (p);
12124   }
12125
12126   /* orc_quantise1_s16 */
12127   {
12128     OrcProgram *p = NULL;
12129     int ret;
12130
12131     if (!quiet)      printf ("orc_quantise1_s16:\n");
12132     p = orc_program_new ();
12133     orc_program_set_name (p, "orc_quantise1_s16");
12134     orc_program_set_backup_function (p, _backup_orc_quantise1_s16);
12135     orc_program_add_destination (p, 2, "d1");
12136     orc_program_add_source (p, 2, "s1");
12137       orc_program_add_constant (p, 4, 0x00000002, "c1");
12138     orc_program_add_parameter (p, 2, "p1");
12139     orc_program_add_parameter (p, 2, "p2");
12140     orc_program_add_parameter (p, 2, "p3");
12141     orc_program_add_temporary (p, 2, "t1");
12142     orc_program_add_temporary (p, 2, "t2");
12143
12144       orc_program_append_2 (p, "copyw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
12145       orc_program_append_2 (p, "signw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
12146       orc_program_append_2 (p, "absw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
12147       orc_program_append_2 (p, "shlw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
12148       orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P2, ORC_VAR_D1);
12149       orc_program_append_2 (p, "mulhuw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1);
12150       orc_program_append_2 (p, "shruw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P3, ORC_VAR_D1);
12151       orc_program_append_2 (p, "mullw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1);
12152
12153     if (benchmark) {
12154       printf ("    cycles (emulate) :   %g\n",
12155           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
12156     }
12157
12158     ret = orc_test_compare_output_backup (p);
12159     if (!ret) {
12160       error = TRUE;
12161     } else if (!quiet) {
12162       printf ("    backup function  :   PASSED\n");
12163     }
12164
12165     if (benchmark) {
12166       printf ("    cycles (backup)  :   %g\n",
12167           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
12168     }
12169
12170     ret = orc_test_compare_output (p);
12171     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
12172       printf ("    compiled function:   COMPILE FAILED\n");
12173     } else if (!ret) {
12174       error = TRUE;
12175     } else if (!quiet) {
12176       printf ("    compiled function:   PASSED\n");
12177     }
12178
12179     if (benchmark) {
12180       printf ("    cycles (compiled):   %g\n",
12181           orc_test_performance_full (p, 0, NULL));
12182     }
12183
12184     orc_program_free (p);
12185   }
12186
12187   /* orc_quantise2_s16 */
12188   {
12189     OrcProgram *p = NULL;
12190     int ret;
12191
12192     if (!quiet)      printf ("orc_quantise2_s16:\n");
12193     p = orc_program_new ();
12194     orc_program_set_name (p, "orc_quantise2_s16");
12195     orc_program_set_backup_function (p, _backup_orc_quantise2_s16);
12196     orc_program_add_destination (p, 2, "d1");
12197     orc_program_add_source (p, 2, "s1");
12198       orc_program_add_constant (p, 4, 0x00000002, "c1");
12199     orc_program_add_parameter (p, 2, "p1");
12200     orc_program_add_parameter (p, 2, "p2");
12201     orc_program_add_temporary (p, 2, "t1");
12202     orc_program_add_temporary (p, 2, "t2");
12203
12204       orc_program_append_2 (p, "copyw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
12205       orc_program_append_2 (p, "signw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
12206       orc_program_append_2 (p, "absw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
12207       orc_program_append_2 (p, "shlw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
12208       orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P2, ORC_VAR_D1);
12209       orc_program_append_2 (p, "shruw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1);
12210       orc_program_append_2 (p, "mullw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1);
12211
12212     if (benchmark) {
12213       printf ("    cycles (emulate) :   %g\n",
12214           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
12215     }
12216
12217     ret = orc_test_compare_output_backup (p);
12218     if (!ret) {
12219       error = TRUE;
12220     } else if (!quiet) {
12221       printf ("    backup function  :   PASSED\n");
12222     }
12223
12224     if (benchmark) {
12225       printf ("    cycles (backup)  :   %g\n",
12226           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
12227     }
12228
12229     ret = orc_test_compare_output (p);
12230     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
12231       printf ("    compiled function:   COMPILE FAILED\n");
12232     } else if (!ret) {
12233       error = TRUE;
12234     } else if (!quiet) {
12235       printf ("    compiled function:   PASSED\n");
12236     }
12237
12238     if (benchmark) {
12239       printf ("    cycles (compiled):   %g\n",
12240           orc_test_performance_full (p, 0, NULL));
12241     }
12242
12243     orc_program_free (p);
12244   }
12245
12246   /* orc_quantdequant1_s16 */
12247   {
12248     OrcProgram *p = NULL;
12249     int ret;
12250
12251     if (!quiet)      printf ("orc_quantdequant1_s16:\n");
12252     p = orc_program_new ();
12253     orc_program_set_name (p, "orc_quantdequant1_s16");
12254     orc_program_set_backup_function (p, _backup_orc_quantdequant1_s16);
12255     orc_program_add_destination (p, 2, "d1");
12256     orc_program_add_destination (p, 2, "d2");
12257       orc_program_add_constant (p, 4, 0x00000002, "c1");
12258     orc_program_add_parameter (p, 2, "p1");
12259     orc_program_add_parameter (p, 2, "p2");
12260     orc_program_add_parameter (p, 2, "p3");
12261     orc_program_add_parameter (p, 2, "p4");
12262     orc_program_add_parameter (p, 2, "p5");
12263     orc_program_add_temporary (p, 2, "t1");
12264     orc_program_add_temporary (p, 2, "t2");
12265
12266       orc_program_append_2 (p, "copyw", 0, ORC_VAR_T1, ORC_VAR_D2, ORC_VAR_D1, ORC_VAR_D1);
12267       orc_program_append_2 (p, "signw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
12268       orc_program_append_2 (p, "absw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
12269       orc_program_append_2 (p, "shlw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
12270       orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P2, ORC_VAR_D1);
12271       orc_program_append_2 (p, "mulhuw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1);
12272       orc_program_append_2 (p, "shruw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P3, ORC_VAR_D1);
12273       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1);
12274       orc_program_append_2 (p, "copyw", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
12275       orc_program_append_2 (p, "signw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
12276       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P4, ORC_VAR_D1);
12277       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P5, ORC_VAR_D1);
12278       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
12279       orc_program_append_2 (p, "mullw", 0, ORC_VAR_D2, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1);
12280
12281     if (benchmark) {
12282       printf ("    cycles (emulate) :   %g\n",
12283           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
12284     }
12285
12286     ret = orc_test_compare_output_backup (p);
12287     if (!ret) {
12288       error = TRUE;
12289     } else if (!quiet) {
12290       printf ("    backup function  :   PASSED\n");
12291     }
12292
12293     if (benchmark) {
12294       printf ("    cycles (backup)  :   %g\n",
12295           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
12296     }
12297
12298     ret = orc_test_compare_output (p);
12299     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
12300       printf ("    compiled function:   COMPILE FAILED\n");
12301     } else if (!ret) {
12302       error = TRUE;
12303     } else if (!quiet) {
12304       printf ("    compiled function:   PASSED\n");
12305     }
12306
12307     if (benchmark) {
12308       printf ("    cycles (compiled):   %g\n",
12309           orc_test_performance_full (p, 0, NULL));
12310     }
12311
12312     orc_program_free (p);
12313   }
12314
12315   /* orc_quantdequant3_s16 */
12316   {
12317     OrcProgram *p = NULL;
12318     int ret;
12319
12320     if (!quiet)      printf ("orc_quantdequant3_s16:\n");
12321     p = orc_program_new ();
12322     orc_program_set_name (p, "orc_quantdequant3_s16");
12323     orc_program_set_backup_function (p, _backup_orc_quantdequant3_s16);
12324     orc_program_add_destination (p, 2, "d1");
12325     orc_program_add_destination (p, 2, "d2");
12326       orc_program_add_constant (p, 4, 0x00000002, "c1");
12327     orc_program_add_parameter (p, 2, "p1");
12328     orc_program_add_parameter (p, 2, "p2");
12329     orc_program_add_parameter (p, 2, "p3");
12330     orc_program_add_parameter (p, 2, "p4");
12331     orc_program_add_parameter (p, 2, "p5");
12332     orc_program_add_parameter (p, 4, "p6");
12333     orc_program_add_temporary (p, 2, "t1");
12334     orc_program_add_temporary (p, 2, "t2");
12335     orc_program_add_temporary (p, 4, "t3");
12336
12337       orc_program_append_2 (p, "copyw", 0, ORC_VAR_T1, ORC_VAR_D2, ORC_VAR_D1, ORC_VAR_D1);
12338       orc_program_append_2 (p, "signw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
12339       orc_program_append_2 (p, "absw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
12340       orc_program_append_2 (p, "shlw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
12341       orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P2, ORC_VAR_D1);
12342       orc_program_append_2 (p, "muluwl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1);
12343       orc_program_append_2 (p, "addl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_P6, ORC_VAR_D1);
12344       orc_program_append_2 (p, "shrul", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_P3, ORC_VAR_D1);
12345       orc_program_append_2 (p, "convlw", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_D1, ORC_VAR_D1);
12346       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1);
12347       orc_program_append_2 (p, "copyw", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
12348       orc_program_append_2 (p, "signw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
12349       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P4, ORC_VAR_D1);
12350       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P5, ORC_VAR_D1);
12351       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
12352       orc_program_append_2 (p, "mullw", 0, ORC_VAR_D2, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1);
12353
12354     if (benchmark) {
12355       printf ("    cycles (emulate) :   %g\n",
12356           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
12357     }
12358
12359     ret = orc_test_compare_output_backup (p);
12360     if (!ret) {
12361       error = TRUE;
12362     } else if (!quiet) {
12363       printf ("    backup function  :   PASSED\n");
12364     }
12365
12366     if (benchmark) {
12367       printf ("    cycles (backup)  :   %g\n",
12368           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
12369     }
12370
12371     ret = orc_test_compare_output (p);
12372     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
12373       printf ("    compiled function:   COMPILE FAILED\n");
12374     } else if (!ret) {
12375       error = TRUE;
12376     } else if (!quiet) {
12377       printf ("    compiled function:   PASSED\n");
12378     }
12379
12380     if (benchmark) {
12381       printf ("    cycles (compiled):   %g\n",
12382           orc_test_performance_full (p, 0, NULL));
12383     }
12384
12385     orc_program_free (p);
12386   }
12387
12388   /* orc_quantdequant2_s16 */
12389   {
12390     OrcProgram *p = NULL;
12391     int ret;
12392
12393     if (!quiet)      printf ("orc_quantdequant2_s16:\n");
12394     p = orc_program_new ();
12395     orc_program_set_name (p, "orc_quantdequant2_s16");
12396     orc_program_set_backup_function (p, _backup_orc_quantdequant2_s16);
12397     orc_program_add_destination (p, 2, "d1");
12398     orc_program_add_destination (p, 2, "d2");
12399       orc_program_add_constant (p, 4, 0x00000002, "c1");
12400     orc_program_add_parameter (p, 2, "p1");
12401     orc_program_add_parameter (p, 2, "p2");
12402     orc_program_add_parameter (p, 2, "p3");
12403     orc_program_add_parameter (p, 2, "p4");
12404     orc_program_add_temporary (p, 2, "t1");
12405     orc_program_add_temporary (p, 2, "t2");
12406
12407       orc_program_append_2 (p, "copyw", 0, ORC_VAR_T1, ORC_VAR_D2, ORC_VAR_D1, ORC_VAR_D1);
12408       orc_program_append_2 (p, "signw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
12409       orc_program_append_2 (p, "absw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
12410       orc_program_append_2 (p, "shlw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
12411       orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P2, ORC_VAR_D1);
12412       orc_program_append_2 (p, "shruw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1);
12413       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1);
12414       orc_program_append_2 (p, "copyw", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
12415       orc_program_append_2 (p, "signw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
12416       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P3, ORC_VAR_D1);
12417       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P4, ORC_VAR_D1);
12418       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
12419       orc_program_append_2 (p, "mullw", 0, ORC_VAR_D2, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1);
12420
12421     if (benchmark) {
12422       printf ("    cycles (emulate) :   %g\n",
12423           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
12424     }
12425
12426     ret = orc_test_compare_output_backup (p);
12427     if (!ret) {
12428       error = TRUE;
12429     } else if (!quiet) {
12430       printf ("    backup function  :   PASSED\n");
12431     }
12432
12433     if (benchmark) {
12434       printf ("    cycles (backup)  :   %g\n",
12435           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
12436     }
12437
12438     ret = orc_test_compare_output (p);
12439     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
12440       printf ("    compiled function:   COMPILE FAILED\n");
12441     } else if (!ret) {
12442       error = TRUE;
12443     } else if (!quiet) {
12444       printf ("    compiled function:   PASSED\n");
12445     }
12446
12447     if (benchmark) {
12448       printf ("    cycles (compiled):   %g\n",
12449           orc_test_performance_full (p, 0, NULL));
12450     }
12451
12452     orc_program_free (p);
12453   }
12454
12455   /* orc_downsample_vert_u8 */
12456   {
12457     OrcProgram *p = NULL;
12458     int ret;
12459
12460     if (!quiet)      printf ("orc_downsample_vert_u8:\n");
12461     p = orc_program_new ();
12462     orc_program_set_name (p, "orc_downsample_vert_u8");
12463     orc_program_set_backup_function (p, _backup_orc_downsample_vert_u8);
12464     orc_program_add_destination (p, 1, "d1");
12465     orc_program_add_source (p, 1, "s1");
12466     orc_program_add_source (p, 1, "s2");
12467     orc_program_add_source (p, 1, "s3");
12468     orc_program_add_source (p, 1, "s4");
12469       orc_program_add_constant (p, 4, 0x00000006, "c1");
12470       orc_program_add_constant (p, 4, 0x0000001a, "c2");
12471       orc_program_add_constant (p, 4, 0x00000020, "c3");
12472     orc_program_add_temporary (p, 2, "t1");
12473     orc_program_add_temporary (p, 2, "t2");
12474     orc_program_add_temporary (p, 2, "t3");
12475
12476       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
12477       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S4, ORC_VAR_D1, ORC_VAR_D1);
12478       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1);
12479       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
12480       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, ORC_VAR_D1);
12481       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T3, ORC_VAR_S3, ORC_VAR_D1, ORC_VAR_D1);
12482       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_D1);
12483       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C2, ORC_VAR_D1);
12484       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1);
12485       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C3, ORC_VAR_D1);
12486       orc_program_append_2 (p, "shruw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_D1);
12487       orc_program_append_2 (p, "convwb", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
12488
12489     if (benchmark) {
12490       printf ("    cycles (emulate) :   %g\n",
12491           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
12492     }
12493
12494     ret = orc_test_compare_output_backup (p);
12495     if (!ret) {
12496       error = TRUE;
12497     } else if (!quiet) {
12498       printf ("    backup function  :   PASSED\n");
12499     }
12500
12501     if (benchmark) {
12502       printf ("    cycles (backup)  :   %g\n",
12503           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
12504     }
12505
12506     ret = orc_test_compare_output (p);
12507     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
12508       printf ("    compiled function:   COMPILE FAILED\n");
12509     } else if (!ret) {
12510       error = TRUE;
12511     } else if (!quiet) {
12512       printf ("    compiled function:   PASSED\n");
12513     }
12514
12515     if (benchmark) {
12516       printf ("    cycles (compiled):   %g\n",
12517           orc_test_performance_full (p, 0, NULL));
12518     }
12519
12520     orc_program_free (p);
12521   }
12522
12523   /* orc_downsample_horiz_u8 */
12524   {
12525     OrcProgram *p = NULL;
12526     int ret;
12527
12528     if (!quiet)      printf ("orc_downsample_horiz_u8:\n");
12529     p = orc_program_new ();
12530     orc_program_set_name (p, "orc_downsample_horiz_u8");
12531     orc_program_set_backup_function (p, _backup_orc_downsample_horiz_u8);
12532     orc_program_add_destination (p, 1, "d1");
12533     orc_program_add_source (p, 2, "s1");
12534     orc_program_add_source (p, 2, "s2");
12535       orc_program_add_constant (p, 4, 0x00000006, "c1");
12536       orc_program_add_constant (p, 4, 0x0000001a, "c2");
12537       orc_program_add_constant (p, 4, 0x00000020, "c3");
12538     orc_program_add_temporary (p, 2, "t1");
12539     orc_program_add_temporary (p, 2, "t2");
12540     orc_program_add_temporary (p, 1, "t3");
12541     orc_program_add_temporary (p, 2, "t4");
12542     orc_program_add_temporary (p, 2, "t5");
12543     orc_program_add_temporary (p, 2, "t6");
12544
12545       orc_program_append_2 (p, "copyw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
12546       orc_program_append_2 (p, "copyw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, ORC_VAR_D1);
12547       orc_program_append_2 (p, "select0wb", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
12548       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1, ORC_VAR_D1);
12549       orc_program_append_2 (p, "select1wb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
12550       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T5, ORC_VAR_T3, ORC_VAR_D1, ORC_VAR_D1);
12551       orc_program_append_2 (p, "addw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_T5, ORC_VAR_D1);
12552       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C1, ORC_VAR_D1);
12553       orc_program_append_2 (p, "select1wb", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
12554       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T5, ORC_VAR_T3, ORC_VAR_D1, ORC_VAR_D1);
12555       orc_program_append_2 (p, "select0wb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
12556       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T6, ORC_VAR_T3, ORC_VAR_D1, ORC_VAR_D1);
12557       orc_program_append_2 (p, "addw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T6, ORC_VAR_D1);
12558       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C2, ORC_VAR_D1);
12559       orc_program_append_2 (p, "addw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_T5, ORC_VAR_D1);
12560       orc_program_append_2 (p, "addw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C3, ORC_VAR_D1);
12561       orc_program_append_2 (p, "shruw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C1, ORC_VAR_D1);
12562       orc_program_append_2 (p, "convwb", 0, ORC_VAR_D1, ORC_VAR_T4, ORC_VAR_D1, ORC_VAR_D1);
12563
12564     if (benchmark) {
12565       printf ("    cycles (emulate) :   %g\n",
12566           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
12567     }
12568
12569     ret = orc_test_compare_output_backup (p);
12570     if (!ret) {
12571       error = TRUE;
12572     } else if (!quiet) {
12573       printf ("    backup function  :   PASSED\n");
12574     }
12575
12576     if (benchmark) {
12577       printf ("    cycles (backup)  :   %g\n",
12578           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
12579     }
12580
12581     ret = orc_test_compare_output (p);
12582     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
12583       printf ("    compiled function:   COMPILE FAILED\n");
12584     } else if (!ret) {
12585       error = TRUE;
12586     } else if (!quiet) {
12587       printf ("    compiled function:   PASSED\n");
12588     }
12589
12590     if (benchmark) {
12591       printf ("    cycles (compiled):   %g\n",
12592           orc_test_performance_full (p, 0, NULL));
12593     }
12594
12595     orc_program_free (p);
12596   }
12597
12598   /* orc_stats_moment_s16 */
12599   {
12600     OrcProgram *p = NULL;
12601     int ret;
12602
12603     if (!quiet)      printf ("orc_stats_moment_s16:\n");
12604     p = orc_program_new ();
12605     orc_program_set_name (p, "orc_stats_moment_s16");
12606     orc_program_set_backup_function (p, _backup_orc_stats_moment_s16);
12607     orc_program_add_source (p, 2, "s1");
12608     orc_program_add_accumulator (p, 4, "a1");
12609       orc_program_add_constant (p, 4, 0x00000002, "c1");
12610       orc_program_add_constant (p, 4, 0x00000000, "c2");
12611     orc_program_add_temporary (p, 2, "t1");
12612     orc_program_add_temporary (p, 4, "t2");
12613
12614       orc_program_append_2 (p, "absw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
12615       orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
12616       orc_program_append_2 (p, "maxsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2, ORC_VAR_D1);
12617       orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
12618       orc_program_append_2 (p, "accl", 0, ORC_VAR_A1, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
12619
12620     if (benchmark) {
12621       printf ("    cycles (emulate) :   %g\n",
12622           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
12623     }
12624
12625     ret = orc_test_compare_output_backup (p);
12626     if (!ret) {
12627       error = TRUE;
12628     } else if (!quiet) {
12629       printf ("    backup function  :   PASSED\n");
12630     }
12631
12632     if (benchmark) {
12633       printf ("    cycles (backup)  :   %g\n",
12634           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
12635     }
12636
12637     ret = orc_test_compare_output (p);
12638     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
12639       printf ("    compiled function:   COMPILE FAILED\n");
12640     } else if (!ret) {
12641       error = TRUE;
12642     } else if (!quiet) {
12643       printf ("    compiled function:   PASSED\n");
12644     }
12645
12646     if (benchmark) {
12647       printf ("    cycles (compiled):   %g\n",
12648           orc_test_performance_full (p, 0, NULL));
12649     }
12650
12651     orc_program_free (p);
12652   }
12653
12654   /* orc_stats_above_s16 */
12655   {
12656     OrcProgram *p = NULL;
12657     int ret;
12658
12659     if (!quiet)      printf ("orc_stats_above_s16:\n");
12660     p = orc_program_new ();
12661     orc_program_set_name (p, "orc_stats_above_s16");
12662     orc_program_set_backup_function (p, _backup_orc_stats_above_s16);
12663     orc_program_add_source (p, 2, "s1");
12664     orc_program_add_accumulator (p, 4, "a1");
12665       orc_program_add_constant (p, 4, 0x00000001, "c1");
12666       orc_program_add_constant (p, 4, 0x00000000, "c2");
12667     orc_program_add_temporary (p, 2, "t1");
12668     orc_program_add_temporary (p, 4, "t2");
12669
12670       orc_program_append_2 (p, "absw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
12671       orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
12672       orc_program_append_2 (p, "maxsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2, ORC_VAR_D1);
12673       orc_program_append_2 (p, "minsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
12674       orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
12675       orc_program_append_2 (p, "accl", 0, ORC_VAR_A1, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
12676
12677     if (benchmark) {
12678       printf ("    cycles (emulate) :   %g\n",
12679           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
12680     }
12681
12682     ret = orc_test_compare_output_backup (p);
12683     if (!ret) {
12684       error = TRUE;
12685     } else if (!quiet) {
12686       printf ("    backup function  :   PASSED\n");
12687     }
12688
12689     if (benchmark) {
12690       printf ("    cycles (backup)  :   %g\n",
12691           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
12692     }
12693
12694     ret = orc_test_compare_output (p);
12695     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
12696       printf ("    compiled function:   COMPILE FAILED\n");
12697     } else if (!ret) {
12698       error = TRUE;
12699     } else if (!quiet) {
12700       printf ("    compiled function:   PASSED\n");
12701     }
12702
12703     if (benchmark) {
12704       printf ("    cycles (compiled):   %g\n",
12705           orc_test_performance_full (p, 0, NULL));
12706     }
12707
12708     orc_program_free (p);
12709   }
12710
12711   /* orc_accw */
12712   {
12713     OrcProgram *p = NULL;
12714     int ret;
12715
12716     if (!quiet)      printf ("orc_accw:\n");
12717     p = orc_program_new ();
12718     orc_program_set_name (p, "orc_accw");
12719     orc_program_set_backup_function (p, _backup_orc_accw);
12720     orc_program_add_source (p, 2, "s1");
12721     orc_program_add_accumulator (p, 2, "a1");
12722     orc_program_add_temporary (p, 2, "t1");
12723
12724       orc_program_append_2 (p, "absw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
12725       orc_program_append_2 (p, "accw", 0, ORC_VAR_A1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
12726
12727     if (benchmark) {
12728       printf ("    cycles (emulate) :   %g\n",
12729           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
12730     }
12731
12732     ret = orc_test_compare_output_backup (p);
12733     if (!ret) {
12734       error = TRUE;
12735     } else if (!quiet) {
12736       printf ("    backup function  :   PASSED\n");
12737     }
12738
12739     if (benchmark) {
12740       printf ("    cycles (backup)  :   %g\n",
12741           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
12742     }
12743
12744     ret = orc_test_compare_output (p);
12745     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
12746       printf ("    compiled function:   COMPILE FAILED\n");
12747     } else if (!ret) {
12748       error = TRUE;
12749     } else if (!quiet) {
12750       printf ("    compiled function:   PASSED\n");
12751     }
12752
12753     if (benchmark) {
12754       printf ("    cycles (compiled):   %g\n",
12755           orc_test_performance_full (p, 0, NULL));
12756     }
12757
12758     orc_program_free (p);
12759   }
12760
12761   /* orc_avg2_8xn_u8 */
12762   {
12763     OrcProgram *p = NULL;
12764     int ret;
12765
12766     if (!quiet)      printf ("orc_avg2_8xn_u8:\n");
12767     p = orc_program_new ();
12768       orc_program_set_constant_n (p, 8);
12769       orc_program_set_2d (p);
12770     orc_program_set_name (p, "orc_avg2_8xn_u8");
12771     orc_program_set_backup_function (p, _backup_orc_avg2_8xn_u8);
12772     orc_program_add_destination (p, 1, "d1");
12773     orc_program_add_source (p, 1, "s1");
12774     orc_program_add_source (p, 1, "s2");
12775
12776       orc_program_append_2 (p, "avgub", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_S2, ORC_VAR_D1);
12777
12778     if (benchmark) {
12779       printf ("    cycles (emulate) :   %g\n",
12780           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
12781     }
12782
12783     ret = orc_test_compare_output_backup (p);
12784     if (!ret) {
12785       error = TRUE;
12786     } else if (!quiet) {
12787       printf ("    backup function  :   PASSED\n");
12788     }
12789
12790     if (benchmark) {
12791       printf ("    cycles (backup)  :   %g\n",
12792           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
12793     }
12794
12795     ret = orc_test_compare_output (p);
12796     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
12797       printf ("    compiled function:   COMPILE FAILED\n");
12798     } else if (!ret) {
12799       error = TRUE;
12800     } else if (!quiet) {
12801       printf ("    compiled function:   PASSED\n");
12802     }
12803
12804     if (benchmark) {
12805       printf ("    cycles (compiled):   %g\n",
12806           orc_test_performance_full (p, 0, NULL));
12807     }
12808
12809     orc_program_free (p);
12810   }
12811
12812   /* orc_avg2_12xn_u8 */
12813   {
12814     OrcProgram *p = NULL;
12815     int ret;
12816
12817     if (!quiet)      printf ("orc_avg2_12xn_u8:\n");
12818     p = orc_program_new ();
12819       orc_program_set_constant_n (p, 12);
12820       orc_program_set_2d (p);
12821     orc_program_set_name (p, "orc_avg2_12xn_u8");
12822     orc_program_set_backup_function (p, _backup_orc_avg2_12xn_u8);
12823     orc_program_add_destination (p, 1, "d1");
12824     orc_program_add_source (p, 1, "s1");
12825     orc_program_add_source (p, 1, "s2");
12826
12827       orc_program_append_2 (p, "avgub", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_S2, ORC_VAR_D1);
12828
12829     if (benchmark) {
12830       printf ("    cycles (emulate) :   %g\n",
12831           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
12832     }
12833
12834     ret = orc_test_compare_output_backup (p);
12835     if (!ret) {
12836       error = TRUE;
12837     } else if (!quiet) {
12838       printf ("    backup function  :   PASSED\n");
12839     }
12840
12841     if (benchmark) {
12842       printf ("    cycles (backup)  :   %g\n",
12843           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
12844     }
12845
12846     ret = orc_test_compare_output (p);
12847     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
12848       printf ("    compiled function:   COMPILE FAILED\n");
12849     } else if (!ret) {
12850       error = TRUE;
12851     } else if (!quiet) {
12852       printf ("    compiled function:   PASSED\n");
12853     }
12854
12855     if (benchmark) {
12856       printf ("    cycles (compiled):   %g\n",
12857           orc_test_performance_full (p, 0, NULL));
12858     }
12859
12860     orc_program_free (p);
12861   }
12862
12863   /* orc_avg2_16xn_u8 */
12864   {
12865     OrcProgram *p = NULL;
12866     int ret;
12867
12868     if (!quiet)      printf ("orc_avg2_16xn_u8:\n");
12869     p = orc_program_new ();
12870       orc_program_set_constant_n (p, 16);
12871       orc_program_set_2d (p);
12872     orc_program_set_name (p, "orc_avg2_16xn_u8");
12873     orc_program_set_backup_function (p, _backup_orc_avg2_16xn_u8);
12874     orc_program_add_destination (p, 1, "d1");
12875     orc_program_add_source (p, 1, "s1");
12876     orc_program_add_source (p, 1, "s2");
12877
12878       orc_program_append_2 (p, "avgub", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_S2, ORC_VAR_D1);
12879
12880     if (benchmark) {
12881       printf ("    cycles (emulate) :   %g\n",
12882           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
12883     }
12884
12885     ret = orc_test_compare_output_backup (p);
12886     if (!ret) {
12887       error = TRUE;
12888     } else if (!quiet) {
12889       printf ("    backup function  :   PASSED\n");
12890     }
12891
12892     if (benchmark) {
12893       printf ("    cycles (backup)  :   %g\n",
12894           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
12895     }
12896
12897     ret = orc_test_compare_output (p);
12898     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
12899       printf ("    compiled function:   COMPILE FAILED\n");
12900     } else if (!ret) {
12901       error = TRUE;
12902     } else if (!quiet) {
12903       printf ("    compiled function:   PASSED\n");
12904     }
12905
12906     if (benchmark) {
12907       printf ("    cycles (compiled):   %g\n",
12908           orc_test_performance_full (p, 0, NULL));
12909     }
12910
12911     orc_program_free (p);
12912   }
12913
12914   /* orc_avg2_32xn_u8 */
12915   {
12916     OrcProgram *p = NULL;
12917     int ret;
12918
12919     if (!quiet)      printf ("orc_avg2_32xn_u8:\n");
12920     p = orc_program_new ();
12921       orc_program_set_constant_n (p, 32);
12922       orc_program_set_2d (p);
12923     orc_program_set_name (p, "orc_avg2_32xn_u8");
12924     orc_program_set_backup_function (p, _backup_orc_avg2_32xn_u8);
12925     orc_program_add_destination (p, 1, "d1");
12926     orc_program_add_source (p, 1, "s1");
12927     orc_program_add_source (p, 1, "s2");
12928
12929       orc_program_append_2 (p, "avgub", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_S2, ORC_VAR_D1);
12930
12931     if (benchmark) {
12932       printf ("    cycles (emulate) :   %g\n",
12933           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
12934     }
12935
12936     ret = orc_test_compare_output_backup (p);
12937     if (!ret) {
12938       error = TRUE;
12939     } else if (!quiet) {
12940       printf ("    backup function  :   PASSED\n");
12941     }
12942
12943     if (benchmark) {
12944       printf ("    cycles (backup)  :   %g\n",
12945           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
12946     }
12947
12948     ret = orc_test_compare_output (p);
12949     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
12950       printf ("    compiled function:   COMPILE FAILED\n");
12951     } else if (!ret) {
12952       error = TRUE;
12953     } else if (!quiet) {
12954       printf ("    compiled function:   PASSED\n");
12955     }
12956
12957     if (benchmark) {
12958       printf ("    cycles (compiled):   %g\n",
12959           orc_test_performance_full (p, 0, NULL));
12960     }
12961
12962     orc_program_free (p);
12963   }
12964
12965   /* orc_avg2_nxm_u8 */
12966   {
12967     OrcProgram *p = NULL;
12968     int ret;
12969
12970     if (!quiet)      printf ("orc_avg2_nxm_u8:\n");
12971     p = orc_program_new ();
12972       orc_program_set_2d (p);
12973     orc_program_set_name (p, "orc_avg2_nxm_u8");
12974     orc_program_set_backup_function (p, _backup_orc_avg2_nxm_u8);
12975     orc_program_add_destination (p, 1, "d1");
12976     orc_program_add_source (p, 1, "s1");
12977     orc_program_add_source (p, 1, "s2");
12978
12979       orc_program_append_2 (p, "avgub", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_S2, ORC_VAR_D1);
12980
12981     if (benchmark) {
12982       printf ("    cycles (emulate) :   %g\n",
12983           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
12984     }
12985
12986     ret = orc_test_compare_output_backup (p);
12987     if (!ret) {
12988       error = TRUE;
12989     } else if (!quiet) {
12990       printf ("    backup function  :   PASSED\n");
12991     }
12992
12993     if (benchmark) {
12994       printf ("    cycles (backup)  :   %g\n",
12995           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
12996     }
12997
12998     ret = orc_test_compare_output (p);
12999     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
13000       printf ("    compiled function:   COMPILE FAILED\n");
13001     } else if (!ret) {
13002       error = TRUE;
13003     } else if (!quiet) {
13004       printf ("    compiled function:   PASSED\n");
13005     }
13006
13007     if (benchmark) {
13008       printf ("    cycles (compiled):   %g\n",
13009           orc_test_performance_full (p, 0, NULL));
13010     }
13011
13012     orc_program_free (p);
13013   }
13014
13015   /* orc_combine4_8xn_u8 */
13016   {
13017     OrcProgram *p = NULL;
13018     int ret;
13019
13020     if (!quiet)      printf ("orc_combine4_8xn_u8:\n");
13021     p = orc_program_new ();
13022       orc_program_set_constant_n (p, 8);
13023       orc_program_set_2d (p);
13024     orc_program_set_name (p, "orc_combine4_8xn_u8");
13025     orc_program_set_backup_function (p, _backup_orc_combine4_8xn_u8);
13026     orc_program_add_destination (p, 1, "d1");
13027     orc_program_add_source (p, 1, "s1");
13028     orc_program_add_source (p, 1, "s2");
13029     orc_program_add_source (p, 1, "s3");
13030     orc_program_add_source (p, 1, "s4");
13031       orc_program_add_constant (p, 4, 0x00000008, "c1");
13032     orc_program_add_parameter (p, 2, "p1");
13033     orc_program_add_parameter (p, 2, "p2");
13034     orc_program_add_parameter (p, 2, "p3");
13035     orc_program_add_parameter (p, 2, "p4");
13036     orc_program_add_temporary (p, 2, "t1");
13037     orc_program_add_temporary (p, 2, "t2");
13038
13039       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
13040       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1);
13041       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_D1, ORC_VAR_D1);
13042       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P2, ORC_VAR_D1);
13043       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1);
13044       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S3, ORC_VAR_D1, ORC_VAR_D1);
13045       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P3, ORC_VAR_D1);
13046       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1);
13047       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S4, ORC_VAR_D1, ORC_VAR_D1);
13048       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P4, ORC_VAR_D1);
13049       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1);
13050       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_D1);
13051       orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
13052
13053     if (benchmark) {
13054       printf ("    cycles (emulate) :   %g\n",
13055           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
13056     }
13057
13058     ret = orc_test_compare_output_backup (p);
13059     if (!ret) {
13060       error = TRUE;
13061     } else if (!quiet) {
13062       printf ("    backup function  :   PASSED\n");
13063     }
13064
13065     if (benchmark) {
13066       printf ("    cycles (backup)  :   %g\n",
13067           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
13068     }
13069
13070     ret = orc_test_compare_output (p);
13071     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
13072       printf ("    compiled function:   COMPILE FAILED\n");
13073     } else if (!ret) {
13074       error = TRUE;
13075     } else if (!quiet) {
13076       printf ("    compiled function:   PASSED\n");
13077     }
13078
13079     if (benchmark) {
13080       printf ("    cycles (compiled):   %g\n",
13081           orc_test_performance_full (p, 0, NULL));
13082     }
13083
13084     orc_program_free (p);
13085   }
13086
13087   /* orc_combine4_12xn_u8 */
13088   {
13089     OrcProgram *p = NULL;
13090     int ret;
13091
13092     if (!quiet)      printf ("orc_combine4_12xn_u8:\n");
13093     p = orc_program_new ();
13094       orc_program_set_constant_n (p, 12);
13095       orc_program_set_2d (p);
13096     orc_program_set_name (p, "orc_combine4_12xn_u8");
13097     orc_program_set_backup_function (p, _backup_orc_combine4_12xn_u8);
13098     orc_program_add_destination (p, 1, "d1");
13099     orc_program_add_source (p, 1, "s1");
13100     orc_program_add_source (p, 1, "s2");
13101     orc_program_add_source (p, 1, "s3");
13102     orc_program_add_source (p, 1, "s4");
13103       orc_program_add_constant (p, 4, 0x00000008, "c1");
13104     orc_program_add_parameter (p, 2, "p1");
13105     orc_program_add_parameter (p, 2, "p2");
13106     orc_program_add_parameter (p, 2, "p3");
13107     orc_program_add_parameter (p, 2, "p4");
13108     orc_program_add_temporary (p, 2, "t1");
13109     orc_program_add_temporary (p, 2, "t2");
13110
13111       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
13112       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1);
13113       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_D1, ORC_VAR_D1);
13114       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P2, ORC_VAR_D1);
13115       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1);
13116       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S3, ORC_VAR_D1, ORC_VAR_D1);
13117       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P3, ORC_VAR_D1);
13118       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1);
13119       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S4, ORC_VAR_D1, ORC_VAR_D1);
13120       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P4, ORC_VAR_D1);
13121       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1);
13122       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_D1);
13123       orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
13124
13125     if (benchmark) {
13126       printf ("    cycles (emulate) :   %g\n",
13127           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
13128     }
13129
13130     ret = orc_test_compare_output_backup (p);
13131     if (!ret) {
13132       error = TRUE;
13133     } else if (!quiet) {
13134       printf ("    backup function  :   PASSED\n");
13135     }
13136
13137     if (benchmark) {
13138       printf ("    cycles (backup)  :   %g\n",
13139           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
13140     }
13141
13142     ret = orc_test_compare_output (p);
13143     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
13144       printf ("    compiled function:   COMPILE FAILED\n");
13145     } else if (!ret) {
13146       error = TRUE;
13147     } else if (!quiet) {
13148       printf ("    compiled function:   PASSED\n");
13149     }
13150
13151     if (benchmark) {
13152       printf ("    cycles (compiled):   %g\n",
13153           orc_test_performance_full (p, 0, NULL));
13154     }
13155
13156     orc_program_free (p);
13157   }
13158
13159   /* orc_combine4_16xn_u8 */
13160   {
13161     OrcProgram *p = NULL;
13162     int ret;
13163
13164     if (!quiet)      printf ("orc_combine4_16xn_u8:\n");
13165     p = orc_program_new ();
13166       orc_program_set_constant_n (p, 16);
13167       orc_program_set_2d (p);
13168     orc_program_set_name (p, "orc_combine4_16xn_u8");
13169     orc_program_set_backup_function (p, _backup_orc_combine4_16xn_u8);
13170     orc_program_add_destination (p, 1, "d1");
13171     orc_program_add_source (p, 1, "s1");
13172     orc_program_add_source (p, 1, "s2");
13173     orc_program_add_source (p, 1, "s3");
13174     orc_program_add_source (p, 1, "s4");
13175       orc_program_add_constant (p, 4, 0x00000008, "c1");
13176     orc_program_add_parameter (p, 2, "p1");
13177     orc_program_add_parameter (p, 2, "p2");
13178     orc_program_add_parameter (p, 2, "p3");
13179     orc_program_add_parameter (p, 2, "p4");
13180     orc_program_add_temporary (p, 2, "t1");
13181     orc_program_add_temporary (p, 2, "t2");
13182
13183       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
13184       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1);
13185       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_D1, ORC_VAR_D1);
13186       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P2, ORC_VAR_D1);
13187       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1);
13188       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S3, ORC_VAR_D1, ORC_VAR_D1);
13189       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P3, ORC_VAR_D1);
13190       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1);
13191       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S4, ORC_VAR_D1, ORC_VAR_D1);
13192       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P4, ORC_VAR_D1);
13193       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1);
13194       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_D1);
13195       orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
13196
13197     if (benchmark) {
13198       printf ("    cycles (emulate) :   %g\n",
13199           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
13200     }
13201
13202     ret = orc_test_compare_output_backup (p);
13203     if (!ret) {
13204       error = TRUE;
13205     } else if (!quiet) {
13206       printf ("    backup function  :   PASSED\n");
13207     }
13208
13209     if (benchmark) {
13210       printf ("    cycles (backup)  :   %g\n",
13211           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
13212     }
13213
13214     ret = orc_test_compare_output (p);
13215     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
13216       printf ("    compiled function:   COMPILE FAILED\n");
13217     } else if (!ret) {
13218       error = TRUE;
13219     } else if (!quiet) {
13220       printf ("    compiled function:   PASSED\n");
13221     }
13222
13223     if (benchmark) {
13224       printf ("    cycles (compiled):   %g\n",
13225           orc_test_performance_full (p, 0, NULL));
13226     }
13227
13228     orc_program_free (p);
13229   }
13230
13231   /* orc_combine4_24xn_u8 */
13232   {
13233     OrcProgram *p = NULL;
13234     int ret;
13235
13236     if (!quiet)      printf ("orc_combine4_24xn_u8:\n");
13237     p = orc_program_new ();
13238       orc_program_set_constant_n (p, 24);
13239       orc_program_set_2d (p);
13240     orc_program_set_name (p, "orc_combine4_24xn_u8");
13241     orc_program_set_backup_function (p, _backup_orc_combine4_24xn_u8);
13242     orc_program_add_destination (p, 1, "d1");
13243     orc_program_add_source (p, 1, "s1");
13244     orc_program_add_source (p, 1, "s2");
13245     orc_program_add_source (p, 1, "s3");
13246     orc_program_add_source (p, 1, "s4");
13247       orc_program_add_constant (p, 4, 0x00000008, "c1");
13248     orc_program_add_parameter (p, 2, "p1");
13249     orc_program_add_parameter (p, 2, "p2");
13250     orc_program_add_parameter (p, 2, "p3");
13251     orc_program_add_parameter (p, 2, "p4");
13252     orc_program_add_temporary (p, 2, "t1");
13253     orc_program_add_temporary (p, 2, "t2");
13254
13255       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
13256       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1);
13257       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_D1, ORC_VAR_D1);
13258       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P2, ORC_VAR_D1);
13259       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1);
13260       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S3, ORC_VAR_D1, ORC_VAR_D1);
13261       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P3, ORC_VAR_D1);
13262       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1);
13263       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S4, ORC_VAR_D1, ORC_VAR_D1);
13264       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P4, ORC_VAR_D1);
13265       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1);
13266       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_D1);
13267       orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
13268
13269     if (benchmark) {
13270       printf ("    cycles (emulate) :   %g\n",
13271           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
13272     }
13273
13274     ret = orc_test_compare_output_backup (p);
13275     if (!ret) {
13276       error = TRUE;
13277     } else if (!quiet) {
13278       printf ("    backup function  :   PASSED\n");
13279     }
13280
13281     if (benchmark) {
13282       printf ("    cycles (backup)  :   %g\n",
13283           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
13284     }
13285
13286     ret = orc_test_compare_output (p);
13287     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
13288       printf ("    compiled function:   COMPILE FAILED\n");
13289     } else if (!ret) {
13290       error = TRUE;
13291     } else if (!quiet) {
13292       printf ("    compiled function:   PASSED\n");
13293     }
13294
13295     if (benchmark) {
13296       printf ("    cycles (compiled):   %g\n",
13297           orc_test_performance_full (p, 0, NULL));
13298     }
13299
13300     orc_program_free (p);
13301   }
13302
13303   /* orc_combine4_32xn_u8 */
13304   {
13305     OrcProgram *p = NULL;
13306     int ret;
13307
13308     if (!quiet)      printf ("orc_combine4_32xn_u8:\n");
13309     p = orc_program_new ();
13310       orc_program_set_constant_n (p, 32);
13311       orc_program_set_2d (p);
13312     orc_program_set_name (p, "orc_combine4_32xn_u8");
13313     orc_program_set_backup_function (p, _backup_orc_combine4_32xn_u8);
13314     orc_program_add_destination (p, 1, "d1");
13315     orc_program_add_source (p, 1, "s1");
13316     orc_program_add_source (p, 1, "s2");
13317     orc_program_add_source (p, 1, "s3");
13318     orc_program_add_source (p, 1, "s4");
13319       orc_program_add_constant (p, 4, 0x00000008, "c1");
13320     orc_program_add_parameter (p, 2, "p1");
13321     orc_program_add_parameter (p, 2, "p2");
13322     orc_program_add_parameter (p, 2, "p3");
13323     orc_program_add_parameter (p, 2, "p4");
13324     orc_program_add_temporary (p, 2, "t1");
13325     orc_program_add_temporary (p, 2, "t2");
13326
13327       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
13328       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1);
13329       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_D1, ORC_VAR_D1);
13330       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P2, ORC_VAR_D1);
13331       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1);
13332       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S3, ORC_VAR_D1, ORC_VAR_D1);
13333       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P3, ORC_VAR_D1);
13334       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1);
13335       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S4, ORC_VAR_D1, ORC_VAR_D1);
13336       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P4, ORC_VAR_D1);
13337       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1);
13338       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_D1);
13339       orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
13340
13341     if (benchmark) {
13342       printf ("    cycles (emulate) :   %g\n",
13343           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
13344     }
13345
13346     ret = orc_test_compare_output_backup (p);
13347     if (!ret) {
13348       error = TRUE;
13349     } else if (!quiet) {
13350       printf ("    backup function  :   PASSED\n");
13351     }
13352
13353     if (benchmark) {
13354       printf ("    cycles (backup)  :   %g\n",
13355           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
13356     }
13357
13358     ret = orc_test_compare_output (p);
13359     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
13360       printf ("    compiled function:   COMPILE FAILED\n");
13361     } else if (!ret) {
13362       error = TRUE;
13363     } else if (!quiet) {
13364       printf ("    compiled function:   PASSED\n");
13365     }
13366
13367     if (benchmark) {
13368       printf ("    cycles (compiled):   %g\n",
13369           orc_test_performance_full (p, 0, NULL));
13370     }
13371
13372     orc_program_free (p);
13373   }
13374
13375   /* orc_combine4_nxm_u8 */
13376   {
13377     OrcProgram *p = NULL;
13378     int ret;
13379
13380     if (!quiet)      printf ("orc_combine4_nxm_u8:\n");
13381     p = orc_program_new ();
13382       orc_program_set_2d (p);
13383     orc_program_set_name (p, "orc_combine4_nxm_u8");
13384     orc_program_set_backup_function (p, _backup_orc_combine4_nxm_u8);
13385     orc_program_add_destination (p, 1, "d1");
13386     orc_program_add_source (p, 1, "s1");
13387     orc_program_add_source (p, 1, "s2");
13388     orc_program_add_source (p, 1, "s3");
13389     orc_program_add_source (p, 1, "s4");
13390       orc_program_add_constant (p, 4, 0x00000008, "c1");
13391       orc_program_add_constant (p, 4, 0x00000004, "c2");
13392     orc_program_add_parameter (p, 2, "p1");
13393     orc_program_add_parameter (p, 2, "p2");
13394     orc_program_add_parameter (p, 2, "p3");
13395     orc_program_add_parameter (p, 2, "p4");
13396     orc_program_add_temporary (p, 2, "t1");
13397     orc_program_add_temporary (p, 2, "t2");
13398
13399       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
13400       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1);
13401       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_D1, ORC_VAR_D1);
13402       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P2, ORC_VAR_D1);
13403       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1);
13404       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S3, ORC_VAR_D1, ORC_VAR_D1);
13405       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P3, ORC_VAR_D1);
13406       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1);
13407       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S4, ORC_VAR_D1, ORC_VAR_D1);
13408       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P4, ORC_VAR_D1);
13409       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1);
13410       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_D1);
13411       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C2, ORC_VAR_D1);
13412       orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
13413
13414     if (benchmark) {
13415       printf ("    cycles (emulate) :   %g\n",
13416           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
13417     }
13418
13419     ret = orc_test_compare_output_backup (p);
13420     if (!ret) {
13421       error = TRUE;
13422     } else if (!quiet) {
13423       printf ("    backup function  :   PASSED\n");
13424     }
13425
13426     if (benchmark) {
13427       printf ("    cycles (backup)  :   %g\n",
13428           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
13429     }
13430
13431     ret = orc_test_compare_output (p);
13432     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
13433       printf ("    compiled function:   COMPILE FAILED\n");
13434     } else if (!ret) {
13435       error = TRUE;
13436     } else if (!quiet) {
13437       printf ("    compiled function:   PASSED\n");
13438     }
13439
13440     if (benchmark) {
13441       printf ("    cycles (compiled):   %g\n",
13442           orc_test_performance_full (p, 0, NULL));
13443     }
13444
13445     orc_program_free (p);
13446   }
13447
13448   /* orc_combine2_8xn_u8 */
13449   {
13450     OrcProgram *p = NULL;
13451     int ret;
13452
13453     if (!quiet)      printf ("orc_combine2_8xn_u8:\n");
13454     p = orc_program_new ();
13455       orc_program_set_constant_n (p, 8);
13456       orc_program_set_2d (p);
13457     orc_program_set_name (p, "orc_combine2_8xn_u8");
13458     orc_program_set_backup_function (p, _backup_orc_combine2_8xn_u8);
13459     orc_program_add_destination (p, 1, "d1");
13460     orc_program_add_source (p, 1, "s1");
13461     orc_program_add_source (p, 1, "s2");
13462     orc_program_add_parameter (p, 2, "p1");
13463     orc_program_add_parameter (p, 2, "p2");
13464     orc_program_add_parameter (p, 2, "p3");
13465     orc_program_add_parameter (p, 2, "p4");
13466     orc_program_add_temporary (p, 2, "t1");
13467     orc_program_add_temporary (p, 2, "t2");
13468
13469       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
13470       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, ORC_VAR_D1);
13471       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1);
13472       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P2, ORC_VAR_D1);
13473       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1);
13474       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P3, ORC_VAR_D1);
13475       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P4, ORC_VAR_D1);
13476       orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
13477
13478     if (benchmark) {
13479       printf ("    cycles (emulate) :   %g\n",
13480           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
13481     }
13482
13483     ret = orc_test_compare_output_backup (p);
13484     if (!ret) {
13485       error = TRUE;
13486     } else if (!quiet) {
13487       printf ("    backup function  :   PASSED\n");
13488     }
13489
13490     if (benchmark) {
13491       printf ("    cycles (backup)  :   %g\n",
13492           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
13493     }
13494
13495     ret = orc_test_compare_output (p);
13496     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
13497       printf ("    compiled function:   COMPILE FAILED\n");
13498     } else if (!ret) {
13499       error = TRUE;
13500     } else if (!quiet) {
13501       printf ("    compiled function:   PASSED\n");
13502     }
13503
13504     if (benchmark) {
13505       printf ("    cycles (compiled):   %g\n",
13506           orc_test_performance_full (p, 0, NULL));
13507     }
13508
13509     orc_program_free (p);
13510   }
13511
13512   /* orc_combine2_12xn_u8 */
13513   {
13514     OrcProgram *p = NULL;
13515     int ret;
13516
13517     if (!quiet)      printf ("orc_combine2_12xn_u8:\n");
13518     p = orc_program_new ();
13519       orc_program_set_constant_n (p, 12);
13520       orc_program_set_2d (p);
13521     orc_program_set_name (p, "orc_combine2_12xn_u8");
13522     orc_program_set_backup_function (p, _backup_orc_combine2_12xn_u8);
13523     orc_program_add_destination (p, 1, "d1");
13524     orc_program_add_source (p, 1, "s1");
13525     orc_program_add_source (p, 1, "s2");
13526     orc_program_add_parameter (p, 2, "p1");
13527     orc_program_add_parameter (p, 2, "p2");
13528     orc_program_add_parameter (p, 2, "p3");
13529     orc_program_add_parameter (p, 2, "p4");
13530     orc_program_add_temporary (p, 2, "t1");
13531     orc_program_add_temporary (p, 2, "t2");
13532
13533       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
13534       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, ORC_VAR_D1);
13535       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1);
13536       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P2, ORC_VAR_D1);
13537       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1);
13538       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P3, ORC_VAR_D1);
13539       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P4, ORC_VAR_D1);
13540       orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
13541
13542     if (benchmark) {
13543       printf ("    cycles (emulate) :   %g\n",
13544           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
13545     }
13546
13547     ret = orc_test_compare_output_backup (p);
13548     if (!ret) {
13549       error = TRUE;
13550     } else if (!quiet) {
13551       printf ("    backup function  :   PASSED\n");
13552     }
13553
13554     if (benchmark) {
13555       printf ("    cycles (backup)  :   %g\n",
13556           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
13557     }
13558
13559     ret = orc_test_compare_output (p);
13560     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
13561       printf ("    compiled function:   COMPILE FAILED\n");
13562     } else if (!ret) {
13563       error = TRUE;
13564     } else if (!quiet) {
13565       printf ("    compiled function:   PASSED\n");
13566     }
13567
13568     if (benchmark) {
13569       printf ("    cycles (compiled):   %g\n",
13570           orc_test_performance_full (p, 0, NULL));
13571     }
13572
13573     orc_program_free (p);
13574   }
13575
13576   /* orc_combine2_16xn_u8 */
13577   {
13578     OrcProgram *p = NULL;
13579     int ret;
13580
13581     if (!quiet)      printf ("orc_combine2_16xn_u8:\n");
13582     p = orc_program_new ();
13583       orc_program_set_constant_n (p, 16);
13584       orc_program_set_2d (p);
13585     orc_program_set_name (p, "orc_combine2_16xn_u8");
13586     orc_program_set_backup_function (p, _backup_orc_combine2_16xn_u8);
13587     orc_program_add_destination (p, 1, "d1");
13588     orc_program_add_source (p, 1, "s1");
13589     orc_program_add_source (p, 1, "s2");
13590     orc_program_add_parameter (p, 2, "p1");
13591     orc_program_add_parameter (p, 2, "p2");
13592     orc_program_add_parameter (p, 2, "p3");
13593     orc_program_add_parameter (p, 2, "p4");
13594     orc_program_add_temporary (p, 2, "t1");
13595     orc_program_add_temporary (p, 2, "t2");
13596
13597       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
13598       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, ORC_VAR_D1);
13599       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1);
13600       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P2, ORC_VAR_D1);
13601       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1);
13602       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P3, ORC_VAR_D1);
13603       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P4, ORC_VAR_D1);
13604       orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
13605
13606     if (benchmark) {
13607       printf ("    cycles (emulate) :   %g\n",
13608           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
13609     }
13610
13611     ret = orc_test_compare_output_backup (p);
13612     if (!ret) {
13613       error = TRUE;
13614     } else if (!quiet) {
13615       printf ("    backup function  :   PASSED\n");
13616     }
13617
13618     if (benchmark) {
13619       printf ("    cycles (backup)  :   %g\n",
13620           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
13621     }
13622
13623     ret = orc_test_compare_output (p);
13624     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
13625       printf ("    compiled function:   COMPILE FAILED\n");
13626     } else if (!ret) {
13627       error = TRUE;
13628     } else if (!quiet) {
13629       printf ("    compiled function:   PASSED\n");
13630     }
13631
13632     if (benchmark) {
13633       printf ("    cycles (compiled):   %g\n",
13634           orc_test_performance_full (p, 0, NULL));
13635     }
13636
13637     orc_program_free (p);
13638   }
13639
13640   /* orc_combine2_nxm_u8 */
13641   {
13642     OrcProgram *p = NULL;
13643     int ret;
13644
13645     if (!quiet)      printf ("orc_combine2_nxm_u8:\n");
13646     p = orc_program_new ();
13647       orc_program_set_2d (p);
13648     orc_program_set_name (p, "orc_combine2_nxm_u8");
13649     orc_program_set_backup_function (p, _backup_orc_combine2_nxm_u8);
13650     orc_program_add_destination (p, 1, "d1");
13651     orc_program_add_source (p, 1, "s1");
13652     orc_program_add_source (p, 1, "s2");
13653     orc_program_add_parameter (p, 2, "p1");
13654     orc_program_add_parameter (p, 2, "p2");
13655     orc_program_add_parameter (p, 2, "p3");
13656     orc_program_add_parameter (p, 2, "p4");
13657     orc_program_add_temporary (p, 2, "t1");
13658     orc_program_add_temporary (p, 2, "t2");
13659
13660       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
13661       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, ORC_VAR_D1);
13662       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1);
13663       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P2, ORC_VAR_D1);
13664       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1);
13665       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P3, ORC_VAR_D1);
13666       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P4, ORC_VAR_D1);
13667       orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
13668
13669     if (benchmark) {
13670       printf ("    cycles (emulate) :   %g\n",
13671           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
13672     }
13673
13674     ret = orc_test_compare_output_backup (p);
13675     if (!ret) {
13676       error = TRUE;
13677     } else if (!quiet) {
13678       printf ("    backup function  :   PASSED\n");
13679     }
13680
13681     if (benchmark) {
13682       printf ("    cycles (backup)  :   %g\n",
13683           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
13684     }
13685
13686     ret = orc_test_compare_output (p);
13687     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
13688       printf ("    compiled function:   COMPILE FAILED\n");
13689     } else if (!ret) {
13690       error = TRUE;
13691     } else if (!quiet) {
13692       printf ("    compiled function:   PASSED\n");
13693     }
13694
13695     if (benchmark) {
13696       printf ("    cycles (compiled):   %g\n",
13697           orc_test_performance_full (p, 0, NULL));
13698     }
13699
13700     orc_program_free (p);
13701   }
13702
13703   /* orc_sad_nxm_u8 */
13704   {
13705     OrcProgram *p = NULL;
13706     int ret;
13707
13708     if (!quiet)      printf ("orc_sad_nxm_u8:\n");
13709     p = orc_program_new ();
13710       orc_program_set_2d (p);
13711     orc_program_set_name (p, "orc_sad_nxm_u8");
13712     orc_program_set_backup_function (p, _backup_orc_sad_nxm_u8);
13713     orc_program_add_source (p, 1, "s1");
13714     orc_program_add_source (p, 1, "s2");
13715     orc_program_add_accumulator (p, 4, "a1");
13716
13717       orc_program_append_2 (p, "accsadubl", 0, ORC_VAR_A1, ORC_VAR_S1, ORC_VAR_S2, ORC_VAR_D1);
13718
13719     if (benchmark) {
13720       printf ("    cycles (emulate) :   %g\n",
13721           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
13722     }
13723
13724     ret = orc_test_compare_output_backup (p);
13725     if (!ret) {
13726       error = TRUE;
13727     } else if (!quiet) {
13728       printf ("    backup function  :   PASSED\n");
13729     }
13730
13731     if (benchmark) {
13732       printf ("    cycles (backup)  :   %g\n",
13733           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
13734     }
13735
13736     ret = orc_test_compare_output (p);
13737     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
13738       printf ("    compiled function:   COMPILE FAILED\n");
13739     } else if (!ret) {
13740       error = TRUE;
13741     } else if (!quiet) {
13742       printf ("    compiled function:   PASSED\n");
13743     }
13744
13745     if (benchmark) {
13746       printf ("    cycles (compiled):   %g\n",
13747           orc_test_performance_full (p, 0, NULL));
13748     }
13749
13750     orc_program_free (p);
13751   }
13752
13753   /* orc_sad_8x8_u8 */
13754   {
13755     OrcProgram *p = NULL;
13756     int ret;
13757
13758     if (!quiet)      printf ("orc_sad_8x8_u8:\n");
13759     p = orc_program_new ();
13760       orc_program_set_constant_n (p, 8);
13761       orc_program_set_2d (p);
13762       orc_program_set_constant_m (p, 8);
13763     orc_program_set_name (p, "orc_sad_8x8_u8");
13764     orc_program_set_backup_function (p, _backup_orc_sad_8x8_u8);
13765     orc_program_add_source (p, 1, "s1");
13766     orc_program_add_source (p, 1, "s2");
13767     orc_program_add_accumulator (p, 4, "a1");
13768
13769       orc_program_append_2 (p, "accsadubl", 0, ORC_VAR_A1, ORC_VAR_S1, ORC_VAR_S2, ORC_VAR_D1);
13770
13771     if (benchmark) {
13772       printf ("    cycles (emulate) :   %g\n",
13773           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
13774     }
13775
13776     ret = orc_test_compare_output_backup (p);
13777     if (!ret) {
13778       error = TRUE;
13779     } else if (!quiet) {
13780       printf ("    backup function  :   PASSED\n");
13781     }
13782
13783     if (benchmark) {
13784       printf ("    cycles (backup)  :   %g\n",
13785           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
13786     }
13787
13788     ret = orc_test_compare_output (p);
13789     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
13790       printf ("    compiled function:   COMPILE FAILED\n");
13791     } else if (!ret) {
13792       error = TRUE;
13793     } else if (!quiet) {
13794       printf ("    compiled function:   PASSED\n");
13795     }
13796
13797     if (benchmark) {
13798       printf ("    cycles (compiled):   %g\n",
13799           orc_test_performance_full (p, 0, NULL));
13800     }
13801
13802     orc_program_free (p);
13803   }
13804
13805   /* orc_sad_12x12_u8 */
13806   {
13807     OrcProgram *p = NULL;
13808     int ret;
13809
13810     if (!quiet)      printf ("orc_sad_12x12_u8:\n");
13811     p = orc_program_new ();
13812       orc_program_set_constant_n (p, 12);
13813       orc_program_set_2d (p);
13814       orc_program_set_constant_m (p, 12);
13815     orc_program_set_name (p, "orc_sad_12x12_u8");
13816     orc_program_set_backup_function (p, _backup_orc_sad_12x12_u8);
13817     orc_program_add_source (p, 1, "s1");
13818     orc_program_add_source (p, 1, "s2");
13819     orc_program_add_accumulator (p, 4, "a1");
13820
13821       orc_program_append_2 (p, "accsadubl", 0, ORC_VAR_A1, ORC_VAR_S1, ORC_VAR_S2, ORC_VAR_D1);
13822
13823     if (benchmark) {
13824       printf ("    cycles (emulate) :   %g\n",
13825           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
13826     }
13827
13828     ret = orc_test_compare_output_backup (p);
13829     if (!ret) {
13830       error = TRUE;
13831     } else if (!quiet) {
13832       printf ("    backup function  :   PASSED\n");
13833     }
13834
13835     if (benchmark) {
13836       printf ("    cycles (backup)  :   %g\n",
13837           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
13838     }
13839
13840     ret = orc_test_compare_output (p);
13841     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
13842       printf ("    compiled function:   COMPILE FAILED\n");
13843     } else if (!ret) {
13844       error = TRUE;
13845     } else if (!quiet) {
13846       printf ("    compiled function:   PASSED\n");
13847     }
13848
13849     if (benchmark) {
13850       printf ("    cycles (compiled):   %g\n",
13851           orc_test_performance_full (p, 0, NULL));
13852     }
13853
13854     orc_program_free (p);
13855   }
13856
13857   /* orc_sad_16xn_u8 */
13858   {
13859     OrcProgram *p = NULL;
13860     int ret;
13861
13862     if (!quiet)      printf ("orc_sad_16xn_u8:\n");
13863     p = orc_program_new ();
13864       orc_program_set_constant_n (p, 16);
13865       orc_program_set_2d (p);
13866     orc_program_set_name (p, "orc_sad_16xn_u8");
13867     orc_program_set_backup_function (p, _backup_orc_sad_16xn_u8);
13868     orc_program_add_source (p, 1, "s1");
13869     orc_program_add_source (p, 1, "s2");
13870     orc_program_add_accumulator (p, 4, "a1");
13871
13872       orc_program_append_2 (p, "accsadubl", 0, ORC_VAR_A1, ORC_VAR_S1, ORC_VAR_S2, ORC_VAR_D1);
13873
13874     if (benchmark) {
13875       printf ("    cycles (emulate) :   %g\n",
13876           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
13877     }
13878
13879     ret = orc_test_compare_output_backup (p);
13880     if (!ret) {
13881       error = TRUE;
13882     } else if (!quiet) {
13883       printf ("    backup function  :   PASSED\n");
13884     }
13885
13886     if (benchmark) {
13887       printf ("    cycles (backup)  :   %g\n",
13888           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
13889     }
13890
13891     ret = orc_test_compare_output (p);
13892     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
13893       printf ("    compiled function:   COMPILE FAILED\n");
13894     } else if (!ret) {
13895       error = TRUE;
13896     } else if (!quiet) {
13897       printf ("    compiled function:   PASSED\n");
13898     }
13899
13900     if (benchmark) {
13901       printf ("    cycles (compiled):   %g\n",
13902           orc_test_performance_full (p, 0, NULL));
13903     }
13904
13905     orc_program_free (p);
13906   }
13907
13908   /* orc_sad_32xn_u8 */
13909   {
13910     OrcProgram *p = NULL;
13911     int ret;
13912
13913     if (!quiet)      printf ("orc_sad_32xn_u8:\n");
13914     p = orc_program_new ();
13915       orc_program_set_constant_n (p, 32);
13916       orc_program_set_2d (p);
13917     orc_program_set_name (p, "orc_sad_32xn_u8");
13918     orc_program_set_backup_function (p, _backup_orc_sad_32xn_u8);
13919     orc_program_add_source (p, 1, "s1");
13920     orc_program_add_source (p, 1, "s2");
13921     orc_program_add_accumulator (p, 4, "a1");
13922
13923       orc_program_append_2 (p, "accsadubl", 0, ORC_VAR_A1, ORC_VAR_S1, ORC_VAR_S2, ORC_VAR_D1);
13924
13925     if (benchmark) {
13926       printf ("    cycles (emulate) :   %g\n",
13927           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
13928     }
13929
13930     ret = orc_test_compare_output_backup (p);
13931     if (!ret) {
13932       error = TRUE;
13933     } else if (!quiet) {
13934       printf ("    backup function  :   PASSED\n");
13935     }
13936
13937     if (benchmark) {
13938       printf ("    cycles (backup)  :   %g\n",
13939           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
13940     }
13941
13942     ret = orc_test_compare_output (p);
13943     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
13944       printf ("    compiled function:   COMPILE FAILED\n");
13945     } else if (!ret) {
13946       error = TRUE;
13947     } else if (!quiet) {
13948       printf ("    compiled function:   PASSED\n");
13949     }
13950
13951     if (benchmark) {
13952       printf ("    cycles (compiled):   %g\n",
13953           orc_test_performance_full (p, 0, NULL));
13954     }
13955
13956     orc_program_free (p);
13957   }
13958
13959   /* convert_rgb_to_gray */
13960   {
13961     OrcProgram *p = NULL;
13962     int ret;
13963
13964     if (!quiet)      printf ("convert_rgb_to_gray:\n");
13965     p = orc_program_new ();
13966     orc_program_set_name (p, "convert_rgb_to_gray");
13967     orc_program_set_backup_function (p, _backup_convert_rgb_to_gray);
13968     orc_program_add_destination (p, 1, "d1");
13969     orc_program_add_source (p, 4, "s1");
13970       orc_program_add_constant (p, 4, 0x00004c8b, "c1");
13971       orc_program_add_constant (p, 4, 0x00009646, "c2");
13972       orc_program_add_constant (p, 4, 0x00001d2f, "c3");
13973       orc_program_add_constant (p, 4, 0x00000080, "c4");
13974     orc_program_add_temporary (p, 1, "t1");
13975     orc_program_add_temporary (p, 2, "t2");
13976     orc_program_add_temporary (p, 2, "t3");
13977
13978       orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
13979       orc_program_append_2 (p, "select0wb", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
13980       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
13981       orc_program_append_2 (p, "swapw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_D1, ORC_VAR_D1);
13982       orc_program_append_2 (p, "mulhuw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C1, ORC_VAR_D1);
13983       orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
13984       orc_program_append_2 (p, "select1wb", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
13985       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
13986       orc_program_append_2 (p, "swapw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
13987       orc_program_append_2 (p, "mulhuw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C2, ORC_VAR_D1);
13988       orc_program_append_2 (p, "addusw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1);
13989       orc_program_append_2 (p, "select1lw", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
13990       orc_program_append_2 (p, "select0wb", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
13991       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
13992       orc_program_append_2 (p, "swapw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
13993       orc_program_append_2 (p, "mulhuw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C3, ORC_VAR_D1);
13994       orc_program_append_2 (p, "addusw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1);
13995       orc_program_append_2 (p, "addusw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C4, ORC_VAR_D1);
13996       orc_program_append_2 (p, "select1wb", 0, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_D1, ORC_VAR_D1);
13997
13998     if (benchmark) {
13999       printf ("    cycles (emulate) :   %g\n",
14000           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
14001     }
14002
14003     ret = orc_test_compare_output_backup (p);
14004     if (!ret) {
14005       error = TRUE;
14006     } else if (!quiet) {
14007       printf ("    backup function  :   PASSED\n");
14008     }
14009
14010     if (benchmark) {
14011       printf ("    cycles (backup)  :   %g\n",
14012           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
14013     }
14014
14015     ret = orc_test_compare_output (p);
14016     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
14017       printf ("    compiled function:   COMPILE FAILED\n");
14018     } else if (!ret) {
14019       error = TRUE;
14020     } else if (!quiet) {
14021       printf ("    compiled function:   PASSED\n");
14022     }
14023
14024     if (benchmark) {
14025       printf ("    cycles (compiled):   %g\n",
14026           orc_test_performance_full (p, 0, NULL));
14027     }
14028
14029     orc_program_free (p);
14030   }
14031
14032   /* canny_calc_delta_x */
14033   {
14034     OrcProgram *p = NULL;
14035     int ret;
14036
14037     if (!quiet)      printf ("canny_calc_delta_x:\n");
14038     p = orc_program_new ();
14039     orc_program_set_name (p, "canny_calc_delta_x");
14040     orc_program_set_backup_function (p, _backup_canny_calc_delta_x);
14041     orc_program_add_destination (p, 4, "d1");
14042     orc_program_add_source (p, 4, "s1");
14043     orc_program_add_source (p, 4, "s2");
14044     orc_program_add_temporary (p, 2, "t1");
14045     orc_program_add_temporary (p, 2, "t2");
14046     orc_program_add_temporary (p, 1, "t3");
14047     orc_program_add_temporary (p, 2, "t4");
14048     orc_program_add_temporary (p, 1, "t5");
14049     orc_program_add_temporary (p, 2, "t6");
14050     orc_program_add_temporary (p, 4, "t7");
14051     orc_program_add_temporary (p, 4, "t8");
14052
14053       orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
14054       orc_program_append_2 (p, "select1wb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
14055       orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T4, ORC_VAR_S2, ORC_VAR_D1, ORC_VAR_D1);
14056       orc_program_append_2 (p, "select1wb", 0, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_D1, ORC_VAR_D1);
14057       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1, ORC_VAR_D1);
14058       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T6, ORC_VAR_T5, ORC_VAR_D1, ORC_VAR_D1);
14059       orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_T4, ORC_VAR_T6, ORC_VAR_D1);
14060       orc_program_append_2 (p, "convswl", 0, ORC_VAR_T7, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
14061       orc_program_append_2 (p, "mulll", 0, ORC_VAR_T8, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_D1);
14062       orc_program_append_2 (p, "select1lw", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
14063       orc_program_append_2 (p, "select0wb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
14064       orc_program_append_2 (p, "select1lw", 0, ORC_VAR_T4, ORC_VAR_S2, ORC_VAR_D1, ORC_VAR_D1);
14065       orc_program_append_2 (p, "select0wb", 0, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_D1, ORC_VAR_D1);
14066       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1, ORC_VAR_D1);
14067       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T6, ORC_VAR_T5, ORC_VAR_D1, ORC_VAR_D1);
14068       orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_T4, ORC_VAR_T6, ORC_VAR_D1);
14069       orc_program_append_2 (p, "convswl", 0, ORC_VAR_T7, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
14070       orc_program_append_2 (p, "mulll", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_D1);
14071       orc_program_append_2 (p, "addl", 0, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_T7, ORC_VAR_D1);
14072       orc_program_append_2 (p, "select1lw", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
14073       orc_program_append_2 (p, "select1wb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
14074       orc_program_append_2 (p, "select1lw", 0, ORC_VAR_T4, ORC_VAR_S2, ORC_VAR_D1, ORC_VAR_D1);
14075       orc_program_append_2 (p, "select1wb", 0, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_D1, ORC_VAR_D1);
14076       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1, ORC_VAR_D1);
14077       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T6, ORC_VAR_T5, ORC_VAR_D1, ORC_VAR_D1);
14078       orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_T4, ORC_VAR_T6, ORC_VAR_D1);
14079       orc_program_append_2 (p, "convswl", 0, ORC_VAR_T7, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
14080       orc_program_append_2 (p, "mulll", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_D1);
14081       orc_program_append_2 (p, "addl", 0, ORC_VAR_D1, ORC_VAR_T8, ORC_VAR_T7, ORC_VAR_D1);
14082
14083     if (benchmark) {
14084       printf ("    cycles (emulate) :   %g\n",
14085           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
14086     }
14087
14088     ret = orc_test_compare_output_backup (p);
14089     if (!ret) {
14090       error = TRUE;
14091     } else if (!quiet) {
14092       printf ("    backup function  :   PASSED\n");
14093     }
14094
14095     if (benchmark) {
14096       printf ("    cycles (backup)  :   %g\n",
14097           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
14098     }
14099
14100     ret = orc_test_compare_output (p);
14101     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
14102       printf ("    compiled function:   COMPILE FAILED\n");
14103     } else if (!ret) {
14104       error = TRUE;
14105     } else if (!quiet) {
14106       printf ("    compiled function:   PASSED\n");
14107     }
14108
14109     if (benchmark) {
14110       printf ("    cycles (compiled):   %g\n",
14111           orc_test_performance_full (p, 0, NULL));
14112     }
14113
14114     orc_program_free (p);
14115   }
14116
14117   /* i420_to_ayuv */
14118   {
14119     OrcProgram *p = NULL;
14120     int ret;
14121
14122     if (!quiet)      printf ("i420_to_ayuv:\n");
14123     p = orc_program_new ();
14124     orc_program_set_name (p, "i420_to_ayuv");
14125     orc_program_set_backup_function (p, _backup_i420_to_ayuv);
14126     orc_program_add_destination (p, 4, "d1");
14127     orc_program_add_source (p, 1, "s1");
14128     orc_program_add_source (p, 1, "s2");
14129     orc_program_add_source (p, 1, "s3");
14130     orc_program_add_parameter (p, 1, "p1");
14131     orc_program_add_temporary (p, 1, "t1");
14132     orc_program_add_temporary (p, 1, "t2");
14133     orc_program_add_temporary (p, 1, "t3");
14134     orc_program_add_temporary (p, 2, "t4");
14135     orc_program_add_temporary (p, 2, "t5");
14136
14137       orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_D1, ORC_VAR_D1);
14138       orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T2, ORC_VAR_S3, ORC_VAR_D1, ORC_VAR_D1);
14139       orc_program_append_2 (p, "loadb", 0, ORC_VAR_T3, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
14140       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T4, ORC_VAR_P1, ORC_VAR_T3, ORC_VAR_D1);
14141       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T5, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1);
14142       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T4, ORC_VAR_T5, ORC_VAR_D1);
14143
14144     if (benchmark) {
14145       printf ("    cycles (emulate) :   %g\n",
14146           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
14147     }
14148
14149     ret = orc_test_compare_output_backup (p);
14150     if (!ret) {
14151       error = TRUE;
14152     } else if (!quiet) {
14153       printf ("    backup function  :   PASSED\n");
14154     }
14155
14156     if (benchmark) {
14157       printf ("    cycles (backup)  :   %g\n",
14158           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
14159     }
14160
14161     ret = orc_test_compare_output (p);
14162     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
14163       printf ("    compiled function:   COMPILE FAILED\n");
14164     } else if (!ret) {
14165       error = TRUE;
14166     } else if (!quiet) {
14167       printf ("    compiled function:   PASSED\n");
14168     }
14169
14170     if (benchmark) {
14171       printf ("    cycles (compiled):   %g\n",
14172           orc_test_performance_full (p, 0, NULL));
14173     }
14174
14175     orc_program_free (p);
14176   }
14177
14178   /* test_4x */
14179   {
14180     OrcProgram *p = NULL;
14181     int ret;
14182
14183     if (!quiet)      printf ("test_4x:\n");
14184     p = orc_program_new ();
14185     orc_program_set_name (p, "test_4x");
14186     orc_program_set_backup_function (p, _backup_test_4x);
14187     orc_program_add_destination (p, 4, "d1");
14188     orc_program_add_source (p, 4, "s1");
14189     orc_program_add_source (p, 4, "s2");
14190
14191       orc_program_append_2 (p, "addusb", 2, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_S2, ORC_VAR_D1);
14192
14193     if (benchmark) {
14194       printf ("    cycles (emulate) :   %g\n",
14195           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
14196     }
14197
14198     ret = orc_test_compare_output_backup (p);
14199     if (!ret) {
14200       error = TRUE;
14201     } else if (!quiet) {
14202       printf ("    backup function  :   PASSED\n");
14203     }
14204
14205     if (benchmark) {
14206       printf ("    cycles (backup)  :   %g\n",
14207           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
14208     }
14209
14210     ret = orc_test_compare_output (p);
14211     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
14212       printf ("    compiled function:   COMPILE FAILED\n");
14213     } else if (!ret) {
14214       error = TRUE;
14215     } else if (!quiet) {
14216       printf ("    compiled function:   PASSED\n");
14217     }
14218
14219     if (benchmark) {
14220       printf ("    cycles (compiled):   %g\n",
14221           orc_test_performance_full (p, 0, NULL));
14222     }
14223
14224     orc_program_free (p);
14225   }
14226
14227   /* test_4x_2 */
14228   {
14229     OrcProgram *p = NULL;
14230     int ret;
14231
14232     if (!quiet)      printf ("test_4x_2:\n");
14233     p = orc_program_new ();
14234     orc_program_set_name (p, "test_4x_2");
14235     orc_program_set_backup_function (p, _backup_test_4x_2);
14236     orc_program_add_destination (p, 4, "d1");
14237     orc_program_add_source (p, 4, "s1");
14238     orc_program_add_parameter (p, 4, "p1");
14239
14240       orc_program_append_2 (p, "addusb", 2, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_P1, ORC_VAR_D1);
14241
14242     if (benchmark) {
14243       printf ("    cycles (emulate) :   %g\n",
14244           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
14245     }
14246
14247     ret = orc_test_compare_output_backup (p);
14248     if (!ret) {
14249       error = TRUE;
14250     } else if (!quiet) {
14251       printf ("    backup function  :   PASSED\n");
14252     }
14253
14254     if (benchmark) {
14255       printf ("    cycles (backup)  :   %g\n",
14256           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
14257     }
14258
14259     ret = orc_test_compare_output (p);
14260     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
14261       printf ("    compiled function:   COMPILE FAILED\n");
14262     } else if (!ret) {
14263       error = TRUE;
14264     } else if (!quiet) {
14265       printf ("    compiled function:   PASSED\n");
14266     }
14267
14268     if (benchmark) {
14269       printf ("    cycles (compiled):   %g\n",
14270           orc_test_performance_full (p, 0, NULL));
14271     }
14272
14273     orc_program_free (p);
14274   }
14275
14276   /* orc_splat_u16 */
14277   {
14278     OrcProgram *p = NULL;
14279     int ret;
14280
14281     if (!quiet)      printf ("orc_splat_u16:\n");
14282     p = orc_program_new ();
14283     orc_program_set_name (p, "orc_splat_u16");
14284     orc_program_set_backup_function (p, _backup_orc_splat_u16);
14285     orc_program_add_destination (p, 2, "d1");
14286     orc_program_add_parameter (p, 2, "p1");
14287
14288       orc_program_append_2 (p, "copyw", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1, ORC_VAR_D1);
14289
14290     if (benchmark) {
14291       printf ("    cycles (emulate) :   %g\n",
14292           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
14293     }
14294
14295     ret = orc_test_compare_output_backup (p);
14296     if (!ret) {
14297       error = TRUE;
14298     } else if (!quiet) {
14299       printf ("    backup function  :   PASSED\n");
14300     }
14301
14302     if (benchmark) {
14303       printf ("    cycles (backup)  :   %g\n",
14304           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
14305     }
14306
14307     ret = orc_test_compare_output (p);
14308     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
14309       printf ("    compiled function:   COMPILE FAILED\n");
14310     } else if (!ret) {
14311       error = TRUE;
14312     } else if (!quiet) {
14313       printf ("    compiled function:   PASSED\n");
14314     }
14315
14316     if (benchmark) {
14317       printf ("    cycles (compiled):   %g\n",
14318           orc_test_performance_full (p, 0, NULL));
14319     }
14320
14321     orc_program_free (p);
14322   }
14323
14324   /* orc_splat_u32 */
14325   {
14326     OrcProgram *p = NULL;
14327     int ret;
14328
14329     if (!quiet)      printf ("orc_splat_u32:\n");
14330     p = orc_program_new ();
14331     orc_program_set_name (p, "orc_splat_u32");
14332     orc_program_set_backup_function (p, _backup_orc_splat_u32);
14333     orc_program_add_destination (p, 4, "d1");
14334     orc_program_add_parameter (p, 4, "p1");
14335
14336       orc_program_append_2 (p, "copyl", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1, ORC_VAR_D1);
14337
14338     if (benchmark) {
14339       printf ("    cycles (emulate) :   %g\n",
14340           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
14341     }
14342
14343     ret = orc_test_compare_output_backup (p);
14344     if (!ret) {
14345       error = TRUE;
14346     } else if (!quiet) {
14347       printf ("    backup function  :   PASSED\n");
14348     }
14349
14350     if (benchmark) {
14351       printf ("    cycles (backup)  :   %g\n",
14352           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
14353     }
14354
14355     ret = orc_test_compare_output (p);
14356     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
14357       printf ("    compiled function:   COMPILE FAILED\n");
14358     } else if (!ret) {
14359       error = TRUE;
14360     } else if (!quiet) {
14361       printf ("    compiled function:   PASSED\n");
14362     }
14363
14364     if (benchmark) {
14365       printf ("    cycles (compiled):   %g\n",
14366           orc_test_performance_full (p, 0, NULL));
14367     }
14368
14369     orc_program_free (p);
14370   }
14371
14372   /* orc_splat_u16_2d */
14373   {
14374     OrcProgram *p = NULL;
14375     int ret;
14376
14377     if (!quiet)      printf ("orc_splat_u16_2d:\n");
14378     p = orc_program_new ();
14379       orc_program_set_2d (p);
14380     orc_program_set_name (p, "orc_splat_u16_2d");
14381     orc_program_set_backup_function (p, _backup_orc_splat_u16_2d);
14382     orc_program_add_destination (p, 2, "d1");
14383     orc_program_add_parameter (p, 2, "p1");
14384
14385       orc_program_append_2 (p, "copyw", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1, ORC_VAR_D1);
14386
14387     if (benchmark) {
14388       printf ("    cycles (emulate) :   %g\n",
14389           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
14390     }
14391
14392     ret = orc_test_compare_output_backup (p);
14393     if (!ret) {
14394       error = TRUE;
14395     } else if (!quiet) {
14396       printf ("    backup function  :   PASSED\n");
14397     }
14398
14399     if (benchmark) {
14400       printf ("    cycles (backup)  :   %g\n",
14401           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
14402     }
14403
14404     ret = orc_test_compare_output (p);
14405     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
14406       printf ("    compiled function:   COMPILE FAILED\n");
14407     } else if (!ret) {
14408       error = TRUE;
14409     } else if (!quiet) {
14410       printf ("    compiled function:   PASSED\n");
14411     }
14412
14413     if (benchmark) {
14414       printf ("    cycles (compiled):   %g\n",
14415           orc_test_performance_full (p, 0, NULL));
14416     }
14417
14418     orc_program_free (p);
14419   }
14420
14421   /* orc_splat_u32_2d */
14422   {
14423     OrcProgram *p = NULL;
14424     int ret;
14425
14426     if (!quiet)      printf ("orc_splat_u32_2d:\n");
14427     p = orc_program_new ();
14428       orc_program_set_2d (p);
14429     orc_program_set_name (p, "orc_splat_u32_2d");
14430     orc_program_set_backup_function (p, _backup_orc_splat_u32_2d);
14431     orc_program_add_destination (p, 4, "d1");
14432     orc_program_add_parameter (p, 4, "p1");
14433
14434       orc_program_append_2 (p, "copyl", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1, ORC_VAR_D1);
14435
14436     if (benchmark) {
14437       printf ("    cycles (emulate) :   %g\n",
14438           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
14439     }
14440
14441     ret = orc_test_compare_output_backup (p);
14442     if (!ret) {
14443       error = TRUE;
14444     } else if (!quiet) {
14445       printf ("    backup function  :   PASSED\n");
14446     }
14447
14448     if (benchmark) {
14449       printf ("    cycles (backup)  :   %g\n",
14450           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
14451     }
14452
14453     ret = orc_test_compare_output (p);
14454     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
14455       printf ("    compiled function:   COMPILE FAILED\n");
14456     } else if (!ret) {
14457       error = TRUE;
14458     } else if (!quiet) {
14459       printf ("    compiled function:   PASSED\n");
14460     }
14461
14462     if (benchmark) {
14463       printf ("    cycles (compiled):   %g\n",
14464           orc_test_performance_full (p, 0, NULL));
14465     }
14466
14467     orc_program_free (p);
14468   }
14469
14470   /* orc_copy_u16_2d */
14471   {
14472     OrcProgram *p = NULL;
14473     int ret;
14474
14475     if (!quiet)      printf ("orc_copy_u16_2d:\n");
14476     p = orc_program_new ();
14477       orc_program_set_2d (p);
14478     orc_program_set_name (p, "orc_copy_u16_2d");
14479     orc_program_set_backup_function (p, _backup_orc_copy_u16_2d);
14480     orc_program_add_destination (p, 2, "d1");
14481     orc_program_add_source (p, 2, "s1");
14482
14483       orc_program_append_2 (p, "copyw", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
14484
14485     if (benchmark) {
14486       printf ("    cycles (emulate) :   %g\n",
14487           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
14488     }
14489
14490     ret = orc_test_compare_output_backup (p);
14491     if (!ret) {
14492       error = TRUE;
14493     } else if (!quiet) {
14494       printf ("    backup function  :   PASSED\n");
14495     }
14496
14497     if (benchmark) {
14498       printf ("    cycles (backup)  :   %g\n",
14499           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
14500     }
14501
14502     ret = orc_test_compare_output (p);
14503     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
14504       printf ("    compiled function:   COMPILE FAILED\n");
14505     } else if (!ret) {
14506       error = TRUE;
14507     } else if (!quiet) {
14508       printf ("    compiled function:   PASSED\n");
14509     }
14510
14511     if (benchmark) {
14512       printf ("    cycles (compiled):   %g\n",
14513           orc_test_performance_full (p, 0, NULL));
14514     }
14515
14516     orc_program_free (p);
14517   }
14518
14519   /* orc_copy_u32_2d */
14520   {
14521     OrcProgram *p = NULL;
14522     int ret;
14523
14524     if (!quiet)      printf ("orc_copy_u32_2d:\n");
14525     p = orc_program_new ();
14526       orc_program_set_2d (p);
14527     orc_program_set_name (p, "orc_copy_u32_2d");
14528     orc_program_set_backup_function (p, _backup_orc_copy_u32_2d);
14529     orc_program_add_destination (p, 4, "d1");
14530     orc_program_add_source (p, 4, "s1");
14531
14532       orc_program_append_2 (p, "copyl", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
14533
14534     if (benchmark) {
14535       printf ("    cycles (emulate) :   %g\n",
14536           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
14537     }
14538
14539     ret = orc_test_compare_output_backup (p);
14540     if (!ret) {
14541       error = TRUE;
14542     } else if (!quiet) {
14543       printf ("    backup function  :   PASSED\n");
14544     }
14545
14546     if (benchmark) {
14547       printf ("    cycles (backup)  :   %g\n",
14548           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
14549     }
14550
14551     ret = orc_test_compare_output (p);
14552     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
14553       printf ("    compiled function:   COMPILE FAILED\n");
14554     } else if (!ret) {
14555       error = TRUE;
14556     } else if (!quiet) {
14557       printf ("    compiled function:   PASSED\n");
14558     }
14559
14560     if (benchmark) {
14561       printf ("    cycles (compiled):   %g\n",
14562           orc_test_performance_full (p, 0, NULL));
14563     }
14564
14565     orc_program_free (p);
14566   }
14567
14568   /* orc_composite_add_8888_8888_2d */
14569   {
14570     OrcProgram *p = NULL;
14571     int ret;
14572
14573     if (!quiet)      printf ("orc_composite_add_8888_8888_2d:\n");
14574     p = orc_program_new ();
14575       orc_program_set_2d (p);
14576     orc_program_set_name (p, "orc_composite_add_8888_8888_2d");
14577     orc_program_set_backup_function (p, _backup_orc_composite_add_8888_8888_2d);
14578     orc_program_add_destination (p, 4, "d1");
14579     orc_program_add_source (p, 4, "s1");
14580
14581       orc_program_append_2 (p, "addusb", 2, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1);
14582
14583     if (benchmark) {
14584       printf ("    cycles (emulate) :   %g\n",
14585           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
14586     }
14587
14588     ret = orc_test_compare_output_backup (p);
14589     if (!ret) {
14590       error = TRUE;
14591     } else if (!quiet) {
14592       printf ("    backup function  :   PASSED\n");
14593     }
14594
14595     if (benchmark) {
14596       printf ("    cycles (backup)  :   %g\n",
14597           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
14598     }
14599
14600     ret = orc_test_compare_output (p);
14601     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
14602       printf ("    compiled function:   COMPILE FAILED\n");
14603     } else if (!ret) {
14604       error = TRUE;
14605     } else if (!quiet) {
14606       printf ("    compiled function:   PASSED\n");
14607     }
14608
14609     if (benchmark) {
14610       printf ("    cycles (compiled):   %g\n",
14611           orc_test_performance_full (p, 0, NULL));
14612     }
14613
14614     orc_program_free (p);
14615   }
14616
14617   /* orc_composite_add_8_8_line */
14618   {
14619     OrcProgram *p = NULL;
14620     int ret;
14621
14622     if (!quiet)      printf ("orc_composite_add_8_8_line:\n");
14623     p = orc_program_new ();
14624     orc_program_set_name (p, "orc_composite_add_8_8_line");
14625     orc_program_set_backup_function (p, _backup_orc_composite_add_8_8_line);
14626     orc_program_add_destination (p, 1, "d1");
14627     orc_program_add_source (p, 1, "s1");
14628
14629       orc_program_append_2 (p, "addusb", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1);
14630
14631     if (benchmark) {
14632       printf ("    cycles (emulate) :   %g\n",
14633           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
14634     }
14635
14636     ret = orc_test_compare_output_backup (p);
14637     if (!ret) {
14638       error = TRUE;
14639     } else if (!quiet) {
14640       printf ("    backup function  :   PASSED\n");
14641     }
14642
14643     if (benchmark) {
14644       printf ("    cycles (backup)  :   %g\n",
14645           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
14646     }
14647
14648     ret = orc_test_compare_output (p);
14649     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
14650       printf ("    compiled function:   COMPILE FAILED\n");
14651     } else if (!ret) {
14652       error = TRUE;
14653     } else if (!quiet) {
14654       printf ("    compiled function:   PASSED\n");
14655     }
14656
14657     if (benchmark) {
14658       printf ("    cycles (compiled):   %g\n",
14659           orc_test_performance_full (p, 0, NULL));
14660     }
14661
14662     orc_program_free (p);
14663   }
14664
14665   /* orc_composite_add_n_8_8_line */
14666   {
14667     OrcProgram *p = NULL;
14668     int ret;
14669
14670     if (!quiet)      printf ("orc_composite_add_n_8_8_line:\n");
14671     p = orc_program_new ();
14672     orc_program_set_name (p, "orc_composite_add_n_8_8_line");
14673     orc_program_set_backup_function (p, _backup_orc_composite_add_n_8_8_line);
14674     orc_program_add_destination (p, 1, "d1");
14675     orc_program_add_source (p, 1, "s1");
14676     orc_program_add_parameter (p, 2, "p1");
14677     orc_program_add_temporary (p, 2, "t1");
14678     orc_program_add_temporary (p, 1, "t2");
14679
14680       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
14681       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1);
14682       orc_program_append_2 (p, "div255w", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
14683       orc_program_append_2 (p, "convwb", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
14684       orc_program_append_2 (p, "addusb", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_D1);
14685
14686     if (benchmark) {
14687       printf ("    cycles (emulate) :   %g\n",
14688           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
14689     }
14690
14691     ret = orc_test_compare_output_backup (p);
14692     if (!ret) {
14693       error = TRUE;
14694     } else if (!quiet) {
14695       printf ("    backup function  :   PASSED\n");
14696     }
14697
14698     if (benchmark) {
14699       printf ("    cycles (backup)  :   %g\n",
14700           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
14701     }
14702
14703     ret = orc_test_compare_output (p);
14704     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
14705       printf ("    compiled function:   COMPILE FAILED\n");
14706     } else if (!ret) {
14707       error = TRUE;
14708     } else if (!quiet) {
14709       printf ("    compiled function:   PASSED\n");
14710     }
14711
14712     if (benchmark) {
14713       printf ("    cycles (compiled):   %g\n",
14714           orc_test_performance_full (p, 0, NULL));
14715     }
14716
14717     orc_program_free (p);
14718   }
14719
14720   /* orc_code_combine_add_u */
14721   {
14722     OrcProgram *p = NULL;
14723     int ret;
14724
14725     if (!quiet)      printf ("orc_code_combine_add_u:\n");
14726     p = orc_program_new ();
14727     orc_program_set_name (p, "orc_code_combine_add_u");
14728     orc_program_set_backup_function (p, _backup_orc_code_combine_add_u);
14729     orc_program_add_destination (p, 4, "d1");
14730     orc_program_add_source (p, 4, "s1");
14731     orc_program_add_source (p, 4, "s2");
14732     orc_program_add_temporary (p, 8, "t1");
14733     orc_program_add_temporary (p, 8, "t2");
14734     orc_program_add_temporary (p, 4, "t3");
14735
14736       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
14737       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, ORC_VAR_D1);
14738       orc_program_append_2 (p, "splatw3q", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
14739       orc_program_append_2 (p, "mullw", 2, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1);
14740       orc_program_append_2 (p, "div255w", 2, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
14741       orc_program_append_2 (p, "convwb", 2, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
14742       orc_program_append_2 (p, "addusb", 2, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_D1);
14743
14744     if (benchmark) {
14745       printf ("    cycles (emulate) :   %g\n",
14746           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
14747     }
14748
14749     ret = orc_test_compare_output_backup (p);
14750     if (!ret) {
14751       error = TRUE;
14752     } else if (!quiet) {
14753       printf ("    backup function  :   PASSED\n");
14754     }
14755
14756     if (benchmark) {
14757       printf ("    cycles (backup)  :   %g\n",
14758           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
14759     }
14760
14761     ret = orc_test_compare_output (p);
14762     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
14763       printf ("    compiled function:   COMPILE FAILED\n");
14764     } else if (!ret) {
14765       error = TRUE;
14766     } else if (!quiet) {
14767       printf ("    compiled function:   PASSED\n");
14768     }
14769
14770     if (benchmark) {
14771       printf ("    cycles (compiled):   %g\n",
14772           orc_test_performance_full (p, 0, NULL));
14773     }
14774
14775     orc_program_free (p);
14776   }
14777
14778   /* orc_code_combine_add_u_n */
14779   {
14780     OrcProgram *p = NULL;
14781     int ret;
14782
14783     if (!quiet)      printf ("orc_code_combine_add_u_n:\n");
14784     p = orc_program_new ();
14785     orc_program_set_name (p, "orc_code_combine_add_u_n");
14786     orc_program_set_backup_function (p, _backup_orc_code_combine_add_u_n);
14787     orc_program_add_destination (p, 4, "d1");
14788     orc_program_add_source (p, 4, "s1");
14789
14790       orc_program_append_2 (p, "addusb", 2, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1);
14791
14792     if (benchmark) {
14793       printf ("    cycles (emulate) :   %g\n",
14794           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
14795     }
14796
14797     ret = orc_test_compare_output_backup (p);
14798     if (!ret) {
14799       error = TRUE;
14800     } else if (!quiet) {
14801       printf ("    backup function  :   PASSED\n");
14802     }
14803
14804     if (benchmark) {
14805       printf ("    cycles (backup)  :   %g\n",
14806           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
14807     }
14808
14809     ret = orc_test_compare_output (p);
14810     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
14811       printf ("    compiled function:   COMPILE FAILED\n");
14812     } else if (!ret) {
14813       error = TRUE;
14814     } else if (!quiet) {
14815       printf ("    compiled function:   PASSED\n");
14816     }
14817
14818     if (benchmark) {
14819       printf ("    cycles (compiled):   %g\n",
14820           orc_test_performance_full (p, 0, NULL));
14821     }
14822
14823     orc_program_free (p);
14824   }
14825
14826   /* orc_code_combine_over_u */
14827   {
14828     OrcProgram *p = NULL;
14829     int ret;
14830
14831     if (!quiet)      printf ("orc_code_combine_over_u:\n");
14832     p = orc_program_new ();
14833     orc_program_set_name (p, "orc_code_combine_over_u");
14834     orc_program_set_backup_function (p, _backup_orc_code_combine_over_u);
14835     orc_program_add_destination (p, 4, "d1");
14836     orc_program_add_source (p, 4, "s1");
14837     orc_program_add_source (p, 4, "s2");
14838       orc_program_add_constant (p, 4, 0x000000ff, "c1");
14839     orc_program_add_temporary (p, 8, "t1");
14840     orc_program_add_temporary (p, 8, "t2");
14841     orc_program_add_temporary (p, 4, "t3");
14842     orc_program_add_temporary (p, 4, "t4");
14843     orc_program_add_temporary (p, 8, "t5");
14844
14845       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
14846       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, ORC_VAR_D1);
14847       orc_program_append_2 (p, "splatw3q", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
14848       orc_program_append_2 (p, "mullw", 2, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1);
14849       orc_program_append_2 (p, "div255w", 2, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
14850       orc_program_append_2 (p, "convwb", 2, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
14851       orc_program_append_2 (p, "loadl", 0, ORC_VAR_T4, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_D1);
14852       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_D1, ORC_VAR_D1);
14853       orc_program_append_2 (p, "xorw", 2, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
14854       orc_program_append_2 (p, "splatw3q", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
14855       orc_program_append_2 (p, "mullw", 2, ORC_VAR_T1, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_D1);
14856       orc_program_append_2 (p, "div255w", 2, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
14857       orc_program_append_2 (p, "convwb", 2, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
14858       orc_program_append_2 (p, "addusb", 2, ORC_VAR_D1, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1);
14859
14860     if (benchmark) {
14861       printf ("    cycles (emulate) :   %g\n",
14862           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
14863     }
14864
14865     ret = orc_test_compare_output_backup (p);
14866     if (!ret) {
14867       error = TRUE;
14868     } else if (!quiet) {
14869       printf ("    backup function  :   PASSED\n");
14870     }
14871
14872     if (benchmark) {
14873       printf ("    cycles (backup)  :   %g\n",
14874           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
14875     }
14876
14877     ret = orc_test_compare_output (p);
14878     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
14879       printf ("    compiled function:   COMPILE FAILED\n");
14880     } else if (!ret) {
14881       error = TRUE;
14882     } else if (!quiet) {
14883       printf ("    compiled function:   PASSED\n");
14884     }
14885
14886     if (benchmark) {
14887       printf ("    cycles (compiled):   %g\n",
14888           orc_test_performance_full (p, 0, NULL));
14889     }
14890
14891     orc_program_free (p);
14892   }
14893
14894   /* orc_code_combine_over_u_n */
14895   {
14896     OrcProgram *p = NULL;
14897     int ret;
14898
14899     if (!quiet)      printf ("orc_code_combine_over_u_n:\n");
14900     p = orc_program_new ();
14901     orc_program_set_name (p, "orc_code_combine_over_u_n");
14902     orc_program_set_backup_function (p, _backup_orc_code_combine_over_u_n);
14903     orc_program_add_destination (p, 4, "d1");
14904     orc_program_add_source (p, 4, "s1");
14905       orc_program_add_constant (p, 4, 0x000000ff, "c1");
14906     orc_program_add_temporary (p, 8, "t1");
14907     orc_program_add_temporary (p, 8, "t2");
14908     orc_program_add_temporary (p, 4, "t3");
14909     orc_program_add_temporary (p, 4, "t4");
14910     orc_program_add_temporary (p, 8, "t5");
14911
14912       orc_program_append_2 (p, "loadl", 0, ORC_VAR_T4, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
14913       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T1, ORC_VAR_T4, ORC_VAR_D1, ORC_VAR_D1);
14914       orc_program_append_2 (p, "loadl", 0, ORC_VAR_T3, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_D1);
14915       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T5, ORC_VAR_T3, ORC_VAR_D1, ORC_VAR_D1);
14916       orc_program_append_2 (p, "xorw", 2, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
14917       orc_program_append_2 (p, "splatw3q", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
14918       orc_program_append_2 (p, "mullw", 2, ORC_VAR_T1, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_D1);
14919       orc_program_append_2 (p, "div255w", 2, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
14920       orc_program_append_2 (p, "convwb", 2, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
14921       orc_program_append_2 (p, "addusb", 2, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T4, ORC_VAR_D1);
14922
14923     if (benchmark) {
14924       printf ("    cycles (emulate) :   %g\n",
14925           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
14926     }
14927
14928     ret = orc_test_compare_output_backup (p);
14929     if (!ret) {
14930       error = TRUE;
14931     } else if (!quiet) {
14932       printf ("    backup function  :   PASSED\n");
14933     }
14934
14935     if (benchmark) {
14936       printf ("    cycles (backup)  :   %g\n",
14937           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
14938     }
14939
14940     ret = orc_test_compare_output (p);
14941     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
14942       printf ("    compiled function:   COMPILE FAILED\n");
14943     } else if (!ret) {
14944       error = TRUE;
14945     } else if (!quiet) {
14946       printf ("    compiled function:   PASSED\n");
14947     }
14948
14949     if (benchmark) {
14950       printf ("    cycles (compiled):   %g\n",
14951           orc_test_performance_full (p, 0, NULL));
14952     }
14953
14954     orc_program_free (p);
14955   }
14956
14957   /* orc_code_combine_in_u */
14958   {
14959     OrcProgram *p = NULL;
14960     int ret;
14961
14962     if (!quiet)      printf ("orc_code_combine_in_u:\n");
14963     p = orc_program_new ();
14964     orc_program_set_name (p, "orc_code_combine_in_u");
14965     orc_program_set_backup_function (p, _backup_orc_code_combine_in_u);
14966     orc_program_add_destination (p, 4, "d1");
14967     orc_program_add_source (p, 4, "s1");
14968     orc_program_add_source (p, 4, "s2");
14969     orc_program_add_temporary (p, 8, "t1");
14970     orc_program_add_temporary (p, 8, "t2");
14971     orc_program_add_temporary (p, 8, "t3");
14972     orc_program_add_temporary (p, 8, "t4");
14973     orc_program_add_temporary (p, 8, "t5");
14974
14975       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T4, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
14976       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T5, ORC_VAR_S2, ORC_VAR_D1, ORC_VAR_D1);
14977       orc_program_append_2 (p, "splatw3q", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_D1, ORC_VAR_D1);
14978       orc_program_append_2 (p, "mullw", 2, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_T5, ORC_VAR_D1);
14979       orc_program_append_2 (p, "div255w", 2, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_D1, ORC_VAR_D1);
14980       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_D1);
14981       orc_program_append_2 (p, "splatw3q", 0, ORC_VAR_T5, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
14982       orc_program_append_2 (p, "mullw", 2, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_T5, ORC_VAR_D1);
14983       orc_program_append_2 (p, "div255w", 2, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_D1, ORC_VAR_D1);
14984       orc_program_append_2 (p, "convwb", 2, ORC_VAR_D1, ORC_VAR_T4, ORC_VAR_D1, ORC_VAR_D1);
14985
14986     if (benchmark) {
14987       printf ("    cycles (emulate) :   %g\n",
14988           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
14989     }
14990
14991     ret = orc_test_compare_output_backup (p);
14992     if (!ret) {
14993       error = TRUE;
14994     } else if (!quiet) {
14995       printf ("    backup function  :   PASSED\n");
14996     }
14997
14998     if (benchmark) {
14999       printf ("    cycles (backup)  :   %g\n",
15000           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
15001     }
15002
15003     ret = orc_test_compare_output (p);
15004     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
15005       printf ("    compiled function:   COMPILE FAILED\n");
15006     } else if (!ret) {
15007       error = TRUE;
15008     } else if (!quiet) {
15009       printf ("    compiled function:   PASSED\n");
15010     }
15011
15012     if (benchmark) {
15013       printf ("    cycles (compiled):   %g\n",
15014           orc_test_performance_full (p, 0, NULL));
15015     }
15016
15017     orc_program_free (p);
15018   }
15019
15020   /* orc_code_combine_in_u_n */
15021   {
15022     OrcProgram *p = NULL;
15023     int ret;
15024
15025     if (!quiet)      printf ("orc_code_combine_in_u_n:\n");
15026     p = orc_program_new ();
15027     orc_program_set_name (p, "orc_code_combine_in_u_n");
15028     orc_program_set_backup_function (p, _backup_orc_code_combine_in_u_n);
15029     orc_program_add_destination (p, 4, "d1");
15030     orc_program_add_source (p, 4, "s1");
15031     orc_program_add_temporary (p, 8, "t1");
15032     orc_program_add_temporary (p, 8, "t2");
15033     orc_program_add_temporary (p, 8, "t3");
15034     orc_program_add_temporary (p, 8, "t4");
15035     orc_program_add_temporary (p, 8, "t5");
15036
15037       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T4, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
15038       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_D1);
15039       orc_program_append_2 (p, "splatw3q", 0, ORC_VAR_T5, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
15040       orc_program_append_2 (p, "mullw", 2, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_T5, ORC_VAR_D1);
15041       orc_program_append_2 (p, "div255w", 2, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_D1, ORC_VAR_D1);
15042       orc_program_append_2 (p, "convwb", 2, ORC_VAR_D1, ORC_VAR_T4, ORC_VAR_D1, ORC_VAR_D1);
15043
15044     if (benchmark) {
15045       printf ("    cycles (emulate) :   %g\n",
15046           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
15047     }
15048
15049     ret = orc_test_compare_output_backup (p);
15050     if (!ret) {
15051       error = TRUE;
15052     } else if (!quiet) {
15053       printf ("    backup function  :   PASSED\n");
15054     }
15055
15056     if (benchmark) {
15057       printf ("    cycles (backup)  :   %g\n",
15058           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
15059     }
15060
15061     ret = orc_test_compare_output (p);
15062     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
15063       printf ("    compiled function:   COMPILE FAILED\n");
15064     } else if (!ret) {
15065       error = TRUE;
15066     } else if (!quiet) {
15067       printf ("    compiled function:   PASSED\n");
15068     }
15069
15070     if (benchmark) {
15071       printf ("    cycles (compiled):   %g\n",
15072           orc_test_performance_full (p, 0, NULL));
15073     }
15074
15075     orc_program_free (p);
15076   }
15077
15078   /* orc_code_combine_out_u */
15079   {
15080     OrcProgram *p = NULL;
15081     int ret;
15082
15083     if (!quiet)      printf ("orc_code_combine_out_u:\n");
15084     p = orc_program_new ();
15085     orc_program_set_name (p, "orc_code_combine_out_u");
15086     orc_program_set_backup_function (p, _backup_orc_code_combine_out_u);
15087     orc_program_add_destination (p, 4, "d1");
15088     orc_program_add_source (p, 4, "s1");
15089     orc_program_add_source (p, 4, "s2");
15090       orc_program_add_constant (p, 4, 0x000000ff, "c1");
15091     orc_program_add_temporary (p, 8, "t1");
15092     orc_program_add_temporary (p, 8, "t2");
15093     orc_program_add_temporary (p, 8, "t3");
15094     orc_program_add_temporary (p, 8, "t4");
15095     orc_program_add_temporary (p, 8, "t5");
15096
15097       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T4, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
15098       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T5, ORC_VAR_S2, ORC_VAR_D1, ORC_VAR_D1);
15099       orc_program_append_2 (p, "splatw3q", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_D1, ORC_VAR_D1);
15100       orc_program_append_2 (p, "mullw", 2, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_T5, ORC_VAR_D1);
15101       orc_program_append_2 (p, "div255w", 2, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_D1, ORC_VAR_D1);
15102       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_D1);
15103       orc_program_append_2 (p, "splatw3q", 0, ORC_VAR_T5, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
15104       orc_program_append_2 (p, "xorw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C1, ORC_VAR_D1);
15105       orc_program_append_2 (p, "mullw", 2, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_T5, ORC_VAR_D1);
15106       orc_program_append_2 (p, "div255w", 2, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_D1, ORC_VAR_D1);
15107       orc_program_append_2 (p, "convwb", 2, ORC_VAR_D1, ORC_VAR_T4, ORC_VAR_D1, ORC_VAR_D1);
15108
15109     if (benchmark) {
15110       printf ("    cycles (emulate) :   %g\n",
15111           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
15112     }
15113
15114     ret = orc_test_compare_output_backup (p);
15115     if (!ret) {
15116       error = TRUE;
15117     } else if (!quiet) {
15118       printf ("    backup function  :   PASSED\n");
15119     }
15120
15121     if (benchmark) {
15122       printf ("    cycles (backup)  :   %g\n",
15123           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
15124     }
15125
15126     ret = orc_test_compare_output (p);
15127     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
15128       printf ("    compiled function:   COMPILE FAILED\n");
15129     } else if (!ret) {
15130       error = TRUE;
15131     } else if (!quiet) {
15132       printf ("    compiled function:   PASSED\n");
15133     }
15134
15135     if (benchmark) {
15136       printf ("    cycles (compiled):   %g\n",
15137           orc_test_performance_full (p, 0, NULL));
15138     }
15139
15140     orc_program_free (p);
15141   }
15142
15143   /* orc_code_combine_out_u_n */
15144   {
15145     OrcProgram *p = NULL;
15146     int ret;
15147
15148     if (!quiet)      printf ("orc_code_combine_out_u_n:\n");
15149     p = orc_program_new ();
15150     orc_program_set_name (p, "orc_code_combine_out_u_n");
15151     orc_program_set_backup_function (p, _backup_orc_code_combine_out_u_n);
15152     orc_program_add_destination (p, 4, "d1");
15153     orc_program_add_source (p, 4, "s1");
15154       orc_program_add_constant (p, 4, 0x000000ff, "c1");
15155     orc_program_add_temporary (p, 8, "t1");
15156     orc_program_add_temporary (p, 8, "t2");
15157     orc_program_add_temporary (p, 8, "t3");
15158     orc_program_add_temporary (p, 8, "t4");
15159     orc_program_add_temporary (p, 8, "t5");
15160
15161       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T4, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
15162       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_D1);
15163       orc_program_append_2 (p, "splatw3q", 0, ORC_VAR_T5, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
15164       orc_program_append_2 (p, "xorw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C1, ORC_VAR_D1);
15165       orc_program_append_2 (p, "mullw", 2, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_T5, ORC_VAR_D1);
15166       orc_program_append_2 (p, "div255w", 2, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_D1, ORC_VAR_D1);
15167       orc_program_append_2 (p, "convwb", 2, ORC_VAR_D1, ORC_VAR_T4, ORC_VAR_D1, ORC_VAR_D1);
15168
15169     if (benchmark) {
15170       printf ("    cycles (emulate) :   %g\n",
15171           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
15172     }
15173
15174     ret = orc_test_compare_output_backup (p);
15175     if (!ret) {
15176       error = TRUE;
15177     } else if (!quiet) {
15178       printf ("    backup function  :   PASSED\n");
15179     }
15180
15181     if (benchmark) {
15182       printf ("    cycles (backup)  :   %g\n",
15183           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
15184     }
15185
15186     ret = orc_test_compare_output (p);
15187     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
15188       printf ("    compiled function:   COMPILE FAILED\n");
15189     } else if (!ret) {
15190       error = TRUE;
15191     } else if (!quiet) {
15192       printf ("    compiled function:   PASSED\n");
15193     }
15194
15195     if (benchmark) {
15196       printf ("    cycles (compiled):   %g\n",
15197           orc_test_performance_full (p, 0, NULL));
15198     }
15199
15200     orc_program_free (p);
15201   }
15202
15203   /* orc_code_combine_atop_u */
15204   {
15205     OrcProgram *p = NULL;
15206     int ret;
15207
15208     if (!quiet)      printf ("orc_code_combine_atop_u:\n");
15209     p = orc_program_new ();
15210     orc_program_set_name (p, "orc_code_combine_atop_u");
15211     orc_program_set_backup_function (p, _backup_orc_code_combine_atop_u);
15212     orc_program_add_destination (p, 4, "d1");
15213     orc_program_add_source (p, 4, "s1");
15214     orc_program_add_source (p, 4, "s2");
15215       orc_program_add_constant (p, 4, 0x000000ff, "c1");
15216     orc_program_add_temporary (p, 8, "t1");
15217     orc_program_add_temporary (p, 8, "t2");
15218     orc_program_add_temporary (p, 8, "t3");
15219     orc_program_add_temporary (p, 8, "t4");
15220     orc_program_add_temporary (p, 8, "t5");
15221     orc_program_add_temporary (p, 8, "t6");
15222     orc_program_add_temporary (p, 4, "t7");
15223     orc_program_add_temporary (p, 4, "t8");
15224
15225       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T4, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
15226       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T5, ORC_VAR_S2, ORC_VAR_D1, ORC_VAR_D1);
15227       orc_program_append_2 (p, "splatw3q", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_D1, ORC_VAR_D1);
15228       orc_program_append_2 (p, "mullw", 2, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_T5, ORC_VAR_D1);
15229       orc_program_append_2 (p, "div255w", 2, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_D1, ORC_VAR_D1);
15230       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_D1);
15231       orc_program_append_2 (p, "splatw3q", 0, ORC_VAR_T5, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
15232       orc_program_append_2 (p, "mullw", 2, ORC_VAR_T6, ORC_VAR_T4, ORC_VAR_T5, ORC_VAR_D1);
15233       orc_program_append_2 (p, "div255w", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_D1, ORC_VAR_D1);
15234       orc_program_append_2 (p, "convwb", 2, ORC_VAR_T7, ORC_VAR_T6, ORC_VAR_D1, ORC_VAR_D1);
15235       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_D1);
15236       orc_program_append_2 (p, "splatw3q", 0, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_D1, ORC_VAR_D1);
15237       orc_program_append_2 (p, "xorw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C1, ORC_VAR_D1);
15238       orc_program_append_2 (p, "mullw", 2, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_T5, ORC_VAR_D1);
15239       orc_program_append_2 (p, "div255w", 2, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_D1, ORC_VAR_D1);
15240       orc_program_append_2 (p, "convwb", 2, ORC_VAR_T8, ORC_VAR_T4, ORC_VAR_D1, ORC_VAR_D1);
15241       orc_program_append_2 (p, "addusb", 2, ORC_VAR_D1, ORC_VAR_T7, ORC_VAR_T8, ORC_VAR_D1);
15242
15243     if (benchmark) {
15244       printf ("    cycles (emulate) :   %g\n",
15245           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
15246     }
15247
15248     ret = orc_test_compare_output_backup (p);
15249     if (!ret) {
15250       error = TRUE;
15251     } else if (!quiet) {
15252       printf ("    backup function  :   PASSED\n");
15253     }
15254
15255     if (benchmark) {
15256       printf ("    cycles (backup)  :   %g\n",
15257           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
15258     }
15259
15260     ret = orc_test_compare_output (p);
15261     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
15262       printf ("    compiled function:   COMPILE FAILED\n");
15263     } else if (!ret) {
15264       error = TRUE;
15265     } else if (!quiet) {
15266       printf ("    compiled function:   PASSED\n");
15267     }
15268
15269     if (benchmark) {
15270       printf ("    cycles (compiled):   %g\n",
15271           orc_test_performance_full (p, 0, NULL));
15272     }
15273
15274     orc_program_free (p);
15275   }
15276
15277   /* orc_code_combine_atop_u_n */
15278   {
15279     OrcProgram *p = NULL;
15280     int ret;
15281
15282     if (!quiet)      printf ("orc_code_combine_atop_u_n:\n");
15283     p = orc_program_new ();
15284     orc_program_set_name (p, "orc_code_combine_atop_u_n");
15285     orc_program_set_backup_function (p, _backup_orc_code_combine_atop_u_n);
15286     orc_program_add_destination (p, 4, "d1");
15287     orc_program_add_source (p, 4, "s1");
15288       orc_program_add_constant (p, 4, 0x000000ff, "c1");
15289     orc_program_add_temporary (p, 8, "t1");
15290     orc_program_add_temporary (p, 8, "t2");
15291     orc_program_add_temporary (p, 8, "t3");
15292     orc_program_add_temporary (p, 8, "t4");
15293     orc_program_add_temporary (p, 8, "t5");
15294     orc_program_add_temporary (p, 8, "t6");
15295     orc_program_add_temporary (p, 4, "t7");
15296     orc_program_add_temporary (p, 4, "t8");
15297
15298       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T4, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
15299       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_D1);
15300       orc_program_append_2 (p, "splatw3q", 0, ORC_VAR_T5, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
15301       orc_program_append_2 (p, "mullw", 2, ORC_VAR_T6, ORC_VAR_T4, ORC_VAR_T5, ORC_VAR_D1);
15302       orc_program_append_2 (p, "div255w", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_D1, ORC_VAR_D1);
15303       orc_program_append_2 (p, "convwb", 2, ORC_VAR_T7, ORC_VAR_T6, ORC_VAR_D1, ORC_VAR_D1);
15304       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_D1);
15305       orc_program_append_2 (p, "splatw3q", 0, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_D1, ORC_VAR_D1);
15306       orc_program_append_2 (p, "xorw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C1, ORC_VAR_D1);
15307       orc_program_append_2 (p, "mullw", 2, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_T5, ORC_VAR_D1);
15308       orc_program_append_2 (p, "div255w", 2, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_D1, ORC_VAR_D1);
15309       orc_program_append_2 (p, "convwb", 2, ORC_VAR_T8, ORC_VAR_T4, ORC_VAR_D1, ORC_VAR_D1);
15310       orc_program_append_2 (p, "addusb", 2, ORC_VAR_D1, ORC_VAR_T7, ORC_VAR_T8, ORC_VAR_D1);
15311
15312     if (benchmark) {
15313       printf ("    cycles (emulate) :   %g\n",
15314           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
15315     }
15316
15317     ret = orc_test_compare_output_backup (p);
15318     if (!ret) {
15319       error = TRUE;
15320     } else if (!quiet) {
15321       printf ("    backup function  :   PASSED\n");
15322     }
15323
15324     if (benchmark) {
15325       printf ("    cycles (backup)  :   %g\n",
15326           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
15327     }
15328
15329     ret = orc_test_compare_output (p);
15330     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
15331       printf ("    compiled function:   COMPILE FAILED\n");
15332     } else if (!ret) {
15333       error = TRUE;
15334     } else if (!quiet) {
15335       printf ("    compiled function:   PASSED\n");
15336     }
15337
15338     if (benchmark) {
15339       printf ("    cycles (compiled):   %g\n",
15340           orc_test_performance_full (p, 0, NULL));
15341     }
15342
15343     orc_program_free (p);
15344   }
15345
15346   /* orc_code_combine_xor_u */
15347   {
15348     OrcProgram *p = NULL;
15349     int ret;
15350
15351     if (!quiet)      printf ("orc_code_combine_xor_u:\n");
15352     p = orc_program_new ();
15353     orc_program_set_name (p, "orc_code_combine_xor_u");
15354     orc_program_set_backup_function (p, _backup_orc_code_combine_xor_u);
15355     orc_program_add_destination (p, 4, "d1");
15356     orc_program_add_source (p, 4, "s1");
15357     orc_program_add_source (p, 4, "s2");
15358       orc_program_add_constant (p, 4, 0x000000ff, "c1");
15359     orc_program_add_temporary (p, 8, "t1");
15360     orc_program_add_temporary (p, 8, "t2");
15361     orc_program_add_temporary (p, 8, "t3");
15362     orc_program_add_temporary (p, 8, "t4");
15363     orc_program_add_temporary (p, 8, "t5");
15364     orc_program_add_temporary (p, 8, "t6");
15365     orc_program_add_temporary (p, 4, "t7");
15366     orc_program_add_temporary (p, 4, "t8");
15367
15368       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T4, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
15369       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T5, ORC_VAR_S2, ORC_VAR_D1, ORC_VAR_D1);
15370       orc_program_append_2 (p, "splatw3q", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_D1, ORC_VAR_D1);
15371       orc_program_append_2 (p, "mullw", 2, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_T5, ORC_VAR_D1);
15372       orc_program_append_2 (p, "div255w", 2, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_D1, ORC_VAR_D1);
15373       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_D1);
15374       orc_program_append_2 (p, "splatw3q", 0, ORC_VAR_T5, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
15375       orc_program_append_2 (p, "xorw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C1, ORC_VAR_D1);
15376       orc_program_append_2 (p, "mullw", 2, ORC_VAR_T6, ORC_VAR_T4, ORC_VAR_T5, ORC_VAR_D1);
15377       orc_program_append_2 (p, "div255w", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_D1, ORC_VAR_D1);
15378       orc_program_append_2 (p, "convwb", 2, ORC_VAR_T7, ORC_VAR_T6, ORC_VAR_D1, ORC_VAR_D1);
15379       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_D1);
15380       orc_program_append_2 (p, "splatw3q", 0, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_D1, ORC_VAR_D1);
15381       orc_program_append_2 (p, "xorw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C1, ORC_VAR_D1);
15382       orc_program_append_2 (p, "mullw", 2, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_T5, ORC_VAR_D1);
15383       orc_program_append_2 (p, "div255w", 2, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_D1, ORC_VAR_D1);
15384       orc_program_append_2 (p, "convwb", 2, ORC_VAR_T8, ORC_VAR_T4, ORC_VAR_D1, ORC_VAR_D1);
15385       orc_program_append_2 (p, "addusb", 2, ORC_VAR_D1, ORC_VAR_T7, ORC_VAR_T8, ORC_VAR_D1);
15386
15387     if (benchmark) {
15388       printf ("    cycles (emulate) :   %g\n",
15389           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
15390     }
15391
15392     ret = orc_test_compare_output_backup (p);
15393     if (!ret) {
15394       error = TRUE;
15395     } else if (!quiet) {
15396       printf ("    backup function  :   PASSED\n");
15397     }
15398
15399     if (benchmark) {
15400       printf ("    cycles (backup)  :   %g\n",
15401           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
15402     }
15403
15404     ret = orc_test_compare_output (p);
15405     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
15406       printf ("    compiled function:   COMPILE FAILED\n");
15407     } else if (!ret) {
15408       error = TRUE;
15409     } else if (!quiet) {
15410       printf ("    compiled function:   PASSED\n");
15411     }
15412
15413     if (benchmark) {
15414       printf ("    cycles (compiled):   %g\n",
15415           orc_test_performance_full (p, 0, NULL));
15416     }
15417
15418     orc_program_free (p);
15419   }
15420
15421   /* orc_code_combine_xor_u_n */
15422   {
15423     OrcProgram *p = NULL;
15424     int ret;
15425
15426     if (!quiet)      printf ("orc_code_combine_xor_u_n:\n");
15427     p = orc_program_new ();
15428     orc_program_set_name (p, "orc_code_combine_xor_u_n");
15429     orc_program_set_backup_function (p, _backup_orc_code_combine_xor_u_n);
15430     orc_program_add_destination (p, 4, "d1");
15431     orc_program_add_source (p, 4, "s1");
15432       orc_program_add_constant (p, 4, 0x000000ff, "c1");
15433     orc_program_add_temporary (p, 8, "t1");
15434     orc_program_add_temporary (p, 8, "t2");
15435     orc_program_add_temporary (p, 8, "t3");
15436     orc_program_add_temporary (p, 8, "t4");
15437     orc_program_add_temporary (p, 8, "t5");
15438     orc_program_add_temporary (p, 8, "t6");
15439     orc_program_add_temporary (p, 4, "t7");
15440     orc_program_add_temporary (p, 4, "t8");
15441
15442       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T4, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
15443       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_D1);
15444       orc_program_append_2 (p, "splatw3q", 0, ORC_VAR_T5, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
15445       orc_program_append_2 (p, "xorw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C1, ORC_VAR_D1);
15446       orc_program_append_2 (p, "mullw", 2, ORC_VAR_T6, ORC_VAR_T4, ORC_VAR_T5, ORC_VAR_D1);
15447       orc_program_append_2 (p, "div255w", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_D1, ORC_VAR_D1);
15448       orc_program_append_2 (p, "convwb", 2, ORC_VAR_T7, ORC_VAR_T6, ORC_VAR_D1, ORC_VAR_D1);
15449       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_D1);
15450       orc_program_append_2 (p, "splatw3q", 0, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_D1, ORC_VAR_D1);
15451       orc_program_append_2 (p, "xorw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C1, ORC_VAR_D1);
15452       orc_program_append_2 (p, "mullw", 2, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_T5, ORC_VAR_D1);
15453       orc_program_append_2 (p, "div255w", 2, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_D1, ORC_VAR_D1);
15454       orc_program_append_2 (p, "convwb", 2, ORC_VAR_T8, ORC_VAR_T4, ORC_VAR_D1, ORC_VAR_D1);
15455       orc_program_append_2 (p, "addusb", 2, ORC_VAR_D1, ORC_VAR_T7, ORC_VAR_T8, ORC_VAR_D1);
15456
15457     if (benchmark) {
15458       printf ("    cycles (emulate) :   %g\n",
15459           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
15460     }
15461
15462     ret = orc_test_compare_output_backup (p);
15463     if (!ret) {
15464       error = TRUE;
15465     } else if (!quiet) {
15466       printf ("    backup function  :   PASSED\n");
15467     }
15468
15469     if (benchmark) {
15470       printf ("    cycles (backup)  :   %g\n",
15471           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
15472     }
15473
15474     ret = orc_test_compare_output (p);
15475     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
15476       printf ("    compiled function:   COMPILE FAILED\n");
15477     } else if (!ret) {
15478       error = TRUE;
15479     } else if (!quiet) {
15480       printf ("    compiled function:   PASSED\n");
15481     }
15482
15483     if (benchmark) {
15484       printf ("    cycles (compiled):   %g\n",
15485           orc_test_performance_full (p, 0, NULL));
15486     }
15487
15488     orc_program_free (p);
15489   }
15490
15491   /* orc_code_combine_add_ca */
15492   {
15493     OrcProgram *p = NULL;
15494     int ret;
15495
15496     if (!quiet)      printf ("orc_code_combine_add_ca:\n");
15497     p = orc_program_new ();
15498     orc_program_set_name (p, "orc_code_combine_add_ca");
15499     orc_program_set_backup_function (p, _backup_orc_code_combine_add_ca);
15500     orc_program_add_destination (p, 4, "d1");
15501     orc_program_add_source (p, 4, "s1");
15502     orc_program_add_source (p, 4, "s2");
15503     orc_program_add_temporary (p, 8, "t1");
15504     orc_program_add_temporary (p, 8, "t2");
15505     orc_program_add_temporary (p, 4, "t3");
15506
15507       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
15508       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, ORC_VAR_D1);
15509       orc_program_append_2 (p, "mullw", 2, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1);
15510       orc_program_append_2 (p, "div255w", 2, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
15511       orc_program_append_2 (p, "convwb", 2, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
15512       orc_program_append_2 (p, "addusb", 2, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_D1);
15513
15514     if (benchmark) {
15515       printf ("    cycles (emulate) :   %g\n",
15516           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
15517     }
15518
15519     ret = orc_test_compare_output_backup (p);
15520     if (!ret) {
15521       error = TRUE;
15522     } else if (!quiet) {
15523       printf ("    backup function  :   PASSED\n");
15524     }
15525
15526     if (benchmark) {
15527       printf ("    cycles (backup)  :   %g\n",
15528           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
15529     }
15530
15531     ret = orc_test_compare_output (p);
15532     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
15533       printf ("    compiled function:   COMPILE FAILED\n");
15534     } else if (!ret) {
15535       error = TRUE;
15536     } else if (!quiet) {
15537       printf ("    compiled function:   PASSED\n");
15538     }
15539
15540     if (benchmark) {
15541       printf ("    cycles (compiled):   %g\n",
15542           orc_test_performance_full (p, 0, NULL));
15543     }
15544
15545     orc_program_free (p);
15546   }
15547
15548   /* orc_code_combine_add_ca_n */
15549   {
15550     OrcProgram *p = NULL;
15551     int ret;
15552
15553     if (!quiet)      printf ("orc_code_combine_add_ca_n:\n");
15554     p = orc_program_new ();
15555     orc_program_set_name (p, "orc_code_combine_add_ca_n");
15556     orc_program_set_backup_function (p, _backup_orc_code_combine_add_ca_n);
15557     orc_program_add_destination (p, 4, "d1");
15558     orc_program_add_source (p, 4, "s1");
15559
15560       orc_program_append_2 (p, "addusb", 2, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1);
15561
15562     if (benchmark) {
15563       printf ("    cycles (emulate) :   %g\n",
15564           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
15565     }
15566
15567     ret = orc_test_compare_output_backup (p);
15568     if (!ret) {
15569       error = TRUE;
15570     } else if (!quiet) {
15571       printf ("    backup function  :   PASSED\n");
15572     }
15573
15574     if (benchmark) {
15575       printf ("    cycles (backup)  :   %g\n",
15576           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
15577     }
15578
15579     ret = orc_test_compare_output (p);
15580     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
15581       printf ("    compiled function:   COMPILE FAILED\n");
15582     } else if (!ret) {
15583       error = TRUE;
15584     } else if (!quiet) {
15585       printf ("    compiled function:   PASSED\n");
15586     }
15587
15588     if (benchmark) {
15589       printf ("    cycles (compiled):   %g\n",
15590           orc_test_performance_full (p, 0, NULL));
15591     }
15592
15593     orc_program_free (p);
15594   }
15595
15596   /* orc_code_combine_over_ca */
15597   {
15598     OrcProgram *p = NULL;
15599     int ret;
15600
15601     if (!quiet)      printf ("orc_code_combine_over_ca:\n");
15602     p = orc_program_new ();
15603     orc_program_set_name (p, "orc_code_combine_over_ca");
15604     orc_program_set_backup_function (p, _backup_orc_code_combine_over_ca);
15605     orc_program_add_destination (p, 4, "d1");
15606     orc_program_add_source (p, 4, "s1");
15607     orc_program_add_source (p, 4, "s2");
15608       orc_program_add_constant (p, 4, 0x000000ff, "c1");
15609     orc_program_add_temporary (p, 8, "t1");
15610     orc_program_add_temporary (p, 8, "t2");
15611     orc_program_add_temporary (p, 4, "t3");
15612     orc_program_add_temporary (p, 8, "t4");
15613     orc_program_add_temporary (p, 8, "t5");
15614     orc_program_add_temporary (p, 8, "t6");
15615     orc_program_add_temporary (p, 8, "t7");
15616     orc_program_add_temporary (p, 4, "t8");
15617
15618       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T6, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
15619       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T5, ORC_VAR_S2, ORC_VAR_D1, ORC_VAR_D1);
15620       orc_program_append_2 (p, "splatw3q", 0, ORC_VAR_T7, ORC_VAR_T6, ORC_VAR_D1, ORC_VAR_D1);
15621       orc_program_append_2 (p, "mullw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T5, ORC_VAR_D1);
15622       orc_program_append_2 (p, "div255w", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_D1, ORC_VAR_D1);
15623       orc_program_append_2 (p, "convwb", 2, ORC_VAR_T8, ORC_VAR_T6, ORC_VAR_D1, ORC_VAR_D1);
15624       orc_program_append_2 (p, "mullw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T7, ORC_VAR_D1);
15625       orc_program_append_2 (p, "div255w", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_D1, ORC_VAR_D1);
15626       orc_program_append_2 (p, "loadl", 0, ORC_VAR_T3, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_D1);
15627       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1, ORC_VAR_D1);
15628       orc_program_append_2 (p, "xorw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C1, ORC_VAR_D1);
15629       orc_program_append_2 (p, "mullw", 2, ORC_VAR_T1, ORC_VAR_T4, ORC_VAR_T5, ORC_VAR_D1);
15630       orc_program_append_2 (p, "div255w", 2, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
15631       orc_program_append_2 (p, "convwb", 2, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
15632       orc_program_append_2 (p, "addusb", 2, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T8, ORC_VAR_D1);
15633
15634     if (benchmark) {
15635       printf ("    cycles (emulate) :   %g\n",
15636           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
15637     }
15638
15639     ret = orc_test_compare_output_backup (p);
15640     if (!ret) {
15641       error = TRUE;
15642     } else if (!quiet) {
15643       printf ("    backup function  :   PASSED\n");
15644     }
15645
15646     if (benchmark) {
15647       printf ("    cycles (backup)  :   %g\n",
15648           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
15649     }
15650
15651     ret = orc_test_compare_output (p);
15652     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
15653       printf ("    compiled function:   COMPILE FAILED\n");
15654     } else if (!ret) {
15655       error = TRUE;
15656     } else if (!quiet) {
15657       printf ("    compiled function:   PASSED\n");
15658     }
15659
15660     if (benchmark) {
15661       printf ("    cycles (compiled):   %g\n",
15662           orc_test_performance_full (p, 0, NULL));
15663     }
15664
15665     orc_program_free (p);
15666   }
15667
15668   /* orc_code_combine_over_ca_n */
15669   {
15670     OrcProgram *p = NULL;
15671     int ret;
15672
15673     if (!quiet)      printf ("orc_code_combine_over_ca_n:\n");
15674     p = orc_program_new ();
15675     orc_program_set_name (p, "orc_code_combine_over_ca_n");
15676     orc_program_set_backup_function (p, _backup_orc_code_combine_over_ca_n);
15677     orc_program_add_destination (p, 4, "d1");
15678     orc_program_add_source (p, 4, "s1");
15679       orc_program_add_constant (p, 4, 0x000000ff, "c1");
15680     orc_program_add_temporary (p, 8, "t1");
15681     orc_program_add_temporary (p, 8, "t2");
15682     orc_program_add_temporary (p, 4, "t3");
15683     orc_program_add_temporary (p, 8, "t4");
15684     orc_program_add_temporary (p, 8, "t5");
15685     orc_program_add_temporary (p, 8, "t6");
15686     orc_program_add_temporary (p, 8, "t7");
15687     orc_program_add_temporary (p, 4, "t8");
15688
15689       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T6, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
15690       orc_program_append_2 (p, "splatw3q", 0, ORC_VAR_T7, ORC_VAR_T6, ORC_VAR_D1, ORC_VAR_D1);
15691       orc_program_append_2 (p, "convwb", 2, ORC_VAR_T8, ORC_VAR_T6, ORC_VAR_D1, ORC_VAR_D1);
15692       orc_program_append_2 (p, "copyw", 2, ORC_VAR_T5, ORC_VAR_T7, ORC_VAR_D1, ORC_VAR_D1);
15693       orc_program_append_2 (p, "loadl", 0, ORC_VAR_T3, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_D1);
15694       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1, ORC_VAR_D1);
15695       orc_program_append_2 (p, "xorw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C1, ORC_VAR_D1);
15696       orc_program_append_2 (p, "mullw", 2, ORC_VAR_T1, ORC_VAR_T4, ORC_VAR_T5, ORC_VAR_D1);
15697       orc_program_append_2 (p, "div255w", 2, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
15698       orc_program_append_2 (p, "convwb", 2, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
15699       orc_program_append_2 (p, "addusb", 2, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T8, ORC_VAR_D1);
15700
15701     if (benchmark) {
15702       printf ("    cycles (emulate) :   %g\n",
15703           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
15704     }
15705
15706     ret = orc_test_compare_output_backup (p);
15707     if (!ret) {
15708       error = TRUE;
15709     } else if (!quiet) {
15710       printf ("    backup function  :   PASSED\n");
15711     }
15712
15713     if (benchmark) {
15714       printf ("    cycles (backup)  :   %g\n",
15715           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
15716     }
15717
15718     ret = orc_test_compare_output (p);
15719     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
15720       printf ("    compiled function:   COMPILE FAILED\n");
15721     } else if (!ret) {
15722       error = TRUE;
15723     } else if (!quiet) {
15724       printf ("    compiled function:   PASSED\n");
15725     }
15726
15727     if (benchmark) {
15728       printf ("    cycles (compiled):   %g\n",
15729           orc_test_performance_full (p, 0, NULL));
15730     }
15731
15732     orc_program_free (p);
15733   }
15734
15735   /* orc_composite_over_8888_8_8888_line */
15736   {
15737     OrcProgram *p = NULL;
15738     int ret;
15739
15740     if (!quiet)      printf ("orc_composite_over_8888_8_8888_line:\n");
15741     p = orc_program_new ();
15742     orc_program_set_name (p, "orc_composite_over_8888_8_8888_line");
15743     orc_program_set_backup_function (p, _backup_orc_composite_over_8888_8_8888_line);
15744     orc_program_add_destination (p, 4, "d1");
15745     orc_program_add_source (p, 4, "s1");
15746     orc_program_add_source (p, 1, "s2");
15747       orc_program_add_constant (p, 4, 0x000000ff, "c1");
15748     orc_program_add_temporary (p, 8, "t1");
15749     orc_program_add_temporary (p, 8, "t2");
15750     orc_program_add_temporary (p, 4, "t3");
15751     orc_program_add_temporary (p, 4, "t4");
15752     orc_program_add_temporary (p, 4, "t5");
15753     orc_program_add_temporary (p, 8, "t6");
15754
15755       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
15756       orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T5, ORC_VAR_S2, ORC_VAR_D1, ORC_VAR_D1);
15757       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T2, ORC_VAR_T5, ORC_VAR_D1, ORC_VAR_D1);
15758       orc_program_append_2 (p, "mullw", 2, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1);
15759       orc_program_append_2 (p, "div255w", 2, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
15760       orc_program_append_2 (p, "convwb", 2, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
15761       orc_program_append_2 (p, "loadl", 0, ORC_VAR_T4, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_D1);
15762       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T6, ORC_VAR_T4, ORC_VAR_D1, ORC_VAR_D1);
15763       orc_program_append_2 (p, "xorw", 2, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1);
15764       orc_program_append_2 (p, "splatw3q", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
15765       orc_program_append_2 (p, "mullw", 2, ORC_VAR_T1, ORC_VAR_T6, ORC_VAR_T2, ORC_VAR_D1);
15766       orc_program_append_2 (p, "div255w", 2, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
15767       orc_program_append_2 (p, "convwb", 2, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
15768       orc_program_append_2 (p, "addusb", 2, ORC_VAR_D1, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1);
15769
15770     if (benchmark) {
15771       printf ("    cycles (emulate) :   %g\n",
15772           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
15773     }
15774
15775     ret = orc_test_compare_output_backup (p);
15776     if (!ret) {
15777       error = TRUE;
15778     } else if (!quiet) {
15779       printf ("    backup function  :   PASSED\n");
15780     }
15781
15782     if (benchmark) {
15783       printf ("    cycles (backup)  :   %g\n",
15784           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
15785     }
15786
15787     ret = orc_test_compare_output (p);
15788     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
15789       printf ("    compiled function:   COMPILE FAILED\n");
15790     } else if (!ret) {
15791       error = TRUE;
15792     } else if (!quiet) {
15793       printf ("    compiled function:   PASSED\n");
15794     }
15795
15796     if (benchmark) {
15797       printf ("    cycles (compiled):   %g\n",
15798           orc_test_performance_full (p, 0, NULL));
15799     }
15800
15801     orc_program_free (p);
15802   }
15803
15804   /* orc_composite_over_n_8888_8888_ca_2d */
15805   {
15806     OrcProgram *p = NULL;
15807     int ret;
15808
15809     if (!quiet)      printf ("orc_composite_over_n_8888_8888_ca_2d:\n");
15810     p = orc_program_new ();
15811     orc_program_set_name (p, "orc_composite_over_n_8888_8888_ca_2d");
15812     orc_program_set_backup_function (p, _backup_orc_composite_over_n_8888_8888_ca_2d);
15813     orc_program_add_destination (p, 4, "d1");
15814     orc_program_add_source (p, 4, "s1");
15815       orc_program_add_constant (p, 4, 0x000000ff, "c1");
15816     orc_program_add_parameter (p, 4, "p1");
15817     orc_program_add_temporary (p, 8, "t1");
15818     orc_program_add_temporary (p, 8, "t2");
15819     orc_program_add_temporary (p, 4, "t3");
15820     orc_program_add_temporary (p, 8, "t4");
15821     orc_program_add_temporary (p, 8, "t5");
15822     orc_program_add_temporary (p, 8, "t6");
15823     orc_program_add_temporary (p, 8, "t7");
15824     orc_program_add_temporary (p, 4, "t8");
15825
15826       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T6, ORC_VAR_P1, ORC_VAR_D1, ORC_VAR_D1);
15827       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T5, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
15828       orc_program_append_2 (p, "splatw3q", 0, ORC_VAR_T7, ORC_VAR_T6, ORC_VAR_D1, ORC_VAR_D1);
15829       orc_program_append_2 (p, "mullw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T5, ORC_VAR_D1);
15830       orc_program_append_2 (p, "div255w", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_D1, ORC_VAR_D1);
15831       orc_program_append_2 (p, "convwb", 2, ORC_VAR_T8, ORC_VAR_T6, ORC_VAR_D1, ORC_VAR_D1);
15832       orc_program_append_2 (p, "mullw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T7, ORC_VAR_D1);
15833       orc_program_append_2 (p, "div255w", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_D1, ORC_VAR_D1);
15834       orc_program_append_2 (p, "loadl", 0, ORC_VAR_T3, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_D1);
15835       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1, ORC_VAR_D1);
15836       orc_program_append_2 (p, "xorw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C1, ORC_VAR_D1);
15837       orc_program_append_2 (p, "mullw", 2, ORC_VAR_T1, ORC_VAR_T4, ORC_VAR_T5, ORC_VAR_D1);
15838       orc_program_append_2 (p, "div255w", 2, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
15839       orc_program_append_2 (p, "convwb", 2, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
15840       orc_program_append_2 (p, "addusb", 2, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T8, ORC_VAR_D1);
15841
15842     if (benchmark) {
15843       printf ("    cycles (emulate) :   %g\n",
15844           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
15845     }
15846
15847     ret = orc_test_compare_output_backup (p);
15848     if (!ret) {
15849       error = TRUE;
15850     } else if (!quiet) {
15851       printf ("    backup function  :   PASSED\n");
15852     }
15853
15854     if (benchmark) {
15855       printf ("    cycles (backup)  :   %g\n",
15856           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
15857     }
15858
15859     ret = orc_test_compare_output (p);
15860     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
15861       printf ("    compiled function:   COMPILE FAILED\n");
15862     } else if (!ret) {
15863       error = TRUE;
15864     } else if (!quiet) {
15865       printf ("    compiled function:   PASSED\n");
15866     }
15867
15868     if (benchmark) {
15869       printf ("    cycles (compiled):   %g\n",
15870           orc_test_performance_full (p, 0, NULL));
15871     }
15872
15873     orc_program_free (p);
15874   }
15875
15876   /* cogorc_resample_horiz_1tap */
15877   {
15878     OrcProgram *p = NULL;
15879     int ret;
15880
15881     if (!quiet)      printf ("cogorc_resample_horiz_1tap:\n");
15882     p = orc_program_new ();
15883     orc_program_set_name (p, "cogorc_resample_horiz_1tap");
15884     orc_program_set_backup_function (p, _backup_cogorc_resample_horiz_1tap);
15885     orc_program_add_destination (p, 1, "d1");
15886     orc_program_add_source (p, 1, "s1");
15887     orc_program_add_parameter (p, 2, "p1");
15888     orc_program_add_parameter (p, 2, "p2");
15889
15890       orc_program_append_2 (p, "ldresnearb", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_P1, ORC_VAR_P2);
15891
15892     if (benchmark) {
15893       printf ("    cycles (emulate) :   %g\n",
15894           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
15895     }
15896
15897     ret = orc_test_compare_output_backup (p);
15898     if (!ret) {
15899       error = TRUE;
15900     } else if (!quiet) {
15901       printf ("    backup function  :   PASSED\n");
15902     }
15903
15904     if (benchmark) {
15905       printf ("    cycles (backup)  :   %g\n",
15906           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
15907     }
15908
15909     ret = orc_test_compare_output (p);
15910     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
15911       printf ("    compiled function:   COMPILE FAILED\n");
15912     } else if (!ret) {
15913       error = TRUE;
15914     } else if (!quiet) {
15915       printf ("    compiled function:   PASSED\n");
15916     }
15917
15918     if (benchmark) {
15919       printf ("    cycles (compiled):   %g\n",
15920           orc_test_performance_full (p, 0, NULL));
15921     }
15922
15923     orc_program_free (p);
15924   }
15925
15926   /* cogorc_resample_horiz_2tap */
15927   {
15928     OrcProgram *p = NULL;
15929     int ret;
15930
15931     if (!quiet)      printf ("cogorc_resample_horiz_2tap:\n");
15932     p = orc_program_new ();
15933     orc_program_set_name (p, "cogorc_resample_horiz_2tap");
15934     orc_program_set_backup_function (p, _backup_cogorc_resample_horiz_2tap);
15935     orc_program_add_destination (p, 1, "d1");
15936     orc_program_add_source (p, 1, "s1");
15937     orc_program_add_parameter (p, 4, "p1");
15938     orc_program_add_parameter (p, 4, "p2");
15939
15940       orc_program_append_2 (p, "ldreslinb", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_P1, ORC_VAR_P2);
15941
15942     if (benchmark) {
15943       printf ("    cycles (emulate) :   %g\n",
15944           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
15945     }
15946
15947     ret = orc_test_compare_output_backup (p);
15948     if (!ret) {
15949       error = TRUE;
15950     } else if (!quiet) {
15951       printf ("    backup function  :   PASSED\n");
15952     }
15953
15954     if (benchmark) {
15955       printf ("    cycles (backup)  :   %g\n",
15956           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
15957     }
15958
15959     ret = orc_test_compare_output (p);
15960     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
15961       printf ("    compiled function:   COMPILE FAILED\n");
15962     } else if (!ret) {
15963       error = TRUE;
15964     } else if (!quiet) {
15965       printf ("    compiled function:   PASSED\n");
15966     }
15967
15968     if (benchmark) {
15969       printf ("    cycles (compiled):   %g\n",
15970           orc_test_performance_full (p, 0, NULL));
15971     }
15972
15973     orc_program_free (p);
15974   }
15975
15976   /* test_float_constant_1 */
15977   {
15978     OrcProgram *p = NULL;
15979     int ret;
15980
15981     if (!quiet)      printf ("test_float_constant_1:\n");
15982     p = orc_program_new ();
15983     orc_program_set_name (p, "test_float_constant_1");
15984     orc_program_set_backup_function (p, _backup_test_float_constant_1);
15985     orc_program_add_destination (p, 4, "d1");
15986       orc_program_add_constant (p, 4, 0x40000000, "c1");
15987
15988       orc_program_append_2 (p, "copyl", 0, ORC_VAR_D1, ORC_VAR_C1, ORC_VAR_D1, ORC_VAR_D1);
15989
15990     if (benchmark) {
15991       printf ("    cycles (emulate) :   %g\n",
15992           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
15993     }
15994
15995     ret = orc_test_compare_output_backup (p);
15996     if (!ret) {
15997       error = TRUE;
15998     } else if (!quiet) {
15999       printf ("    backup function  :   PASSED\n");
16000     }
16001
16002     if (benchmark) {
16003       printf ("    cycles (backup)  :   %g\n",
16004           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
16005     }
16006
16007     ret = orc_test_compare_output (p);
16008     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
16009       printf ("    compiled function:   COMPILE FAILED\n");
16010     } else if (!ret) {
16011       error = TRUE;
16012     } else if (!quiet) {
16013       printf ("    compiled function:   PASSED\n");
16014     }
16015
16016     if (benchmark) {
16017       printf ("    cycles (compiled):   %g\n",
16018           orc_test_performance_full (p, 0, NULL));
16019     }
16020
16021     orc_program_free (p);
16022   }
16023
16024   /* test_float_constant_2 */
16025   {
16026     OrcProgram *p = NULL;
16027     int ret;
16028
16029     if (!quiet)      printf ("test_float_constant_2:\n");
16030     p = orc_program_new ();
16031     orc_program_set_name (p, "test_float_constant_2");
16032     orc_program_set_backup_function (p, _backup_test_float_constant_2);
16033     orc_program_add_destination (p, 4, "d1");
16034       orc_program_add_constant (p, 4, 0x40000000, "c1");
16035
16036       orc_program_append_2 (p, "copyl", 0, ORC_VAR_D1, ORC_VAR_C1, ORC_VAR_D1, ORC_VAR_D1);
16037
16038     if (benchmark) {
16039       printf ("    cycles (emulate) :   %g\n",
16040           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
16041     }
16042
16043     ret = orc_test_compare_output_backup (p);
16044     if (!ret) {
16045       error = TRUE;
16046     } else if (!quiet) {
16047       printf ("    backup function  :   PASSED\n");
16048     }
16049
16050     if (benchmark) {
16051       printf ("    cycles (backup)  :   %g\n",
16052           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
16053     }
16054
16055     ret = orc_test_compare_output (p);
16056     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
16057       printf ("    compiled function:   COMPILE FAILED\n");
16058     } else if (!ret) {
16059       error = TRUE;
16060     } else if (!quiet) {
16061       printf ("    compiled function:   PASSED\n");
16062     }
16063
16064     if (benchmark) {
16065       printf ("    cycles (compiled):   %g\n",
16066           orc_test_performance_full (p, 0, NULL));
16067     }
16068
16069     orc_program_free (p);
16070   }
16071
16072   /* convert_fc32_to_int32 */
16073   {
16074     OrcProgram *p = NULL;
16075     int ret;
16076
16077     if (!quiet)      printf ("convert_fc32_to_int32:\n");
16078     p = orc_program_new ();
16079     orc_program_set_name (p, "convert_fc32_to_int32");
16080     orc_program_set_backup_function (p, _backup_convert_fc32_to_int32);
16081     orc_program_add_destination (p, 4, "d1");
16082     orc_program_add_source (p, 8, "s1");
16083       orc_program_add_constant (p, 4, 0x46fffe00, "c1");
16084     orc_program_add_temporary (p, 8, "t1");
16085     orc_program_add_temporary (p, 8, "t2");
16086
16087       orc_program_append_2 (p, "mulf", 1, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_C1, ORC_VAR_D1);
16088       orc_program_append_2 (p, "convfl", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
16089       orc_program_append_2 (p, "convlw", 1, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1);
16090
16091     if (benchmark) {
16092       printf ("    cycles (emulate) :   %g\n",
16093           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
16094     }
16095
16096     ret = orc_test_compare_output_backup (p);
16097     if (!ret) {
16098       error = TRUE;
16099     } else if (!quiet) {
16100       printf ("    backup function  :   PASSED\n");
16101     }
16102
16103     if (benchmark) {
16104       printf ("    cycles (backup)  :   %g\n",
16105           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
16106     }
16107
16108     ret = orc_test_compare_output (p);
16109     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
16110       printf ("    compiled function:   COMPILE FAILED\n");
16111     } else if (!ret) {
16112       error = TRUE;
16113     } else if (!quiet) {
16114       printf ("    compiled function:   PASSED\n");
16115     }
16116
16117     if (benchmark) {
16118       printf ("    cycles (compiled):   %g\n",
16119           orc_test_performance_full (p, 0, NULL));
16120     }
16121
16122     orc_program_free (p);
16123   }
16124
16125   /* param64 */
16126   {
16127     OrcProgram *p = NULL;
16128     int ret;
16129
16130     if (!quiet)      printf ("param64:\n");
16131     p = orc_program_new ();
16132     orc_program_set_name (p, "param64");
16133     orc_program_set_backup_function (p, _backup_param64);
16134     orc_program_add_destination (p, 8, "d1");
16135     orc_program_add_parameter (p, 8, "p1");
16136
16137       orc_program_append_2 (p, "copyq", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1, ORC_VAR_D1);
16138
16139     if (benchmark) {
16140       printf ("    cycles (emulate) :   %g\n",
16141           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
16142     }
16143
16144     ret = orc_test_compare_output_backup (p);
16145     if (!ret) {
16146       error = TRUE;
16147     } else if (!quiet) {
16148       printf ("    backup function  :   PASSED\n");
16149     }
16150
16151     if (benchmark) {
16152       printf ("    cycles (backup)  :   %g\n",
16153           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
16154     }
16155
16156     ret = orc_test_compare_output (p);
16157     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
16158       printf ("    compiled function:   COMPILE FAILED\n");
16159     } else if (!ret) {
16160       error = TRUE;
16161     } else if (!quiet) {
16162       printf ("    compiled function:   PASSED\n");
16163     }
16164
16165     if (benchmark) {
16166       printf ("    cycles (compiled):   %g\n",
16167           orc_test_performance_full (p, 0, NULL));
16168     }
16169
16170     orc_program_free (p);
16171   }
16172
16173   /* const64 */
16174   {
16175     OrcProgram *p = NULL;
16176     int ret;
16177
16178     if (!quiet)      printf ("const64:\n");
16179     p = orc_program_new ();
16180     orc_program_set_name (p, "const64");
16181     orc_program_set_backup_function (p, _backup_const64);
16182     orc_program_add_destination (p, 8, "d1");
16183       orc_program_add_constant_int64 (p, 8, 0x0123456789abcdefULL, "c1");
16184
16185       orc_program_append_2 (p, "copyq", 0, ORC_VAR_D1, ORC_VAR_C1, ORC_VAR_D1, ORC_VAR_D1);
16186
16187     if (benchmark) {
16188       printf ("    cycles (emulate) :   %g\n",
16189           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
16190     }
16191
16192     ret = orc_test_compare_output_backup (p);
16193     if (!ret) {
16194       error = TRUE;
16195     } else if (!quiet) {
16196       printf ("    backup function  :   PASSED\n");
16197     }
16198
16199     if (benchmark) {
16200       printf ("    cycles (backup)  :   %g\n",
16201           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
16202     }
16203
16204     ret = orc_test_compare_output (p);
16205     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
16206       printf ("    compiled function:   COMPILE FAILED\n");
16207     } else if (!ret) {
16208       error = TRUE;
16209     } else if (!quiet) {
16210       printf ("    compiled function:   PASSED\n");
16211     }
16212
16213     if (benchmark) {
16214       printf ("    cycles (compiled):   %g\n",
16215           orc_test_performance_full (p, 0, NULL));
16216     }
16217
16218     orc_program_free (p);
16219   }
16220
16221   /* param64_2 */
16222   {
16223     OrcProgram *p = NULL;
16224     int ret;
16225
16226     if (!quiet)      printf ("param64_2:\n");
16227     p = orc_program_new ();
16228     orc_program_set_name (p, "param64_2");
16229     orc_program_set_backup_function (p, _backup_param64_2);
16230     orc_program_add_destination (p, 8, "d1");
16231     orc_program_add_parameter_int64 (p, 8, "p1");
16232     orc_program_add_temporary (p, 8, "t1");
16233
16234       orc_program_append_2 (p, "loadpq", 0, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1, ORC_VAR_D1);
16235       orc_program_append_2 (p, "copyq", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
16236
16237     if (benchmark) {
16238       printf ("    cycles (emulate) :   %g\n",
16239           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
16240     }
16241
16242     ret = orc_test_compare_output_backup (p);
16243     if (!ret) {
16244       error = TRUE;
16245     } else if (!quiet) {
16246       printf ("    backup function  :   PASSED\n");
16247     }
16248
16249     if (benchmark) {
16250       printf ("    cycles (backup)  :   %g\n",
16251           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
16252     }
16253
16254     ret = orc_test_compare_output (p);
16255     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
16256       printf ("    compiled function:   COMPILE FAILED\n");
16257     } else if (!ret) {
16258       error = TRUE;
16259     } else if (!quiet) {
16260       printf ("    compiled function:   PASSED\n");
16261     }
16262
16263     if (benchmark) {
16264       printf ("    cycles (compiled):   %g\n",
16265           orc_test_performance_full (p, 0, NULL));
16266     }
16267
16268     orc_program_free (p);
16269   }
16270
16271   /* pa_volume_s16ne_orc_2ch */
16272   {
16273     OrcProgram *p = NULL;
16274     int ret;
16275
16276     if (!quiet)      printf ("pa_volume_s16ne_orc_2ch:\n");
16277     p = orc_program_new ();
16278     orc_program_set_name (p, "pa_volume_s16ne_orc_2ch");
16279     orc_program_set_backup_function (p, _backup_pa_volume_s16ne_orc_2ch);
16280     orc_program_add_destination (p, 4, "d1");
16281       orc_program_add_constant (p, 4, 0x00000000, "c1");
16282       orc_program_add_constant (p, 4, 0x00000010, "c2");
16283     orc_program_add_parameter_int64 (p, 8, "p1");
16284     orc_program_add_temporary (p, 8, "t1");
16285     orc_program_add_temporary (p, 8, "t2");
16286     orc_program_add_temporary (p, 8, "t3");
16287     orc_program_add_temporary (p, 8, "t4");
16288     orc_program_add_temporary (p, 8, "t5");
16289
16290       orc_program_append_2 (p, "loadpq", 0, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1, ORC_VAR_D1);
16291       orc_program_append_2 (p, "convuwl", 1, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_D1);
16292       orc_program_append_2 (p, "convswl", 1, ORC_VAR_T3, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_D1);
16293       orc_program_append_2 (p, "cmpgtsw", 2, ORC_VAR_T5, ORC_VAR_C1, ORC_VAR_T2, ORC_VAR_D1);
16294       orc_program_append_2 (p, "andw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T1, ORC_VAR_D1);
16295       orc_program_append_2 (p, "mulhuw", 2, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1);
16296       orc_program_append_2 (p, "subl", 1, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_T5, ORC_VAR_D1);
16297       orc_program_append_2 (p, "shrul", 1, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2, ORC_VAR_D1);
16298       orc_program_append_2 (p, "mulll", 1, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_D1);
16299       orc_program_append_2 (p, "addl", 1, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1);
16300       orc_program_append_2 (p, "convssslw", 1, ORC_VAR_D1, ORC_VAR_T4, ORC_VAR_D1, ORC_VAR_D1);
16301
16302     if (benchmark) {
16303       printf ("    cycles (emulate) :   %g\n",
16304           orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));
16305     }
16306
16307     ret = orc_test_compare_output_backup (p);
16308     if (!ret) {
16309       error = TRUE;
16310     } else if (!quiet) {
16311       printf ("    backup function  :   PASSED\n");
16312     }
16313
16314     if (benchmark) {
16315       printf ("    cycles (backup)  :   %g\n",
16316           orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));
16317     }
16318
16319     ret = orc_test_compare_output (p);
16320     if (ret == ORC_TEST_INDETERMINATE && !quiet) {
16321       printf ("    compiled function:   COMPILE FAILED\n");
16322     } else if (!ret) {
16323       error = TRUE;
16324     } else if (!quiet) {
16325       printf ("    compiled function:   PASSED\n");
16326     }
16327
16328     if (benchmark) {
16329       printf ("    cycles (compiled):   %g\n",
16330           orc_test_performance_full (p, 0, NULL));
16331     }
16332
16333     orc_program_free (p);
16334   }
16335
16336
16337   if (error) {
16338     return 1;
16339   };
16340   return 0;
16341 }