1/*
2
3Copyright (c) 2009, 2010, 2011 STMicroelectronics
4Written by Christophe Lyon
5
6Permission is hereby granted, free of charge, to any person obtaining a copy
7of this software and associated documentation files (the "Software"), to deal
8in the Software without restriction, including without limitation the rights
9to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10copies of the Software, and to permit persons to whom the Software is
11furnished to do so, subject to the following conditions:
12
13The above copyright notice and this permission notice shall be included in
14all copies or substantial portions of the Software.
15
16THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22THE 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
44extern FILE* ref_file;
45
46#define __xSTR(X) #X
47#define __STR(X) __xSTR(X)
48
49#define FN(X) X, __STR(X)
50
51typedef int32_t func32_32_32_ptr(int32_t, int32_t);
52typedef int16_t func16_32_ptr(int32_t);
53typedef int32_t func32_32_16_16_ptr(int32_t, int16_t, int16_t);
54
55void 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
100void 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
173void 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
217void 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
1494void 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