1 /*
2
3 Copyright (c) 2009, 2010, 2011 STMicroelectronics
4 Written by Christophe Lyon
5
6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to deal
8 in the Software without restriction, including without limitation the rights
9 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions:
12
13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software.
15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22 THE SOFTWARE.
23
24 */
25
26 #if defined(__cplusplus)
27 #include <cstdio>
28 #include <cstdint>
29 #else
30 #include <stdio.h>
31 #if defined(_MSC_VER)
32 #include "msstdint.h"
33 #else
34 #include <stdint.h>
35 #endif
36 #endif
37
38 #if defined(__arm__) || defined(__aarch64__)
39 #include <dspfns.h>
40 #else
41 #include "stm-dspfns.h"
42 #endif
43
44 extern FILE* ref_file;
45
46 #define __xSTR(X) #X
47 #define __STR(X) __xSTR(X)
48
49 #define FN(X) X, __STR(X)
50
51 typedef int32_t func32_32_32_ptr(int32_t, int32_t);
52 typedef int16_t func16_32_ptr(int32_t);
53 typedef int32_t func32_32_16_16_ptr(int32_t, int16_t, int16_t);
54
test_16_fn_32(func16_32_ptr func,const char * func_name,int init_Overflow,int init_Carry)55 void test_16_fn_32(func16_32_ptr func, const char* func_name,
56 int init_Overflow, int init_Carry)
57 {
58 int32_t svar32_a;
59 int16_t svar16_a;
60
61 fprintf(ref_file, "Checking %s with input Overflow=%d and input Carry=%d\n",
62 func_name, init_Overflow, init_Carry);
63
64 svar32_a = 1;
65 Overflow = init_Overflow;
66 Carry = init_Carry;
67 svar16_a = func(svar32_a);
68 fprintf(ref_file, "%s(%#x) = %#x overflow %d carry %d\n",
69 func_name, svar32_a, svar16_a, Overflow, Carry);
70
71 svar32_a = -1;
72 Overflow = init_Overflow;
73 Carry = init_Carry;
74 svar16_a = func(svar32_a);
75 fprintf(ref_file, "%s(%#x) = %#x overflow %d carry %d\n",
76 func_name, svar32_a, svar16_a, Overflow, Carry);
77
78 svar32_a = 32768;
79 Overflow = init_Overflow;
80 Carry = init_Carry;
81 svar16_a = func(svar32_a);
82 fprintf(ref_file, "%s(%#x) = %#x overflow %d carry %d\n",
83 func_name, svar32_a, svar16_a, Overflow, Carry);
84
85 svar32_a = -32768;
86 Overflow = init_Overflow;
87 Carry = init_Carry;
88 svar16_a = func(svar32_a);
89 fprintf(ref_file, "%s(%#x) = %#x overflow %d carry %d\n",
90 func_name, svar32_a, svar16_a, Overflow, Carry);
91
92 svar32_a = -32769;
93 Overflow = init_Overflow;
94 Carry = init_Carry;
95 svar16_a = func(svar32_a);
96 fprintf(ref_file, "%s(%#x) = %#x overflow %d carry %d\n",
97 func_name, svar32_a, svar16_a, Overflow, Carry);
98 }
99
test_32_fn_32_32(func32_32_32_ptr func,const char * func_name,int init_Overflow,int init_Carry)100 void test_32_fn_32_32(func32_32_32_ptr func, const char* func_name,
101 int init_Overflow, int init_Carry)
102 {
103 int32_t svar32_a, svar32_b, svar32_c;
104
105 fprintf(ref_file, "Checking %s with input Overflow=%d and input Carry=%d\n",
106 func_name, init_Overflow, init_Carry);
107
108 svar32_a = 1;
109 svar32_b = 2;
110 Overflow = init_Overflow;
111 Carry = init_Carry;
112 svar32_c = func(svar32_a, svar32_b);
113 fprintf(ref_file, "%s(%#x, %#x) = %#x overflow %d carry %d\n",
114 func_name, svar32_a, svar32_b, svar32_c, Overflow, Carry);
115
116 svar32_a = -1;
117 svar32_b = -2;
118 Overflow = init_Overflow;
119 Carry = init_Carry;
120 svar32_c = func(svar32_a, svar32_b);
121 fprintf(ref_file, "%s(%#x, %#x) = %#x overflow %d carry %d\n",
122 func_name, svar32_a, svar32_b, svar32_c, Overflow, Carry);
123
124 svar32_a = -1;
125 svar32_b = 2;
126 Overflow = init_Overflow;
127 Carry = init_Carry;
128 svar32_c = func(svar32_a, svar32_b);
129 fprintf(ref_file, "%s(%#x, %#x) = %#x overflow %d carry %d\n",
130 func_name, svar32_a, svar32_b, svar32_c, Overflow, Carry);
131
132 svar32_a = 0x7000;
133 svar32_b = 0x7000;
134 Overflow = init_Overflow;
135 Carry = init_Carry;
136 svar32_c = func(svar32_a, svar32_b);
137 fprintf(ref_file, "%s(%#x, %#x) = %#x overflow %d carry %d\n",
138 func_name, svar32_a, svar32_b, svar32_c, Overflow, Carry);
139
140 svar32_a = 0x8FFF;
141 svar32_b = 0x8FFF;
142 Overflow = init_Overflow;
143 Carry = init_Carry;
144 svar32_c = func(svar32_a, svar32_b);
145 fprintf(ref_file, "%s(%#x, %#x) = %#x overflow %d carry %d\n",
146 func_name, svar32_a, svar32_b, svar32_c, Overflow, Carry);
147
148 svar32_a = 0x70000000;
149 svar32_b = 0x70000000;
150 Overflow = init_Overflow;
151 Carry = init_Carry;
152 svar32_c = func(svar32_a, svar32_b);
153 fprintf(ref_file, "%s(%#x, %#x) = %#x overflow %d carry %d\n",
154 func_name, svar32_a, svar32_b, svar32_c, Overflow, Carry);
155
156 svar32_a = 0x8FFFFFFF;
157 svar32_b = 0x8FFFFFFF;
158 Overflow = init_Overflow;
159 Carry = init_Carry;
160 svar32_c = func(svar32_a, svar32_b);
161 fprintf(ref_file, "%s(%#x, %#x) = %#x overflow %d carry %d\n",
162 func_name, svar32_a, svar32_b, svar32_c, Overflow, Carry);
163
164 svar32_a = 0x8FFFFFFF;
165 svar32_b = 0xFFFFFFFF;
166 Overflow = init_Overflow;
167 Carry = init_Carry;
168 svar32_c = func(svar32_a, svar32_b);
169 fprintf(ref_file, "%s(%#x, %#x) = %#x overflow %d carry %d\n",
170 func_name, svar32_a, svar32_b, svar32_c, Overflow, Carry);
171 }
172
test_32_fn_32_16_16(func32_32_16_16_ptr func,const char * func_name,int init_Overflow,int init_Carry)173 void test_32_fn_32_16_16(func32_32_16_16_ptr func, const char* func_name,
174 int init_Overflow, int init_Carry)
175 {
176 int32_t svar32_a, svar32_b;
177 int16_t svar16_a, svar16_b;
178
179 fprintf(ref_file, "Checking %s with input Overflow=%d and input Carry=%d\n",
180 func_name, init_Overflow, init_Carry);
181
182 svar16_a = 2;
183 svar16_b = 2;
184 svar32_a = 0x1234;
185 Overflow = 0;
186 Carry = init_Carry;
187 svar32_b = func(svar32_a, svar16_a, svar16_b);
188 fprintf(ref_file, "%s(%#x, %#x, %#x) = %#x overflow %d carry %d\n",
189 func_name, svar32_a, svar16_a, svar16_b, svar32_b, Overflow, Carry);
190
191 svar16_a = -1;
192 svar16_b = -1;
193 Overflow = 0;
194 Carry = init_Carry;
195 svar32_b = func(svar32_a, svar16_a, svar16_b);
196 fprintf(ref_file, "%s(%#x, %#x, %#x) = %#x overflow %d carry %d\n",
197 func_name, svar32_a, svar16_a, svar16_b, svar32_b, Overflow, Carry);
198
199 svar16_a = 0x8000;
200 svar16_b = 0x8000;
201 Overflow = 0;
202 Carry = init_Carry;
203 svar32_b = func(svar32_a, svar16_a, svar16_b);
204 fprintf(ref_file, "%s(%#x, %#x, %#x) = %#x overflow %d carry %d\n",
205 func_name, svar32_a, svar16_a, svar16_b, svar32_b, Overflow, Carry);
206
207 svar16_a = 0x8000;
208 svar16_b = 0x8000;
209 Overflow = 0;
210 Carry = init_Carry;
211 svar32_a = -1;
212 svar32_b = func(svar32_a, svar16_a, svar16_b);
213 fprintf(ref_file, "%s(%#x, %#x, %#x) = %#x overflow %d carry %d\n",
214 func_name, svar32_a, svar16_a, svar16_b, svar32_b, Overflow, Carry);
215 }
216
exec_dspfns1(int init_Overflow,int init_Carry)217 void exec_dspfns1 (int init_Overflow, int init_Carry)
218 {
219 int32_t svar32_a, svar32_b, svar32_c;
220 int16_t svar16_a, svar16_b, svar16_c;
221
222
223 fprintf(ref_file, "\n\nDSP FNS (non-NEON/ITU) intrinsics with input Overflow=%d and input Carry=%d\n", init_Overflow, init_Carry);
224
225 /* saturate */
226 /* int16_t saturate(int32_t x) */
227 test_16_fn_32(FN(saturate), init_Overflow, init_Carry);
228
229
230 /* add */
231 /* int16_t add(int16_t x, int16_t y) */
232 svar16_a = 1;
233 svar16_b = 1;
234 Overflow = init_Overflow;
235 Carry = init_Carry;
236 svar16_c = add(svar16_a, svar16_b);
237 fprintf(ref_file, "add(%#x, %#x) = %#x overflow %d carry %d\n", svar16_a, svar16_b, svar16_c, Overflow, Carry);
238
239 svar16_a = -1;
240 svar16_b = -1;
241 Overflow = init_Overflow;
242 Carry = init_Carry;
243 svar16_c = add(svar16_a, svar16_b);
244 fprintf(ref_file, "add(%#x, %#x) = %#x overflow %d carry %d\n", svar16_a, svar16_b, svar16_c, Overflow, Carry);
245
246 svar16_a = 20000;
247 svar16_b = 20000;
248 Overflow = init_Overflow;
249 Carry = init_Carry;
250 svar16_c = add(svar16_a, svar16_b);
251 fprintf(ref_file, "add(%#x, %#x) = %#x overflow %d carry %d\n", svar16_a, svar16_b, svar16_c, Overflow, Carry);
252
253 svar16_a = -20000;
254 svar16_b = -20000;
255 Overflow = init_Overflow;
256 Carry = init_Carry;
257 svar16_c = add(svar16_a, svar16_b);
258 fprintf(ref_file, "add(%#x, %#x) = %#x overflow %d carry %d\n", svar16_a, svar16_b, svar16_c, Overflow, Carry);
259
260
261 /* sub */
262 /* int16_t sub(int16_t x, int16_t y) */
263 svar16_a = 1;
264 svar16_b = 1;
265 Overflow = init_Overflow;
266 Carry = init_Carry;
267 svar16_c = sub(svar16_a, svar16_b);
268 fprintf(ref_file, "sub(%#x, %#x) = %#x overflow %d carry %d\n", svar16_a, svar16_b, svar16_c, Overflow, Carry);
269
270 svar16_a = -1;
271 svar16_b = -1;
272 Overflow = init_Overflow;
273 Carry = init_Carry;
274 svar16_c = sub(svar16_a, svar16_b);
275 fprintf(ref_file, "sub(%#x, %#x) = %#x overflow %d carry %d\n", svar16_a, svar16_b, svar16_c, Overflow, Carry);
276
277 svar16_a = 20000;
278 svar16_b = 20000;
279 Overflow = init_Overflow;
280 Carry = init_Carry;
281 svar16_c = sub(svar16_a, svar16_b);
282 fprintf(ref_file, "sub(%#x, %#x) = %#x overflow %d carry %d\n", svar16_a, svar16_b, svar16_c, Overflow, Carry);
283
284 svar16_a = -20000;
285 svar16_b = -20000;
286 Overflow = init_Overflow;
287 Carry = init_Carry;
288 svar16_c = sub(svar16_a, svar16_b);
289 fprintf(ref_file, "sub(%#x, %#x) = %#x overflow %d carry %d\n", svar16_a, svar16_b, svar16_c, Overflow, Carry);
290
291 svar16_a = 0;
292 svar16_b = -32768;
293 Overflow = init_Overflow;
294 Carry = init_Carry;
295 svar16_c = sub(svar16_a, svar16_b);
296 fprintf(ref_file, "sub(%#x, %#x) = %#x overflow %d carry %d\n", svar16_a, svar16_b, svar16_c, Overflow, Carry);
297
298
299 /* abs_s */
300 /* int16_t abs_s(int16_t x) */
301 svar16_b = 1;
302 Overflow = init_Overflow;
303 Carry = init_Carry;
304 svar16_a = abs_s(svar16_b);
305 fprintf(ref_file, "abs_s(%#x) = %#x overflow %d carry %d\n", svar16_b, svar16_a, Overflow, Carry);
306
307 svar16_b = -1;
308 Overflow = init_Overflow;
309 Carry = init_Carry;
310 svar16_a = abs_s(svar16_b);
311 fprintf(ref_file, "abs_s(%#x) = %#x overflow %d carry %d\n", svar16_b, svar16_a, Overflow, Carry);
312
313 svar16_b = -32768;
314 Overflow = init_Overflow;
315 Carry = init_Carry;
316 svar16_a = abs_s(svar16_b);
317 fprintf(ref_file, "abs_s(%#x) = %#x overflow %d carry %d\n", svar16_b, svar16_a, Overflow, Carry);
318
319
320 /* shl */
321 /* int16_t shl(int16_t x, int16_t y) */
322 svar16_a = 1;
323 svar16_b = 1;
324 Overflow = init_Overflow;
325 Carry = init_Carry;
326 svar16_c = shl(svar16_a, svar16_b);
327 fprintf(ref_file, "shl(%#x, %d) = %#x overflow %d carry %d\n", svar16_a, svar16_b, svar16_c, Overflow, Carry);
328
329 svar16_a = 10;
330 svar16_b = 1;
331 Overflow = init_Overflow;
332 Carry = init_Carry;
333 svar16_c = shl(svar16_a, svar16_b);
334 fprintf(ref_file, "shl(%#x, %d) = %#x overflow %d carry %d\n", svar16_a, svar16_b, svar16_c, Overflow, Carry);
335
336 svar16_a = 0xFFF;
337 svar16_b = 10;
338 Overflow = init_Overflow;
339 Carry = init_Carry;
340 svar16_c = shl(svar16_a, svar16_b);
341 fprintf(ref_file, "shl(%#x, %d) = %#x overflow %d carry %d\n", svar16_a, svar16_b, svar16_c, Overflow, Carry);
342
343 svar16_a = 0xFFF;
344 svar16_b = 20;
345 Overflow = init_Overflow;
346 Carry = init_Carry;
347 svar16_c = shl(svar16_a, svar16_b);
348 fprintf(ref_file, "shl(%#x, %d) = %#x overflow %d carry %d\n", svar16_a, svar16_b, svar16_c, Overflow, Carry);
349
350 svar16_a = 1;
351 svar16_b = -1;
352 Overflow = init_Overflow;
353 Carry = init_Carry;
354 svar16_c = shl(svar16_a, svar16_b);
355 fprintf(ref_file, "shl(%#x, %d) = %#x overflow %d carry %d\n", svar16_a, svar16_b, svar16_c, Overflow, Carry);
356
357 svar16_a = 20;
358 svar16_b = -1;
359 Overflow = init_Overflow;
360 Carry = init_Carry;
361 svar16_c = shl(svar16_a, svar16_b);
362 fprintf(ref_file, "shl(%#x, %d) = %#x overflow %d carry %d\n", svar16_a, svar16_b, svar16_c, Overflow, Carry);
363
364 svar16_a = 0xFFF;
365 svar16_b = -10;
366 Overflow = init_Overflow;
367 Carry = init_Carry;
368 svar16_c = shl(svar16_a, svar16_b);
369 fprintf(ref_file, "shl(%#x, %d) = %#x overflow %d carry %d\n", svar16_a, svar16_b, svar16_c, Overflow, Carry);
370
371 svar16_a = 0xFFF;
372 svar16_b = -64;
373 Overflow = init_Overflow;
374 Carry = init_Carry;
375 svar16_c = shl(svar16_a, svar16_b);
376 fprintf(ref_file, "shl(%#x, %d) = %#x overflow %d carry %d\n", svar16_a, svar16_b, svar16_c, Overflow, Carry);
377
378
379 /* shr */
380 /* int16_t shr(int16_t x, int16_t y) */
381 svar16_a = 1;
382 svar16_b = -1;
383 Overflow = init_Overflow;
384 Carry = init_Carry;
385 svar16_c = shr(svar16_a, svar16_b);
386 fprintf(ref_file, "shr(%#x, %d) = %#x overflow %d carry %d\n", svar16_a, svar16_b, svar16_c, Overflow, Carry);
387
388 svar16_a = 10;
389 svar16_b = -1;
390 Overflow = init_Overflow;
391 Carry = init_Carry;
392 svar16_c = shr(svar16_a, svar16_b);
393 fprintf(ref_file, "shr(%#x, %d) = %#x overflow %d carry %d\n", svar16_a, svar16_b, svar16_c, Overflow, Carry);
394
395 svar16_a = 0xFFF;
396 svar16_b = -10;
397 Overflow = init_Overflow;
398 Carry = init_Carry;
399 svar16_c = shr(svar16_a, svar16_b);
400 fprintf(ref_file, "shr(%#x, %d) = %#x overflow %d carry %d\n", svar16_a, svar16_b, svar16_c, Overflow, Carry);
401
402 svar16_a = 0xFFF;
403 svar16_b = -20;
404 Overflow = init_Overflow;
405 Carry = init_Carry;
406 svar16_c = shr(svar16_a, svar16_b);
407 fprintf(ref_file, "shr(%#x, %d) = %#x overflow %d carry %d\n", svar16_a, svar16_b, svar16_c, Overflow, Carry);
408
409 svar16_a = 1;
410 svar16_b = 1;
411 Overflow = init_Overflow;
412 Carry = init_Carry;
413 svar16_c = shr(svar16_a, svar16_b);
414 fprintf(ref_file, "shr(%#x, %d) = %#x overflow %d carry %d\n", svar16_a, svar16_b, svar16_c, Overflow, Carry);
415
416 svar16_a = 20;
417 svar16_b = 1;
418 Overflow = init_Overflow;
419 Carry = init_Carry;
420 svar16_c = shr(svar16_a, svar16_b);
421 fprintf(ref_file, "shr(%#x, %d) = %#x overflow %d carry %d\n", svar16_a, svar16_b, svar16_c, Overflow, Carry);
422
423 svar16_a = 0xFFF;
424 svar16_b = 10;
425 Overflow = init_Overflow;
426 Carry = init_Carry;
427 svar16_c = shr(svar16_a, svar16_b);
428 fprintf(ref_file, "shr(%#x, %d) = %#x overflow %d carry %d\n", svar16_a, svar16_b, svar16_c, Overflow, Carry);
429
430 svar16_a = 0xFFF;
431 svar16_b = 64;
432 Overflow = init_Overflow;
433 Carry = init_Carry;
434 svar16_c = shr(svar16_a, svar16_b);
435 fprintf(ref_file, "shr(%#x, %d) = %#x overflow %d carry %d\n", svar16_a, svar16_b, svar16_c, Overflow, Carry);
436
437
438 /* mult */
439 /* int16_t mult(int16_t x, int16_t y) */
440 svar16_a = 2;
441 svar16_b = 2;
442 Overflow = init_Overflow;
443 Carry = init_Carry;
444 svar16_c = mult(svar16_a, svar16_b);
445 fprintf(ref_file, "mult(%#x, %#x) = %#x overflow %d carry %d\n", svar16_a, svar16_b, svar16_c, Overflow, Carry);
446
447 svar16_a = -1;
448 svar16_b = -1;
449 Overflow = init_Overflow;
450 Carry = init_Carry;
451 svar16_c = mult(svar16_a, svar16_b);
452 fprintf(ref_file, "mult(%#x, %#x) = %#x overflow %d carry %d\n", svar16_a, svar16_b, svar16_c, Overflow, Carry);
453
454 svar16_a = 0x8000;
455 svar16_b = 0x8000;
456 Overflow = init_Overflow;
457 Carry = init_Carry;
458 svar16_c = mult(svar16_a, svar16_b);
459 fprintf(ref_file, "mult(%#x, %#x) = %#x overflow %d carry %d\n", svar16_a, svar16_b, svar16_c, Overflow, Carry);
460
461
462 /* L_mult */
463 /* int32_t L_mult(int16_t x, int16_t y) */
464 svar16_a = 2;
465 svar16_b = 2;
466 Overflow = init_Overflow;
467 Carry = init_Carry;
468 svar32_a = L_mult(svar16_a, svar16_b);
469 fprintf(ref_file, "L_mult(%#x, %#x) = %#x overflow %d carry %d\n", svar16_a, svar16_b, svar32_a, Overflow, Carry);
470
471 svar16_a = -1;
472 svar16_b = -1;
473 Overflow = init_Overflow;
474 Carry = init_Carry;
475 svar32_a = L_mult(svar16_a, svar16_b);
476 fprintf(ref_file, "L_mult(%#x, %#x) = %#x overflow %d carry %d\n", svar16_a, svar16_b, svar32_a, Overflow, Carry);
477
478 svar16_a = 0x8000;
479 svar16_b = 0x8000;
480 Overflow = init_Overflow;
481 Carry = init_Carry;
482 svar32_a = L_mult(svar16_a, svar16_b);
483 fprintf(ref_file, "L_mult(%#x, %#x) = %#x overflow %d carry %d\n", svar16_a, svar16_b, svar32_a, Overflow, Carry);
484
485
486 /* negate */
487 /* int16_t negate(int16_t x) */
488 svar16_b = 1;
489 Overflow = init_Overflow;
490 Carry = init_Carry;
491 svar16_a = negate(svar16_b);
492 fprintf(ref_file, "negate(%#x) = %#x overflow %d carry %d\n", svar16_b, svar16_a, Overflow, Carry);
493
494 svar16_b = -1;
495 Overflow = init_Overflow;
496 Carry = init_Carry;
497 svar16_a = negate(svar16_b);
498 fprintf(ref_file, "negate(%#x) = %#x overflow %d carry %d\n", svar16_b, svar16_a, Overflow, Carry);
499
500 svar16_b = -32768;
501 Overflow = init_Overflow;
502 Carry = init_Carry;
503 svar16_a = negate(svar16_b);
504 fprintf(ref_file, "negate(%#x) = %#x overflow %d carry %d\n", svar16_b, svar16_a, Overflow, Carry);
505
506
507 /* extract_h */
508 /* int16_t extract_h(int32_t x) */
509 svar32_a = 1;
510 Overflow = init_Overflow;
511 Carry = init_Carry;
512 svar16_a = extract_h(svar32_a);
513 fprintf(ref_file, "extract_h(%#x) = %#x overflow %d carry %d\n", svar32_a, svar16_a, Overflow, Carry);
514
515 svar32_a = -1;
516 Overflow = init_Overflow;
517 Carry = init_Carry;
518 svar16_a = extract_h(svar32_a);
519 fprintf(ref_file, "extract_h(%#x) = %#x overflow %d carry %d\n", svar32_a, svar16_a, Overflow, Carry);
520
521 svar32_a = -32768;
522 Overflow = init_Overflow;
523 Carry = init_Carry;
524 svar16_a = extract_h(svar32_a);
525 fprintf(ref_file, "extract_h(%#x) = %#x overflow %d carry %d\n", svar32_a, svar16_a, Overflow, Carry);
526
527 svar32_a = 0x12345678;
528 Overflow = init_Overflow;
529 Carry = init_Carry;
530 svar16_a = extract_h(svar32_a);
531 fprintf(ref_file, "extract_h(%#x) = %#x overflow %d carry %d\n", svar32_a, svar16_a, Overflow, Carry);
532
533
534 /* extract_l */
535 /* int16_t extract_l(int32_t x) */
536 svar32_a = 1;
537 Overflow = init_Overflow;
538 Carry = init_Carry;
539 svar16_a = extract_l(svar32_a);
540 fprintf(ref_file, "extract_l(%#x) = %#x overflow %d carry %d\n", svar32_a, svar16_a, Overflow, Carry);
541
542 svar32_a = -1;
543 Overflow = init_Overflow;
544 Carry = init_Carry;
545 svar16_a = extract_l(svar32_a);
546 fprintf(ref_file, "extract_l(%#x) = %#x overflow %d carry %d\n", svar32_a, svar16_a, Overflow, Carry);
547
548 svar32_a = -32768;
549 Overflow = init_Overflow;
550 Carry = init_Carry;
551 svar16_a = extract_l(svar32_a);
552 fprintf(ref_file, "extract_l(%#x) = %#x overflow %d carry %d\n", svar32_a, svar16_a, Overflow, Carry);
553
554 svar32_a = 0x43218765;
555 Overflow = init_Overflow;
556 Carry = init_Carry;
557 svar16_a = extract_l(svar32_a);
558 fprintf(ref_file, "extract_l(%#x) = %#x overflow %d carry %d\n", svar32_a, svar16_a, Overflow, Carry);
559
560
561 /* round */
562 /* int16_t round(int32_t x) */
563 svar32_a = 1;
564 Overflow = init_Overflow;
565 Carry = init_Carry;
566 svar16_a = round(svar32_a);
567 fprintf(ref_file, "round(%#x) = %#x overflow %d carry %d\n", svar32_a, svar16_a, Overflow, Carry);
568
569 svar32_a = -1;
570 Overflow = init_Overflow;
571 Carry = init_Carry;
572 svar16_a = round(svar32_a);
573 fprintf(ref_file, "round(%#x) = %#x overflow %d carry %d\n", svar32_a, svar16_a, Overflow, Carry);
574
575 svar32_a = -32768;
576 Overflow = init_Overflow;
577 Carry = init_Carry;
578 svar16_a = round(svar32_a);
579 fprintf(ref_file, "round(%#x) = %#x overflow %d carry %d\n", svar32_a, svar16_a, Overflow, Carry);
580
581 svar32_a = 0x43218765;
582 Overflow = init_Overflow;
583 Carry = init_Carry;
584 svar16_a = round(svar32_a);
585 fprintf(ref_file, "round(%#x) = %#x overflow %d carry %d\n", svar32_a, svar16_a, Overflow, Carry);
586
587 svar32_a = 0x87654321;
588 Overflow = init_Overflow;
589 Carry = init_Carry;
590 svar16_a = round(svar32_a);
591 fprintf(ref_file, "round(%#x) = %#x overflow %d carry %d\n", svar32_a, svar16_a, Overflow, Carry);
592
593
594 /* L_mac */
595 /* int32_t L_mac(int32_t acc, int16_t x, int16_t y) */
596 svar16_a = 2;
597 svar16_b = 2;
598 svar32_a = 0x1234;
599 Overflow = init_Overflow;
600 Carry = init_Carry;
601 svar32_b = L_mac(svar32_a, svar16_a, svar16_b);
602 fprintf(ref_file, "L_mac(%#x, %#x, %#x) = %#x overflow %d carry %d\n", svar32_a, svar16_a, svar16_b, svar32_b, Overflow, Carry);
603
604 svar16_a = -1;
605 svar16_b = -1;
606 Overflow = init_Overflow;
607 Carry = init_Carry;
608 svar32_b = L_mac(svar32_a, svar16_a, svar16_b);
609 fprintf(ref_file, "L_mac(%#x, %#x, %#x) = %#x overflow %d carry %d\n", svar32_a, svar16_a, svar16_b, svar32_b, Overflow, Carry);
610
611 svar16_a = 0x8000;
612 svar16_b = 0x8000;
613 Overflow = init_Overflow;
614 Carry = init_Carry;
615 svar32_b = L_mac(svar32_a, svar16_a, svar16_b);
616 fprintf(ref_file, "L_mac(%#x, %#x, %#x) = %#x overflow %d carry %d\n", svar32_a, svar16_a, svar16_b, svar32_b, Overflow, Carry);
617
618 svar16_a = 0x8000;
619 svar16_b = 0x8000;
620 Overflow = init_Overflow;
621 Carry = init_Carry;
622 svar32_a = -1;
623 svar32_b = L_mac(svar32_a, svar16_a, svar16_b);
624 fprintf(ref_file, "L_mac(%#x, %#x, %#x) = %#x overflow %d carry %d\n", svar32_a, svar16_a, svar16_b, svar32_b, Overflow, Carry);
625
626
627 /* L_msu */
628 /* int32_t L_msu(int32_t acc, int16_t x, int16_t y) */
629 svar16_a = 2;
630 svar16_b = 2;
631 svar32_a = 0x1234;
632 Overflow = init_Overflow;
633 Carry = init_Carry;
634 svar32_b = L_msu(svar32_a, svar16_a, svar16_b);
635 fprintf(ref_file, "L_msu(%#x, %#x, %#x) = %#x overflow %d carry %d\n", svar32_a, svar16_a, svar16_b, svar32_b, Overflow, Carry);
636
637 svar16_a = -1;
638 svar16_b = -1;
639 Overflow = init_Overflow;
640 Carry = init_Carry;
641 svar32_b = L_msu(svar32_a, svar16_a, svar16_b);
642 fprintf(ref_file, "L_msu(%#x, %#x, %#x) = %#x overflow %d carry %d\n", svar32_a, svar16_a, svar16_b, svar32_b, Overflow, Carry);
643
644 svar16_a = 0x8000;
645 svar16_b = 0x8000;
646 Overflow = init_Overflow;
647 Carry = init_Carry;
648 svar32_b = L_msu(svar32_a, svar16_a, svar16_b);
649 fprintf(ref_file, "L_msu(%#x, %#x, %#x) = %#x overflow %d carry %d\n", svar32_a, svar16_a, svar16_b, svar32_b, Overflow, Carry);
650
651 svar16_a = 0x8000;
652 svar16_b = 0x8000;
653 svar32_a = 1;
654 Overflow = init_Overflow;
655 Carry = init_Carry;
656 svar32_b = L_msu(svar32_a, svar16_a, svar16_b);
657 fprintf(ref_file, "L_msu(%#x, %#x, %#x) = %#x overflow %d carry %d\n", svar32_a, svar16_a, svar16_b, svar32_b, Overflow, Carry);
658
659
660 /* L_add */
661 /* int32_t L_add(int32_t val1, int32_t val2); */
662 svar32_a = 1;
663 svar32_b = 2;
664 Overflow = init_Overflow;
665 Carry = init_Carry;
666 svar32_c = L_add(svar32_a, svar32_b);
667 fprintf(ref_file, "L_add(%#x, %#x) = %#x overflow %d carry %d\n", svar32_a, svar32_b, svar32_c, Overflow, Carry);
668
669 svar32_a = -1;
670 svar32_b = -2;
671 Overflow = init_Overflow;
672 Carry = init_Carry;
673 svar32_c = L_add(svar32_a, svar32_b);
674 fprintf(ref_file, "L_add(%#x, %#x) = %#x overflow %d carry %d\n", svar32_a, svar32_b, svar32_c, Overflow, Carry);
675
676 svar32_a = -1;
677 svar32_b = 2;
678 Overflow = init_Overflow;
679 Carry = init_Carry;
680 svar32_c = L_add(svar32_a, svar32_b);
681 fprintf(ref_file, "L_add(%#x, %#x) = %#x overflow %d carry %d\n", svar32_a, svar32_b, svar32_c, Overflow, Carry);
682
683 svar32_a = 0x7000;
684 svar32_b = 0x7000;
685 Overflow = init_Overflow;
686 Carry = init_Carry;
687 svar32_c = L_add(svar32_a, svar32_b);
688 fprintf(ref_file, "L_add(%#x, %#x) = %#x overflow %d carry %d\n", svar32_a, svar32_b, svar32_c, Overflow, Carry);
689
690 svar32_a = 0x8FFF;
691 svar32_b = 0x8FFF;
692 Overflow = init_Overflow;
693 Carry = init_Carry;
694 svar32_c = L_add(svar32_a, svar32_b);
695 fprintf(ref_file, "L_add(%#x, %#x) = %#x overflow %d carry %d\n", svar32_a, svar32_b, svar32_c, Overflow, Carry);
696
697 svar32_a = 0x70000000;
698 svar32_b = 0x70000000;
699 Overflow = init_Overflow;
700 Carry = init_Carry;
701 svar32_c = L_add(svar32_a, svar32_b);
702 fprintf(ref_file, "L_add(%#x, %#x) = %#x overflow %d carry %d\n", svar32_a, svar32_b, svar32_c, Overflow, Carry);
703
704 svar32_a = 0x8FFFFFFF;
705 svar32_b = 0x8FFFFFFF;
706 Overflow = init_Overflow;
707 Carry = init_Carry;
708 svar32_c = L_add(svar32_a, svar32_b);
709 fprintf(ref_file, "L_add(%#x, %#x) = %#x overflow %d carry %d\n", svar32_a, svar32_b, svar32_c, Overflow, Carry);
710
711 /* L_sub */
712 /* int32_t L_sub(int32_t val1, int32_t val2); */
713 svar32_a = 1;
714 svar32_b = 2;
715 Overflow = init_Overflow;
716 Carry = init_Carry;
717 svar32_c = L_sub(svar32_a, svar32_b);
718 fprintf(ref_file, "L_sub(%#x, %#x) = %#x overflow %d carry %d\n", svar32_a, svar32_b, svar32_c, Overflow, Carry);
719
720 svar32_a = -1;
721 svar32_b = -2;
722 Overflow = init_Overflow;
723 Carry = init_Carry;
724 svar32_c = L_sub(svar32_a, svar32_b);
725 fprintf(ref_file, "L_sub(%#x, %#x) = %#x overflow %d carry %d\n", svar32_a, svar32_b, svar32_c, Overflow, Carry);
726
727 svar32_a = -1;
728 svar32_b = 2;
729 Overflow = init_Overflow;
730 Carry = init_Carry;
731 svar32_c = L_sub(svar32_a, svar32_b);
732 fprintf(ref_file, "L_sub(%#x, %#x) = %#x overflow %d carry %d\n", svar32_a, svar32_b, svar32_c, Overflow, Carry);
733
734 svar32_a = 0x7000;
735 svar32_b = 0xFFFF9000;
736 Overflow = init_Overflow;
737 Carry = init_Carry;
738 svar32_c = L_sub(svar32_a, svar32_b);
739 fprintf(ref_file, "L_sub(%#x, %#x) = %#x overflow %d carry %d\n", svar32_a, svar32_b, svar32_c, Overflow, Carry);
740
741 svar32_a = 0x8FFF;
742 svar32_b = 0xFFFF7001;
743 Overflow = init_Overflow;
744 Carry = init_Carry;
745 svar32_c = L_sub(svar32_a, svar32_b);
746 fprintf(ref_file, "L_sub(%#x, %#x) = %#x overflow %d carry %d\n", svar32_a, svar32_b, svar32_c, Overflow, Carry);
747
748 svar32_a = 0x70000000;
749 svar32_b = 0x90000000;
750 Overflow = init_Overflow;
751 Carry = init_Carry;
752 svar32_c = L_sub(svar32_a, svar32_b);
753 fprintf(ref_file, "L_sub(%#x, %#x) = %#x overflow %d carry %d\n", svar32_a, svar32_b, svar32_c, Overflow, Carry);
754
755 svar32_a = 0x8FFFFFFF;
756 svar32_b = 0x70000001;
757 Overflow = init_Overflow;
758 Carry = init_Carry;
759 svar32_c = L_sub(svar32_a, svar32_b);
760 fprintf(ref_file, "L_sub(%#x, %#x) = %#x overflow %d carry %d\n", svar32_a, svar32_b, svar32_c, Overflow, Carry);
761
762 svar32_a = 0;
763 svar32_b = 0x80000000;
764 Overflow = init_Overflow;
765 Carry = init_Carry;
766 svar32_c = L_sub(svar32_a, svar32_b);
767 fprintf(ref_file, "L_sub(%#x, %#x) = %#x overflow %d carry %d\n", svar32_a, svar32_b, svar32_c, Overflow, Carry);
768
769
770 /* L_add_c */
771 /* int32_t L_add_c(int32_t val1, int32_t val2); */
772 test_32_fn_32_32(FN(L_add_c), init_Overflow, init_Carry);
773
774
775
776 /* L_sub_c */
777 /* int32_t L_sub_c(int32_t val1, int32_t val2); */
778 #undef MYFN
779 #define MYFN L_sub_c
780 svar32_a = 1;
781 svar32_b = 2;
782 Overflow = init_Overflow;
783 Carry = init_Carry;
784 svar32_c = MYFN(svar32_a, svar32_b);
785 fprintf(ref_file, __STR(MYFN) "(%#x, %#x) = %#x overflow %d carry %d\n", svar32_a, svar32_b, svar32_c, Overflow, Carry);
786
787 svar32_a = -1;
788 svar32_b = -2;
789 Overflow = init_Overflow;
790 Carry = init_Carry;
791 svar32_c = MYFN(svar32_a, svar32_b);
792 fprintf(ref_file, __STR(MYFN) "(%#x, %#x) = %#x overflow %d carry %d\n", svar32_a, svar32_b, svar32_c, Overflow, Carry);
793
794 svar32_a = -1;
795 svar32_b = 2;
796 Overflow = init_Overflow;
797 Carry = init_Carry;
798 svar32_c = MYFN(svar32_a, svar32_b);
799 fprintf(ref_file, __STR(MYFN) "(%#x, %#x) = %#x overflow %d carry %d\n", svar32_a, svar32_b, svar32_c, Overflow, Carry);
800
801 svar32_a = 0x7000;
802 svar32_b = 0x7000;
803 Overflow = init_Overflow;
804 Carry = init_Carry;
805 svar32_c = MYFN(svar32_a, svar32_b);
806 fprintf(ref_file, __STR(MYFN) "(%#x, %#x) = %#x overflow %d carry %d\n", svar32_a, svar32_b, svar32_c, Overflow, Carry);
807
808 svar32_a = 0x8FFF;
809 svar32_b = 0x8FFF;
810 Overflow = init_Overflow;
811 Carry = init_Carry;
812 svar32_c = MYFN(svar32_a, svar32_b);
813 fprintf(ref_file, __STR(MYFN) "(%#x, %#x) = %#x overflow %d carry %d\n", svar32_a, svar32_b, svar32_c, Overflow, Carry);
814
815 svar32_a = 0x70000000;
816 svar32_b = 0x70000000;
817 Overflow = init_Overflow;
818 Carry = init_Carry;
819 svar32_c = MYFN(svar32_a, svar32_b);
820 fprintf(ref_file, __STR(MYFN) "(%#x, %#x) = %#x overflow %d carry %d\n", svar32_a, svar32_b, svar32_c, Overflow, Carry);
821
822 svar32_a = 0x8FFFFFFF;
823 svar32_b = 0x8FFFFFFF;
824 Overflow = init_Overflow;
825 Carry = init_Carry;
826 svar32_c = MYFN(svar32_a, svar32_b);
827 fprintf(ref_file, __STR(MYFN) "(%#x, %#x) = %#x overflow %d carry %d\n", svar32_a, svar32_b, svar32_c, Overflow, Carry);
828
829 svar32_a = 0x1;
830 svar32_b = 0x80000000;
831 Overflow = init_Overflow;
832 Carry = init_Carry;
833 svar32_c = MYFN(svar32_a, svar32_b);
834 fprintf(ref_file, __STR(MYFN) "(%#x, %#x) = %#x overflow %d carry %d\n", svar32_a, svar32_b, svar32_c, Overflow, Carry);
835
836 svar32_a = 0xFFFFFFFF;
837 svar32_b = 0x7FFFFFFF;
838 Overflow = init_Overflow;
839 Carry = init_Carry;
840 svar32_c = MYFN(svar32_a, svar32_b);
841 fprintf(ref_file, __STR(MYFN) "(%#x, %#x) = %#x overflow %d carry %d\n", svar32_a, svar32_b, svar32_c, Overflow, Carry);
842
843
844 /* L_macNs */
845 /* int32_t L_macNs(int32_t acc, int16_t x, int16_t y) */
846 test_32_fn_32_16_16(FN(L_macNs), init_Overflow, init_Carry);
847
848 /* L_msuNs */
849 /* int32_t L_msuNs(int32_t acc, int16_t x, int16_t y) */
850 test_32_fn_32_16_16(FN(L_msuNs), init_Overflow, init_Carry);
851
852
853 /* negate */
854 /* int32_t negate(int32_t x) */
855 svar32_b = 1;
856 Overflow = init_Overflow;
857 Carry = init_Carry;
858 svar32_a = negate(svar32_b);
859 fprintf(ref_file, "negate(%#x) = %#x overflow %d carry %d\n", svar32_b, svar32_a, Overflow, Carry);
860
861 svar32_b = -1;
862 Overflow = init_Overflow;
863 Carry = init_Carry;
864 svar32_a = negate(svar32_b);
865 fprintf(ref_file, "negate(%#x) = %#x overflow %d carry %d\n", svar32_b, svar32_a, Overflow, Carry);
866
867 svar32_b = -32768;
868 Overflow = init_Overflow;
869 Carry = init_Carry;
870 svar32_a = negate(svar32_b);
871 fprintf(ref_file, "negate(%#x) = %#x overflow %d carry %d\n", svar32_b, svar32_a, Overflow, Carry);
872
873
874 /* mult_r */
875 /* int16_t mult_r(int16_t x, int16_t y) */
876 svar16_a = 2;
877 svar16_b = 2;
878 Overflow = init_Overflow;
879 Carry = init_Carry;
880 svar16_c = mult_r(svar16_a, svar16_b);
881 fprintf(ref_file, "mult_r(%#x, %#x) = %#x overflow %d carry %d\n", svar16_a, svar16_b, svar16_c, Overflow, Carry);
882
883 svar16_a = -1;
884 svar16_b = -1;
885 Overflow = init_Overflow;
886 Carry = init_Carry;
887 svar16_c = mult_r(svar16_a, svar16_b);
888 fprintf(ref_file, "mult_r(%#x, %#x) = %#x overflow %d carry %d\n", svar16_a, svar16_b, svar16_c, Overflow, Carry);
889
890 svar16_a = 0x8000;
891 svar16_b = 0x8000;
892 Overflow = init_Overflow;
893 Carry = init_Carry;
894 svar16_c = mult_r(svar16_a, svar16_b);
895 fprintf(ref_file, "mult_r(%#x, %#x) = %#x overflow %d carry %d\n", svar16_a, svar16_b, svar16_c, Overflow, Carry);
896
897
898 /* norm_s */
899 /* int16_t norm_s(int32_t x) */
900 svar32_a = 1;
901 Overflow = init_Overflow;
902 Carry = init_Carry;
903 svar16_a = norm_s(svar32_a);
904 fprintf(ref_file, "norm_s(%#x) = %#x overflow %d carry %d\n", svar32_a, svar16_a, Overflow, Carry);
905
906 svar32_a = -1;
907 Overflow = init_Overflow;
908 Carry = init_Carry;
909 svar16_a = norm_s(svar32_a);
910 fprintf(ref_file, "norm_s(%#x) = %#x overflow %d carry %d\n", svar32_a, svar16_a, Overflow, Carry);
911
912 svar32_a = -32768;
913 Overflow = init_Overflow;
914 Carry = init_Carry;
915 svar16_a = norm_s(svar32_a);
916 fprintf(ref_file, "norm_s(%#x) = %#x overflow %d carry %d\n", svar32_a, svar16_a, Overflow, Carry);
917
918 svar32_a = 12000;
919 Overflow = init_Overflow;
920 Carry = init_Carry;
921 svar16_a = norm_s(svar32_a);
922 fprintf(ref_file, "norm_s(%#x) = %#x overflow %d carry %d\n", svar32_a, svar16_a, Overflow, Carry);
923
924
925 /* norm_l */
926 /* int16_t norm_l(int16_t x) */
927 svar32_a = 1;
928 Overflow = init_Overflow;
929 Carry = init_Carry;
930 svar16_a = norm_l(svar32_a);
931 fprintf(ref_file, "norm_l(%#x) = %#x overflow %d carry %d\n", svar32_a, svar16_a, Overflow, Carry);
932
933 svar32_a = -1;
934 Overflow = init_Overflow;
935 Carry = init_Carry;
936 svar16_a = norm_l(svar32_a);
937 fprintf(ref_file, "norm_l(%#x) = %#x overflow %d carry %d\n", svar32_a, svar16_a, Overflow, Carry);
938
939 svar32_a = -32768;
940 Overflow = init_Overflow;
941 Carry = init_Carry;
942 svar16_a = norm_l(svar32_a);
943 fprintf(ref_file, "norm_l(%#x) = %#x overflow %d carry %d\n", svar32_a, svar16_a, Overflow, Carry);
944
945 svar32_a = 12000;
946 Overflow = init_Overflow;
947 Carry = init_Carry;
948 svar16_a = norm_l(svar32_a);
949 fprintf(ref_file, "norm_l(%#x) = %#x overflow %d carry %d\n", svar32_a, svar16_a, Overflow, Carry);
950
951 svar32_a = 0x123456;
952 Overflow = init_Overflow;
953 Carry = init_Carry;
954 svar16_a = norm_l(svar32_a);
955 fprintf(ref_file, "norm_l(%#x) = %#x overflow %d carry %d\n", svar32_a, svar16_a, Overflow, Carry);
956
957 svar32_a = 0xABCDEF;
958 Overflow = init_Overflow;
959 Carry = init_Carry;
960 svar16_a = norm_l(svar32_a);
961 fprintf(ref_file, "norm_l(%#x) = %#x overflow %d carry %d\n", svar32_a, svar16_a, Overflow, Carry);
962
963
964 /* L_shl */
965 /* int32_t L_shl(int32_t x, int16_t y) */
966 svar32_a = 1;
967 svar16_b = 1;
968 Overflow = init_Overflow;
969 Carry = init_Carry;
970 svar32_c = L_shl(svar32_a, svar16_b);
971 fprintf(ref_file, "L_shl(%#x, %d) = %#x overflow %d carry %d\n", svar32_a, svar16_b, svar32_c, Overflow, Carry);
972
973 svar32_a = 10;
974 svar16_b = 1;
975 Overflow = init_Overflow;
976 Carry = init_Carry;
977 svar32_c = L_shl(svar32_a, svar16_b);
978 fprintf(ref_file, "L_shl(%#x, %d) = %#x overflow %d carry %d\n", svar32_a, svar16_b, svar32_c, Overflow, Carry);
979
980 svar32_a = 0xFFF;
981 svar16_b = 10;
982 Overflow = init_Overflow;
983 Carry = init_Carry;
984 svar32_c = L_shl(svar32_a, svar16_b);
985 fprintf(ref_file, "L_shl(%#x, %d) = %#x overflow %d carry %d\n", svar32_a, svar16_b, svar32_c, Overflow, Carry);
986
987 svar32_a = 0xFFF;
988 svar16_b = 20;
989 Overflow = init_Overflow;
990 Carry = init_Carry;
991 svar32_c = L_shl(svar32_a, svar16_b);
992 fprintf(ref_file, "L_shl(%#x, %d) = %#x overflow %d carry %d\n", svar32_a, svar16_b, svar32_c, Overflow, Carry);
993
994 svar32_a = 0x12345678;
995 svar16_b = 2;
996 Overflow = init_Overflow;
997 Carry = init_Carry;
998 svar32_c = L_shl(svar32_a, svar16_b);
999 fprintf(ref_file, "L_shl(%#x, %d) = %#x overflow %d carry %d\n", svar32_a, svar16_b, svar32_c, Overflow, Carry);
1000
1001 svar32_a = 0x12345678;
1002 svar16_b = 40;
1003 Overflow = init_Overflow;
1004 Carry = init_Carry;
1005 svar32_c = L_shl(svar32_a, svar16_b);
1006 fprintf(ref_file, "L_shl(%#x, %d) = %#x overflow %d carry %d\n", svar32_a, svar16_b, svar32_c, Overflow, Carry);
1007
1008 svar32_a = 1;
1009 svar16_b = -1;
1010 Overflow = init_Overflow;
1011 Carry = init_Carry;
1012 svar32_c = L_shl(svar32_a, svar16_b);
1013 fprintf(ref_file, "L_shl(%#x, %d) = %#x overflow %d carry %d\n", svar32_a, svar16_b, svar32_c, Overflow, Carry);
1014
1015 svar32_a = 20;
1016 svar16_b = -1;
1017 Overflow = init_Overflow;
1018 Carry = init_Carry;
1019 svar32_c = L_shl(svar32_a, svar16_b);
1020 fprintf(ref_file, "L_shl(%#x, %d) = %#x overflow %d carry %d\n", svar32_a, svar16_b, svar32_c, Overflow, Carry);
1021
1022 svar32_a = 0xFFF;
1023 svar16_b = -10;
1024 Overflow = init_Overflow;
1025 Carry = init_Carry;
1026 svar32_c = L_shl(svar32_a, svar16_b);
1027 fprintf(ref_file, "L_shl(%#x, %d) = %#x overflow %d carry %d\n", svar32_a, svar16_b, svar32_c, Overflow, Carry);
1028
1029 svar32_a = 0xFFF;
1030 svar16_b = -64;
1031 Overflow = init_Overflow;
1032 Carry = init_Carry;
1033 svar32_c = L_shl(svar32_a, svar16_b);
1034 fprintf(ref_file, "L_shl(%#x, %d) = %#x overflow %d carry %d\n", svar32_a, svar16_b, svar32_c, Overflow, Carry);
1035
1036 svar32_a = 0x12345678;
1037 svar16_b = -10;
1038 Overflow = init_Overflow;
1039 Carry = init_Carry;
1040 svar32_c = L_shl(svar32_a, svar16_b);
1041 fprintf(ref_file, "L_shl(%#x, %d) = %#x overflow %d carry %d\n", svar32_a, svar16_b, svar32_c, Overflow, Carry);
1042
1043 svar32_a = 0x12345678;
1044 svar16_b = -64;
1045 Overflow = init_Overflow;
1046 Carry = init_Carry;
1047 svar32_c = L_shl(svar32_a, svar16_b);
1048 fprintf(ref_file, "L_shl(%#x, %d) = %#x overflow %d carry %d\n", svar32_a, svar16_b, svar32_c, Overflow, Carry);
1049
1050
1051 /* L_shr */
1052 /* int32_t L_shr(int32_t x, int16_t y) */
1053 svar32_a = 1;
1054 svar16_b = -1;
1055 Overflow = init_Overflow;
1056 Carry = init_Carry;
1057 svar32_c = L_shr(svar32_a, svar16_b);
1058 fprintf(ref_file, "L_shr(%#x, %d) = %#x overflow %d carry %d\n", svar32_a, svar16_b, svar32_c, Overflow, Carry);
1059
1060 svar32_a = 10;
1061 svar16_b = -1;
1062 Overflow = init_Overflow;
1063 Carry = init_Carry;
1064 svar32_c = L_shr(svar32_a, svar16_b);
1065 fprintf(ref_file, "L_shr(%#x, %d) = %#x overflow %d carry %d\n", svar32_a, svar16_b, svar32_c, Overflow, Carry);
1066
1067 svar32_a = 0xFFF;
1068 svar16_b = -10;
1069 Overflow = init_Overflow;
1070 Carry = init_Carry;
1071 svar32_c = L_shr(svar32_a, svar16_b);
1072 fprintf(ref_file, "L_shr(%#x, %d) = %#x overflow %d carry %d\n", svar32_a, svar16_b, svar32_c, Overflow, Carry);
1073
1074 svar32_a = 0xFFF;
1075 svar16_b = -20;
1076 Overflow = init_Overflow;
1077 Carry = init_Carry;
1078 svar32_c = L_shr(svar32_a, svar16_b);
1079 fprintf(ref_file, "L_shr(%#x, %d) = %#x overflow %d carry %d\n", svar32_a, svar16_b, svar32_c, Overflow, Carry);
1080
1081 svar32_a = 0x12345678;
1082 svar16_b = -10;
1083 Overflow = init_Overflow;
1084 Carry = init_Carry;
1085 svar32_c = L_shr(svar32_a, svar16_b);
1086 fprintf(ref_file, "L_shr(%#x, %d) = %#x overflow %d carry %d\n", svar32_a, svar16_b, svar32_c, Overflow, Carry);
1087
1088 svar32_a = 0x12345678;
1089 svar16_b = -40;
1090 Overflow = init_Overflow;
1091 Carry = init_Carry;
1092 svar32_c = L_shr(svar32_a, svar16_b);
1093 fprintf(ref_file, "L_shr(%#x, %d) = %#x overflow %d carry %d\n", svar32_a, svar16_b, svar32_c, Overflow, Carry);
1094
1095 svar32_a = 1;
1096 svar16_b = 1;
1097 Overflow = init_Overflow;
1098 Carry = init_Carry;
1099 svar32_c = L_shr(svar32_a, svar16_b);
1100 fprintf(ref_file, "L_shr(%#x, %d) = %#x overflow %d carry %d\n", svar32_a, svar16_b, svar32_c, Overflow, Carry);
1101
1102 svar32_a = 20;
1103 svar16_b = 1;
1104 Overflow = init_Overflow;
1105 Carry = init_Carry;
1106 svar32_c = L_shr(svar32_a, svar16_b);
1107 fprintf(ref_file, "L_shr(%#x, %d) = %#x overflow %d carry %d\n", svar32_a, svar16_b, svar32_c, Overflow, Carry);
1108
1109 svar32_a = 0xFFF;
1110 svar16_b = 10;
1111 Overflow = init_Overflow;
1112 Carry = init_Carry;
1113 svar32_c = L_shr(svar32_a, svar16_b);
1114 fprintf(ref_file, "L_shr(%#x, %d) = %#x overflow %d carry %d\n", svar32_a, svar16_b, svar32_c, Overflow, Carry);
1115
1116 svar32_a = 0xFFF;
1117 svar16_b = 64;
1118 Overflow = init_Overflow;
1119 Carry = init_Carry;
1120 svar32_c = L_shr(svar32_a, svar16_b);
1121 fprintf(ref_file, "L_shr(%#x, %d) = %#x overflow %d carry %d\n", svar32_a, svar16_b, svar32_c, Overflow, Carry);
1122
1123 svar32_a = 0x12345678;
1124 svar16_b = 10;
1125 Overflow = init_Overflow;
1126 Carry = init_Carry;
1127 svar32_c = L_shr(svar32_a, svar16_b);
1128 fprintf(ref_file, "L_shr(%#x, %d) = %#x overflow %d carry %d\n", svar32_a, svar16_b, svar32_c, Overflow, Carry);
1129
1130 svar32_a = 0x12345678;
1131 svar16_b = 64;
1132 Overflow = init_Overflow;
1133 Carry = init_Carry;
1134 svar32_c = L_shr(svar32_a, svar16_b);
1135 fprintf(ref_file, "L_shr(%#x, %d) = %#x overflow %d carry %d\n", svar32_a, svar16_b, svar32_c, Overflow, Carry);
1136
1137
1138 /* shr_r */
1139 /* int16_t shr_r(int16_t x, int16_t y) */
1140 svar16_a = 1;
1141 svar16_b = -1;
1142 Overflow = init_Overflow;
1143 Carry = init_Carry;
1144 svar16_c = shr_r(svar16_a, svar16_b);
1145 fprintf(ref_file, "shr_r(%#x, %d) = %#x overflow %d carry %d\n", svar16_a, svar16_b, svar16_c, Overflow, Carry);
1146
1147 svar16_a = 10;
1148 svar16_b = -1;
1149 Overflow = init_Overflow;
1150 Carry = init_Carry;
1151 svar16_c = shr_r(svar16_a, svar16_b);
1152 fprintf(ref_file, "shr_r(%#x, %d) = %#x overflow %d carry %d\n", svar16_a, svar16_b, svar16_c, Overflow, Carry);
1153
1154 svar16_a = 0xFFF;
1155 svar16_b = -10;
1156 Overflow = init_Overflow;
1157 Carry = init_Carry;
1158 svar16_c = shr_r(svar16_a, svar16_b);
1159 fprintf(ref_file, "shr_r(%#x, %d) = %#x overflow %d carry %d\n", svar16_a, svar16_b, svar16_c, Overflow, Carry);
1160
1161 svar16_a = 0xFFF;
1162 svar16_b = -20;
1163 Overflow = init_Overflow;
1164 Carry = init_Carry;
1165 svar16_c = shr_r(svar16_a, svar16_b);
1166 fprintf(ref_file, "shr_r(%#x, %d) = %#x overflow %d carry %d\n", svar16_a, svar16_b, svar16_c, Overflow, Carry);
1167
1168 svar16_a = 1;
1169 svar16_b = 1;
1170 Overflow = init_Overflow;
1171 Carry = init_Carry;
1172 svar16_c = shr_r(svar16_a, svar16_b);
1173 fprintf(ref_file, "shr_r(%#x, %d) = %#x overflow %d carry %d\n", svar16_a, svar16_b, svar16_c, Overflow, Carry);
1174
1175 svar16_a = 20;
1176 svar16_b = 1;
1177 Overflow = init_Overflow;
1178 Carry = init_Carry;
1179 svar16_c = shr_r(svar16_a, svar16_b);
1180 fprintf(ref_file, "shr_r(%#x, %d) = %#x overflow %d carry %d\n", svar16_a, svar16_b, svar16_c, Overflow, Carry);
1181
1182 svar16_a = 0xFFF;
1183 svar16_b = 10;
1184 Overflow = init_Overflow;
1185 Carry = init_Carry;
1186 svar16_c = shr_r(svar16_a, svar16_b);
1187 fprintf(ref_file, "shr_r(%#x, %d) = %#x overflow %d carry %d\n", svar16_a, svar16_b, svar16_c, Overflow, Carry);
1188
1189 svar16_a = 0xFFF;
1190 svar16_b = 64;
1191 Overflow = init_Overflow;
1192 Carry = init_Carry;
1193 svar16_c = shr_r(svar16_a, svar16_b);
1194 fprintf(ref_file, "shr_r(%#x, %d) = %#x overflow %d carry %d\n", svar16_a, svar16_b, svar16_c, Overflow, Carry);
1195
1196
1197 /* mac_r */
1198 /* int16_t mac_r(int32_t acc, int16_t x, int16_t y) */
1199 svar16_a = 2;
1200 svar16_b = 2;
1201 svar32_a = 0x1234;
1202 Overflow = init_Overflow;
1203 Carry = init_Carry;
1204 svar16_c = mac_r(svar32_a, svar16_a, svar16_b);
1205 fprintf(ref_file, "mac_r(%#x, %#x, %#x) = %#x overflow %d carry %d\n", svar32_a, svar16_a, svar16_b, svar16_c, Overflow, Carry);
1206
1207 svar16_a = -1;
1208 svar16_b = -1;
1209 Overflow = init_Overflow;
1210 Carry = init_Carry;
1211 svar16_c = mac_r(svar32_a, svar16_a, svar16_b);
1212 fprintf(ref_file, "mac_r(%#x, %#x, %#x) = %#x overflow %d carry %d\n", svar32_a, svar16_a, svar16_b, svar16_c, Overflow, Carry);
1213
1214 svar16_a = 0x8000;
1215 svar16_b = 0x8000;
1216 Overflow = init_Overflow;
1217 Carry = init_Carry;
1218 svar16_c = mac_r(svar32_a, svar16_a, svar16_b);
1219 fprintf(ref_file, "mac_r(%#x, %#x, %#x) = %#x overflow %d carry %d\n", svar32_a, svar16_a, svar16_b, svar16_c, Overflow, Carry);
1220
1221 svar16_a = 0x8000;
1222 svar16_b = 0x8000;
1223 Overflow = init_Overflow;
1224 Carry = init_Carry;
1225 svar32_a = -1;
1226 svar16_c = mac_r(svar32_a, svar16_a, svar16_b);
1227 fprintf(ref_file, "mac_r(%#x, %#x, %#x) = %#x overflow %d carry %d\n", svar32_a, svar16_a, svar16_b, svar16_c, Overflow, Carry);
1228
1229 svar16_a = 0x244;
1230 svar16_b = 0x522;
1231 svar32_a = 0x123456;
1232 Overflow = init_Overflow;
1233 Carry = init_Carry;
1234 svar16_c = mac_r(svar32_a, svar16_a, svar16_b);
1235 fprintf(ref_file, "mac_r(%#x, %#x, %#x) = %#x overflow %d carry %d\n", svar32_a, svar16_a, svar16_b, svar16_c, Overflow, Carry);
1236
1237
1238 /* msu_r */
1239 /* int32_t msu_r(int32_t acc, int16_t x, int16_t y) */
1240 svar16_a = 2;
1241 svar16_b = 2;
1242 svar32_a = 0x1234;
1243 Overflow = init_Overflow;
1244 Carry = init_Carry;
1245 svar16_c = msu_r(svar32_a, svar16_a, svar16_b);
1246 fprintf(ref_file, "msu_r(%#x, %#x, %#x) = %#x overflow %d carry %d\n", svar32_a, svar16_a, svar16_b, svar16_c, Overflow, Carry);
1247
1248 svar16_a = -1;
1249 svar16_b = -1;
1250 Overflow = init_Overflow;
1251 Carry = init_Carry;
1252 svar16_c = msu_r(svar32_a, svar16_a, svar16_b);
1253 fprintf(ref_file, "msu_r(%#x, %#x, %#x) = %#x overflow %d carry %d\n", svar32_a, svar16_a, svar16_b, svar16_c, Overflow, Carry);
1254
1255 svar16_a = 0x8000;
1256 svar16_b = 0x8000;
1257 Overflow = init_Overflow;
1258 Carry = init_Carry;
1259 svar16_c = msu_r(svar32_a, svar16_a, svar16_b);
1260 fprintf(ref_file, "msu_r(%#x, %#x, %#x) = %#x overflow %d carry %d\n", svar32_a, svar16_a, svar16_b, svar16_c, Overflow, Carry);
1261
1262 svar16_a = 0x8000;
1263 svar16_b = 0x8000;
1264 svar32_a = 1;
1265 Overflow = init_Overflow;
1266 Carry = init_Carry;
1267 svar16_c = msu_r(svar32_a, svar16_a, svar16_b);
1268 fprintf(ref_file, "msu_r(%#x, %#x, %#x) = %#x overflow %d carry %d\n", svar32_a, svar16_a, svar16_b, svar16_c, Overflow, Carry);
1269
1270 svar16_a = 0x321;
1271 svar16_b = 0x243;
1272 svar32_a = 0x123456;
1273 Overflow = init_Overflow;
1274 Carry = init_Carry;
1275 svar16_c = msu_r(svar32_a, svar16_a, svar16_b);
1276 fprintf(ref_file, "msu_r(%#x, %#x, %#x) = %#x overflow %d carry %d\n", svar32_a, svar16_a, svar16_b, svar16_c, Overflow, Carry);
1277
1278
1279 /* L_deposit_h */
1280 /* int32_t L_deposit_h(int16_t x) */
1281 svar16_b = 1;
1282 Overflow = init_Overflow;
1283 Carry = init_Carry;
1284 svar32_a = L_deposit_h(svar16_b);
1285 fprintf(ref_file, "L_deposit_h(%#x) = %#x overflow %d carry %d\n", svar16_b, svar32_a, Overflow, Carry);
1286
1287 svar16_b = -1;
1288 Overflow = init_Overflow;
1289 Carry = init_Carry;
1290 svar32_a = L_deposit_h(svar16_b);
1291 fprintf(ref_file, "L_deposit_h(%#x) = %#x overflow %d carry %d\n", svar16_b, svar32_a, Overflow, Carry);
1292
1293 svar16_b = -32768;
1294 Overflow = init_Overflow;
1295 Carry = init_Carry;
1296 svar32_a = L_deposit_h(svar16_b);
1297 fprintf(ref_file, "L_deposit_h(%#x) = %#x overflow %d carry %d\n", svar16_b, svar32_a, Overflow, Carry);
1298
1299 svar16_b = 0x1234;
1300 Overflow = init_Overflow;
1301 Carry = init_Carry;
1302 svar32_a = L_deposit_h(svar16_b);
1303 fprintf(ref_file, "L_deposit_h(%#x) = %#x overflow %d carry %d\n", svar16_b, svar32_a, Overflow, Carry);
1304
1305
1306 /* L_deposit_l */
1307 /* int32_t L_deposit_l(int16_t x) */
1308 svar16_b = 1;
1309 Overflow = init_Overflow;
1310 Carry = init_Carry;
1311 svar32_a = L_deposit_l(svar16_b);
1312 fprintf(ref_file, "L_deposit_l(%#x) = %#x overflow %d carry %d\n", svar16_b, svar32_a, Overflow, Carry);
1313
1314 svar16_b = -1;
1315 Overflow = init_Overflow;
1316 Carry = init_Carry;
1317 svar32_a = L_deposit_l(svar16_b);
1318 fprintf(ref_file, "L_deposit_l(%#x) = %#x overflow %d carry %d\n", svar16_b, svar32_a, Overflow, Carry);
1319
1320 svar16_b = -32768;
1321 Overflow = init_Overflow;
1322 Carry = init_Carry;
1323 svar32_a = L_deposit_l(svar16_b);
1324 fprintf(ref_file, "L_deposit_l(%#x) = %#x overflow %d carry %d\n", svar16_b, svar32_a, Overflow, Carry);
1325
1326 svar16_b = 0x1234;
1327 Overflow = init_Overflow;
1328 Carry = init_Carry;
1329 svar32_a = L_deposit_l(svar16_b);
1330 fprintf(ref_file, "L_deposit_l(%#x) = %#x overflow %d carry %d\n", svar16_b, svar32_a, Overflow, Carry);
1331
1332
1333 /* L_shr_r */
1334 /* int32_t L_shr_r(int32_t x, int16_t y) */
1335 svar32_a = 1;
1336 svar16_b = -1;
1337 Overflow = init_Overflow;
1338 Carry = init_Carry;
1339 svar32_c = L_shr_r(svar32_a, svar16_b);
1340 fprintf(ref_file, "L_shr_r(%#x, %d) = %#x overflow %d carry %d\n", svar32_a, svar16_b, svar32_c, Overflow, Carry);
1341
1342 svar32_a = 10;
1343 svar16_b = -1;
1344 Overflow = init_Overflow;
1345 Carry = init_Carry;
1346 svar32_c = L_shr_r(svar32_a, svar16_b);
1347 fprintf(ref_file, "L_shr_r(%#x, %d) = %#x overflow %d carry %d\n", svar32_a, svar16_b, svar32_c, Overflow, Carry);
1348
1349 svar32_a = 0xFFF;
1350 svar16_b = -10;
1351 Overflow = init_Overflow;
1352 Carry = init_Carry;
1353 svar32_c = L_shr_r(svar32_a, svar16_b);
1354 fprintf(ref_file, "L_shr_r(%#x, %d) = %#x overflow %d carry %d\n", svar32_a, svar16_b, svar32_c, Overflow, Carry);
1355
1356 svar32_a = 0xFFF;
1357 svar16_b = -20;
1358 Overflow = init_Overflow;
1359 Carry = init_Carry;
1360 svar32_c = L_shr_r(svar32_a, svar16_b);
1361 fprintf(ref_file, "L_shr_r(%#x, %d) = %#x overflow %d carry %d\n", svar32_a, svar16_b, svar32_c, Overflow, Carry);
1362
1363 svar32_a = 0x12345678;
1364 svar16_b = -10;
1365 Overflow = init_Overflow;
1366 Carry = init_Carry;
1367 svar32_c = L_shr_r(svar32_a, svar16_b);
1368 fprintf(ref_file, "L_shr_r(%#x, %d) = %#x overflow %d carry %d\n", svar32_a, svar16_b, svar32_c, Overflow, Carry);
1369
1370 svar32_a = 0x12345678;
1371 svar16_b = -40;
1372 Overflow = init_Overflow;
1373 Carry = init_Carry;
1374 svar32_c = L_shr_r(svar32_a, svar16_b);
1375 fprintf(ref_file, "L_shr_r(%#x, %d) = %#x overflow %d carry %d\n", svar32_a, svar16_b, svar32_c, Overflow, Carry);
1376
1377 svar32_a = 1;
1378 svar16_b = 1;
1379 Overflow = init_Overflow;
1380 Carry = init_Carry;
1381 svar32_c = L_shr_r(svar32_a, svar16_b);
1382 fprintf(ref_file, "L_shr_r(%#x, %d) = %#x overflow %d carry %d\n", svar32_a, svar16_b, svar32_c, Overflow, Carry);
1383
1384 svar32_a = 20;
1385 svar16_b = 1;
1386 Overflow = init_Overflow;
1387 Carry = init_Carry;
1388 svar32_c = L_shr_r(svar32_a, svar16_b);
1389 fprintf(ref_file, "L_shr_r(%#x, %d) = %#x overflow %d carry %d\n", svar32_a, svar16_b, svar32_c, Overflow, Carry);
1390
1391 svar32_a = 0xFFF;
1392 svar16_b = 10;
1393 Overflow = init_Overflow;
1394 Carry = init_Carry;
1395 svar32_c = L_shr_r(svar32_a, svar16_b);
1396 fprintf(ref_file, "L_shr_r(%#x, %d) = %#x overflow %d carry %d\n", svar32_a, svar16_b, svar32_c, Overflow, Carry);
1397
1398 svar32_a = 0xFFF;
1399 svar16_b = 64;
1400 Overflow = init_Overflow;
1401 Carry = init_Carry;
1402 svar32_c = L_shr_r(svar32_a, svar16_b);
1403 fprintf(ref_file, "L_shr_r(%#x, %d) = %#x overflow %d carry %d\n", svar32_a, svar16_b, svar32_c, Overflow, Carry);
1404
1405 svar32_a = 0x12345678;
1406 svar16_b = 10;
1407 Overflow = init_Overflow;
1408 Carry = init_Carry;
1409 svar32_c = L_shr_r(svar32_a, svar16_b);
1410 fprintf(ref_file, "L_shr_r(%#x, %d) = %#x overflow %d carry %d\n", svar32_a, svar16_b, svar32_c, Overflow, Carry);
1411
1412 svar32_a = 0x12345678;
1413 svar16_b = 64;
1414 Overflow = init_Overflow;
1415 Carry = init_Carry;
1416 svar32_c = L_shr_r(svar32_a, svar16_b);
1417 fprintf(ref_file, "L_shr_r(%#x, %d) = %#x overflow %d carry %d\n", svar32_a, svar16_b, svar32_c, Overflow, Carry);
1418
1419
1420 /* L_abs */
1421 /* int32_t L_abs(int32_t x) */
1422 svar32_b = 1;
1423 Overflow = init_Overflow;
1424 Carry = init_Carry;
1425 svar32_a = L_abs(svar32_b);
1426 fprintf(ref_file, "L_abs(%#x) = %#x overflow %d carry %d\n", svar32_b, svar32_a, Overflow, Carry);
1427
1428 svar32_b = -1;
1429 Overflow = init_Overflow;
1430 Carry = init_Carry;
1431 svar32_a = L_abs(svar32_b);
1432 fprintf(ref_file, "L_abs(%#x) = %#x overflow %d carry %d\n", svar32_b, svar32_a, Overflow, Carry);
1433
1434 svar32_b = 0x80000000;
1435 Overflow = init_Overflow;
1436 Carry = init_Carry;
1437 svar32_a = L_abs(svar32_b);
1438 fprintf(ref_file, "L_abs(%#x) = %#x overflow %d carry %d\n", svar32_b, svar32_a, Overflow, Carry);
1439
1440
1441 /* L_sat */
1442 /* int32_t L_sat(int32_t x) */
1443 svar32_b = 1;
1444 Overflow = init_Overflow;
1445 Carry = init_Carry;
1446 svar32_a = L_sat(svar32_b);
1447 fprintf(ref_file, "L_sat(%#x) = %#x overflow %d carry %d\n", svar32_b, svar32_a, Overflow, Carry);
1448
1449 svar32_b = -1;
1450 Overflow = init_Overflow;
1451 Carry = init_Carry;
1452 svar32_a = L_sat(svar32_b);
1453 fprintf(ref_file, "L_sat(%#x) = %#x overflow %d carry %d\n", svar32_b, svar32_a, Overflow, Carry);
1454
1455 svar32_b = -32768;
1456 Overflow = init_Overflow;
1457 Carry = init_Carry;
1458 svar32_a = L_sat(svar32_b);
1459 fprintf(ref_file, "L_sat(%#x) = %#x overflow %d carry %d\n", svar32_b, svar32_a, Overflow, Carry);
1460
1461 svar32_b = 32768;
1462 Overflow = init_Overflow;
1463 Carry = init_Carry;
1464 svar32_a = L_sat(svar32_b);
1465 fprintf(ref_file, "L_sat(%#x) = %#x overflow %d carry %d\n", svar32_b, svar32_a, Overflow, Carry);
1466
1467
1468 /* div_s */
1469 /* int16_t div_s(int16_t x, int16_t y) */
1470 svar16_a = 1;
1471 svar16_b = 1;
1472 Overflow = init_Overflow;
1473 Carry = init_Carry;
1474 svar16_c = div_s(svar16_a, svar16_b);
1475 fprintf(ref_file, "div_s(%#x, %#x) = %#x overflow %d carry %d\n", svar16_a, svar16_b, svar16_c, Overflow, Carry);
1476
1477 svar16_a = 10000;
1478 svar16_b = 20000;
1479 Overflow = init_Overflow;
1480 Carry = init_Carry;
1481 svar16_c = div_s(svar16_a, svar16_b);
1482 fprintf(ref_file, "div_s(%#x, %#x) = %#x overflow %d carry %d\n", svar16_a, svar16_b, svar16_c, Overflow, Carry);
1483
1484
1485 svar16_a = 10000;
1486 svar16_b = 20000;
1487 Overflow = init_Overflow;
1488 Carry = init_Carry;
1489 svar16_c = div_s(svar16_a, svar16_b);
1490 fprintf(ref_file, "div_s(%#x, %#x) = %#x overflow %d carry %d\n", svar16_a, svar16_b, svar16_c, Overflow, Carry);
1491
1492 }
1493
exec_dspfns(void)1494 void exec_dspfns(void)
1495 {
1496 Overflow = 0;
1497
1498 exec_dspfns1(0, 0);
1499 exec_dspfns1(0, 1);
1500 exec_dspfns1(1, 0);
1501 exec_dspfns1(1, 1);
1502 }
1503