Initial commit to Gerrit
[profile/ivi/orc.git] / testsuite / generate_opcodes_sys.c
1
2 #include "config.h"
3
4 #include <stdio.h>
5 #include <stdlib.h>
6
7 #include <orc/orc.h>
8 #include <orc-test/orctest.h>
9
10
11 int error = FALSE;
12
13 void test_opcode (OrcStaticOpcode *opcode);
14 void test_opcode_const (OrcStaticOpcode *opcode);
15 void test_opcode_param (OrcStaticOpcode *opcode);
16
17 int
18 main (int argc, char *argv[])
19 {
20   int i;
21   OrcOpcodeSet *opcode_set;
22   OrcStaticOpcode *opcode;
23   const char *d1;
24
25   orc_init();
26   orc_test_init();
27
28   opcode_set = orc_opcode_set_get ("sys");
29
30   for(i=0;i<opcode_set->n_opcodes;i++){
31     opcode = opcode_set->opcodes + i;
32
33     printf(".function emulate_%s\n", opcode->name);
34     if (opcode->flags & ORC_STATIC_OPCODE_ACCUMULATOR) {
35       printf(".accumulator %d a1\n", opcode->dest_size[0]);
36       d1 = "a1";
37     } else {
38       printf(".dest %d d1\n", opcode->dest_size[0]);
39       d1 = "d1";
40     }
41     if (opcode->dest_size[1]) {
42       printf(".dest %d d2\n", opcode->dest_size[1]);
43     }
44     printf(".source %d s1\n", opcode->src_size[0]);
45     if (opcode->src_size[1]) {
46       if (opcode->flags & ORC_STATIC_OPCODE_SCALAR) {
47         printf(".param %d s2\n", opcode->src_size[1]);
48       } else {
49         printf(".source %d s2\n", opcode->src_size[1]);
50       }
51     }
52     printf("\n");
53     if (opcode->src_size[1]) {
54       printf("%s %s, s1, s2\n", opcode->name, d1);
55     } else {
56       if (opcode->dest_size[1]) {
57         printf("%s %s, d2, s1\n", opcode->name, d1);
58       } else {
59         printf("%s %s, s1\n", opcode->name, d1);
60       }
61     }
62     printf("\n");
63     printf("\n");
64
65     printf(".function emulate_n16_%s\n", opcode->name);
66     printf(".n 16\n");
67     if (opcode->flags & ORC_STATIC_OPCODE_ACCUMULATOR) {
68       printf(".accumulator %d a1\n", opcode->dest_size[0]);
69       d1 = "a1";
70     } else {
71       printf(".dest %d d1\n", opcode->dest_size[0]);
72       d1 = "d1";
73     }
74     if (opcode->dest_size[1]) {
75       printf(".dest %d d2\n", opcode->dest_size[1]);
76     }
77     printf(".source %d s1\n", opcode->src_size[0]);
78     if (opcode->src_size[1]) {
79       if (opcode->flags & ORC_STATIC_OPCODE_SCALAR) {
80         printf(".param %d s2\n", opcode->src_size[1]);
81       } else {
82         printf(".source %d s2\n", opcode->src_size[1]);
83       }
84     }
85     printf("\n");
86     if (opcode->src_size[1]) {
87       printf("%s %s, s1, s2\n", opcode->name, d1);
88     } else {
89       if (opcode->dest_size[1]) {
90         printf("%s %s, d2, s1\n", opcode->name, d1);
91       } else {
92         printf("%s %s, s1\n", opcode->name, d1);
93       }
94     }
95     printf("\n");
96     printf("\n");
97   }
98
99   if (error) return 1;
100   return 0;
101 }
102