Initial commit to Gerrit
[profile/ivi/orc.git] / testsuite / compile_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
23   orc_init();
24   orc_test_init();
25
26   opcode_set = orc_opcode_set_get ("sys");
27
28   for(i=0;i<opcode_set->n_opcodes;i++){
29     printf("/* %s %d,%d,%d */\n",
30         opcode_set->opcodes[i].name,
31         opcode_set->opcodes[i].dest_size[0],
32         opcode_set->opcodes[i].src_size[0],
33         opcode_set->opcodes[i].src_size[1]);
34     test_opcode (opcode_set->opcodes + i);
35   }
36   for(i=0;i<opcode_set->n_opcodes;i++){
37     printf("/* %s const %d,%d,%d */\n",
38         opcode_set->opcodes[i].name,
39         opcode_set->opcodes[i].dest_size[0],
40         opcode_set->opcodes[i].src_size[0],
41         opcode_set->opcodes[i].src_size[1]);
42     test_opcode_const (opcode_set->opcodes + i);
43   }
44   for(i=0;i<opcode_set->n_opcodes;i++){
45     printf("/* %s param %d,%d,%d */\n",
46         opcode_set->opcodes[i].name,
47         opcode_set->opcodes[i].dest_size[0],
48         opcode_set->opcodes[i].src_size[0],
49         opcode_set->opcodes[i].src_size[1]);
50     test_opcode_param (opcode_set->opcodes + i);
51   }
52
53   if (error) return 1;
54   return 0;
55 }
56
57 void
58 test_opcode (OrcStaticOpcode *opcode)
59 {
60   OrcProgram *p;
61   OrcTestResult ret;
62
63   p = orc_test_get_program_for_opcode (opcode);
64   if (!p) return;
65
66   ret = orc_test_gcc_compile (p);
67   if (ret == ORC_TEST_FAILED) {
68     printf("%s", orc_program_get_asm_code (p));
69     error = TRUE;
70     return;
71   }
72
73   orc_program_free (p);
74 }
75
76 void
77 test_opcode_const (OrcStaticOpcode *opcode)
78 {
79   OrcProgram *p;
80   OrcTestResult ret;
81
82   p = orc_test_get_program_for_opcode_const (opcode);
83   if (!p) return;
84
85   ret = orc_test_gcc_compile (p);
86   if (ret == ORC_TEST_FAILED) {
87     printf("%s", orc_program_get_asm_code (p));
88     error = TRUE;
89     return;
90   }
91
92   orc_program_free (p);
93 }
94
95 void
96 test_opcode_param (OrcStaticOpcode *opcode)
97 {
98   OrcProgram *p;
99   OrcTestResult ret;
100
101   p = orc_test_get_program_for_opcode_param (opcode);
102   if (!p) return;
103
104   ret = orc_test_gcc_compile (p);
105   if (ret == ORC_TEST_FAILED) {
106     printf("%s", orc_program_get_asm_code (p));
107     error = TRUE;
108     return;
109   }
110
111   orc_program_free (p);
112 }
113