1
2 #ifndef FAUSTFLOAT
3 #define FAUSTFLOAT double
4 #endif
5
6 #include "controlTools.h"
7
main(int argc,char * argv[])8 int main(int argc, char* argv[])
9 {
10 int argc1 = argc - 2;
11 #ifdef WIN32
12 const char* argv1[50];
13 #else
14 const char* argv1[argc1];
15 #endif
16 bool is_vec = false;
17 for (int i = 0; i < argc - 2; i++) {
18 argv1[i] = argv[i + 2];
19 is_vec = is_vec || (strcmp(argv1[i], "-vec") == 0)
20 || (strcmp(argv1[i], "-omp") == 0)
21 || (strcmp(argv1[i], "-sch") == 0);
22 }
23
24 llvm_dsp_factory* factory = nullptr;
25 int linenum = 0;
26 int nbsamples = 60000;
27
28 bool inpl = isopt(argv, "-inpl");
29
30 {
31 // Test factory generated from compilation
32 string error_msg;
33 factory = createDSPFactoryFromFile(argv[1], argc1, argv1, "", error_msg, 3);
34
35 if (!factory) {
36 cerr << "ERROR in createDSPFactoryFromFile " << error_msg;
37 exit(-1);
38 }
39
40 dsp* DSP = factory->createDSPInstance();
41 if (!DSP) {
42 cerr << "ERROR : createDSPInstance " << endl;
43 exit(-1);
44 }
45
46 // print general informations
47 printHeader(DSP, nbsamples);
48
49 runDSP1(factory, argv[1], linenum, nbsamples/4);
50 runDSP1(factory, argv[1], linenum, nbsamples/4, false, false, true);
51 runPolyDSP1(factory, linenum, nbsamples/4, 4);
52 runPolyDSP1(factory, linenum, nbsamples/4, 1);
53
54 // print general informations
55 printHeader(DSP, nbsamples);
56
57 runDSP1(factory, argv[1], linenum, nbsamples/4, true);
58 runDSP1(factory, argv[1], linenum, nbsamples/4, true, false, true);
59 runPolyDSP1(factory, linenum, nbsamples/4, 4);
60 runPolyDSP1(factory, linenum, nbsamples/4, 1);
61
62 /// 'inplace' only works in 'scalar' mode
63 if (!is_vec) {
64 // print general informations
65 printHeader(DSP, nbsamples);
66
67 runDSP1(factory, argv[1], linenum, nbsamples/4, false, inpl);
68 runDSP1(factory, argv[1], linenum, nbsamples/4, false, inpl, true);
69 runPolyDSP1(factory, linenum, nbsamples/4, 4);
70 runPolyDSP1(factory, linenum, nbsamples/4, 1);
71 }
72 }
73
74 {
75 string error_msg;
76 // Test writeDSPFactoryToBitcodeFile/readDSPFactoryFromBitcodeFile
77 stringstream str; str << "/var/tmp/llvm-factory" << factory << ".bc";
78 if (!writeDSPFactoryToBitcodeFile(factory, str.str())) {
79 cerr << "ERROR in writeDSPFactoryToBitcodeFile \n";
80 }
81 deleteDSPFactory(static_cast<llvm_dsp_factory*>(factory));
82 factory = readDSPFactoryFromBitcodeFile(str.str(), "", error_msg);
83
84 if (!factory) {
85 cerr << "ERROR in readDSPFactoryFromBitcodeFile " << error_msg;
86 exit(-1);
87 }
88
89 dsp* DSP = factory->createDSPInstance();
90 if (!DSP) {
91 cerr << "ERROR : createDSPInstance " << endl;
92 exit(-1);
93 }
94
95 // print general informations
96 printHeader(DSP, nbsamples);
97
98 runDSP1(factory, argv[1], linenum, nbsamples/4);
99 runDSP1(factory, argv[1], linenum, nbsamples/4, false, false, true);
100 runPolyDSP1(factory, linenum, nbsamples/4, 4);
101 runPolyDSP1(factory, linenum, nbsamples/4, 1);
102 }
103
104 {
105 string error_msg;
106 // Test writeDSPFactoryToBitcode/readDSPFactoryFromBitcode
107 string factory_str = writeDSPFactoryToBitcode(factory);
108 deleteDSPFactory(static_cast<llvm_dsp_factory*>(factory));
109 factory = readDSPFactoryFromBitcode(factory_str, "", error_msg);
110
111 if (!factory) {
112 cerr << "ERROR in readDSPFactoryFromBitcode " << error_msg;
113 exit(-1);
114 }
115
116 dsp* DSP = factory->createDSPInstance();
117 if (!DSP) {
118 cerr << "ERROR : createDSPInstance " << endl;
119 exit(-1);
120 }
121
122 // print general informations
123 printHeader(DSP, nbsamples);
124
125 runDSP1(factory, argv[1], linenum, nbsamples/4);
126 runDSP1(factory, argv[1], linenum, nbsamples/4, false, false, true);
127 runPolyDSP1(factory, linenum, nbsamples/4, 4);
128 runPolyDSP1(factory, linenum, nbsamples/4, 1);
129 }
130
131 {
132 string error_msg;
133 // Test writeDSPFactoryToIRFile/readDSPFactoryFromIRFile
134 stringstream str; str << "/var/tmp/llvm-factory" << factory << ".ll";
135 if (!writeDSPFactoryToIRFile(factory, str.str())) {
136 cerr << "ERROR in writeDSPFactoryToIRFile \n";
137 }
138 deleteDSPFactory(static_cast<llvm_dsp_factory*>(factory));
139 factory = readDSPFactoryFromIRFile(str.str(), "", error_msg);
140
141 if (!factory) {
142 cerr << "ERROR in readDSPFactoryFromIRFile " << error_msg;
143 exit(-1);
144 }
145
146 dsp* DSP = factory->createDSPInstance();
147 if (!DSP) {
148 cerr << "ERROR : createDSPInstance " << endl;
149 exit(-1);
150 }
151
152 // print general informations
153 printHeader(DSP, nbsamples);
154
155 runDSP1(factory, argv[1], linenum, nbsamples/4);
156 runDSP1(factory, argv[1], linenum, nbsamples/4, false, false, true);
157 runPolyDSP1(factory, linenum, nbsamples/4, 4);
158 runPolyDSP1(factory, linenum, nbsamples/4, 1);
159 }
160
161 {
162 string error_msg;
163 // Test writeDSPFactoryToIR/readDSPFactoryFromIR
164 string factory_str = writeDSPFactoryToIR(factory);
165 deleteDSPFactory(static_cast<llvm_dsp_factory*>(factory));
166 factory = readDSPFactoryFromIR(factory_str, "", error_msg);
167
168 if (!factory) {
169 cerr << "ERROR in readDSPFactoryFromIRFile " << error_msg;
170 exit(-1);
171 }
172
173 dsp* DSP = factory->createDSPInstance();
174 if (!DSP) {
175 cerr << "ERROR : createDSPInstance " << endl;
176 exit(-1);
177 }
178
179 // print general informations
180 printHeader(DSP, nbsamples);
181
182 runDSP1(factory, argv[1], linenum, nbsamples/4);
183 runDSP1(factory, argv[1], linenum, nbsamples/4, false, false, true);
184 runPolyDSP1(factory, linenum, nbsamples/4, 4);
185 runPolyDSP1(factory, linenum, nbsamples/4, 1);
186 }
187
188 {
189 string error_msg;
190 // Test writeDSPFactoryToMachineFile/readDSPFactoryFromMachineFile
191 string machine_file_name = "/var/tmp/" + string(argv[1]) + "-llvm-factory-machine";
192 if (!writeDSPFactoryToMachineFile(factory, machine_file_name, "")) {
193 cerr << "ERROR in writeDSPFactoryToMachineFile \n";
194 }
195 deleteDSPFactory(static_cast<llvm_dsp_factory*>(factory));
196 factory = readDSPFactoryFromMachineFile(machine_file_name, "", error_msg);
197
198 if (!factory) {
199 cerr << "ERROR in readDSPFactoryFromMachineFile " << error_msg;
200 exit(-1);
201 }
202
203 dsp* DSP = factory->createDSPInstance();
204 if (!DSP) {
205 cerr << "ERROR : createDSPInstance " << endl;
206 exit(-1);
207 }
208
209 // print general informations
210 printHeader(DSP, nbsamples);
211
212 runDSP1(factory, argv[1], linenum, nbsamples/4);
213 runDSP1(factory, argv[1], linenum, nbsamples/4, false, false, true);
214 runPolyDSP1(factory, linenum, nbsamples/4, 4);
215 runPolyDSP1(factory, linenum, nbsamples/4, 1);
216 }
217
218 {
219 string error_msg;
220 // Test writeDSPFactoryToMachine/readDSPFactoryFromMachine
221 string factory_str = writeDSPFactoryToMachine(factory, "");
222 deleteDSPFactory(static_cast<llvm_dsp_factory*>(factory));
223 factory = readDSPFactoryFromMachine(factory_str, "", error_msg);
224
225 if (!factory) {
226 cerr << "ERROR in readDSPFactoryFromMachine " << error_msg;
227 exit(-1);
228 }
229
230 dsp* DSP = factory->createDSPInstance();
231 if (!DSP) {
232 cerr << "ERROR : createDSPInstance " << endl;
233 exit(-1);
234 }
235
236 // print general informations
237 printHeader(DSP, nbsamples);
238
239 runDSP1(factory, argv[1], linenum, nbsamples/4);
240 runDSP1(factory, argv[1], linenum, nbsamples/4, false, false, true);
241 runPolyDSP1(factory, linenum, nbsamples/4, 4);
242 runPolyDSP1(factory, linenum, nbsamples/4, 1);
243 }
244
245 return 0;
246 }
247