source: soft/giet_vm/applications/rosenfeld/nrc2/src/nrio1.c

Last change on this file was 822, checked in by meunier, 8 years ago

In rosenfeld:

  • Updated nrio0, nrio1, nrio2, nrio1f, nrio2f, nrio1x, nrbool1, nrbool2 and nralloc1 in the nrc2 lib in order to use macro-typed functions
  • Updated the simulation script to include performance evaluation with random images, and a script to generate graphs
  • Updated the clock.h to use 64-bit integers, which potentially breaks the printing on the giet
File size: 6.8 KB
Line 
1/* --------------- */
2/* --- nrio1.c --- */
3/* --------------- */
4
5/*
6 * Copyright (c) 2000-2014, Lionel Lacassagne, All rights reserved
7 * Univ Paris Sud XI, CNRS
8 *
9 * Distributed under the Boost Software License, Version 1.0
10 * see accompanying file LICENSE.txt or copy it at
11 * http://www.boost.org/LICENSE_1_0.txt
12 */
13
14#include <stdio.h>
15#include <stddef.h>
16#include <stdlib.h>
17
18#include "nrc_os_config.h"
19#include "mypredef.h"
20#include "nrtype.h"
21#include "nrdef.h"
22#include "nrmacro.h"
23#include "nrkernel.h"
24
25#include "nralloc1.h"
26#include "nrio0.h"
27#include "nrio1.h"
28
29/*
30 * ----------------------
31 * --- display_vector ---
32 * ----------------------
33 */
34
35#undef display_type_vector
36#define display_type_vector(t) \
37void short_name(t,display_,vector)(t * v, int32_t nl, int32_t nh, char * format, char * name) \
38{                                        \
39    if (name != NULL) {                  \
40        printf("%s", name);              \
41    }                                    \
42    for (int32_t i = nl; i <= nh; i++) { \
43        printf(format, v[i]);            \
44    }                                    \
45    printf("\n");                        \
46}
47
48display_type_vector(int8_t);
49display_type_vector(uint8_t);
50display_type_vector(int16_t);
51display_type_vector(uint16_t);
52display_type_vector(int32_t);
53display_type_vector(uint32_t);
54display_type_vector(int64_t);
55display_type_vector(uint64_t);
56display_type_vector(float);
57display_type_vector(double);
58display_type_vector(rgb8);
59display_type_vector(rgbx8);
60
61
62/*
63 * -----------------------------
64 * --- display_vector_number ---
65 * -----------------------------
66 */
67
68#undef display_type_vector_number
69#define display_type_vector_number(t) \
70void short_name(t,display_,vector_number)(t * v, int32_t nl, int32_t nh, char * format, char * name) \
71{                                        \
72    if (name != NULL) {                  \
73        printf("%s\n", name);            \
74    }                                    \
75    for (int32_t i = nl; i <= nh; i++) { \
76        printf(format, i);               \
77    }                                    \
78    printf("\n");                        \
79    for (int32_t i = nl; i <= nh; i++) { \
80        printf(format, v[i]);            \
81    }                                    \
82    printf("\n");                        \
83}
84
85
86display_type_vector_number(int8_t);
87display_type_vector_number(uint8_t);
88display_type_vector_number(int16_t);
89display_type_vector_number(uint16_t);
90display_type_vector_number(int32_t);
91display_type_vector_number(uint32_t);
92display_type_vector_number(int64_t);
93display_type_vector_number(uint64_t);
94display_type_vector_number(float);
95display_type_vector_number(double);
96display_type_vector_number(rgb8);
97display_type_vector_number(rgbx8);
98
99
100/*
101 * ------------------------
102 * --- display_vector_T ---
103 * ------------------------
104 */
105
106
107#undef display_type_vector_T
108#define display_type_vector_T(t) \
109void short_name(t,display_,vector_T)(t * v, int32_t i0, int32_t i1, char * format, char * name) \
110{                                        \
111    if (name != NULL) {                  \
112        printf("%s", name);              \
113    }                                    \
114    for (int32_t i = i0; i <= i1; i++) { \
115        printf(format, v[i]);            \
116        printf("\n");                    \
117    }                                    \
118    printf("\n");                        \
119}
120
121display_type_vector_T(int8_t);
122display_type_vector_T(uint8_t);
123display_type_vector_T(int16_t);
124display_type_vector_T(uint16_t);
125display_type_vector_T(int32_t);
126display_type_vector_T(uint32_t);
127display_type_vector_T(int64_t);
128display_type_vector_T(uint64_t);
129display_type_vector_T(float);
130display_type_vector_T(double);
131display_type_vector_T(rgb8);
132display_type_vector_T(rgbx8);
133
134
135/*
136 * -------------------------------
137 * --- display_vector_number_T ---
138 * -------------------------------
139 */
140
141
142#undef display_type_vector_number_T
143#define display_type_vector_number_T(t) \
144void short_name(t,display_,vector_number_T)(t * v, int32_t i0, int32_t i1, char * format, char * name) \
145{                                        \
146    if (name != NULL) {                  \
147        printf("%s", name);              \
148    }                                    \
149    for (int32_t i = i0; i <= i1; i++) { \
150        printf("%8d ", i);               \
151        printf(format, v[i]);            \
152        printf("\n");                    \
153    }                                    \
154    printf("\n");                        \
155}
156
157display_type_vector_number_T(int8_t);
158display_type_vector_number_T(uint8_t);
159display_type_vector_number_T(int16_t);
160display_type_vector_number_T(uint16_t);
161display_type_vector_number_T(int32_t);
162display_type_vector_number_T(uint32_t);
163display_type_vector_number_T(int64_t);
164display_type_vector_number_T(uint64_t);
165display_type_vector_number_T(float);
166display_type_vector_number_T(double);
167display_type_vector_number_T(rgb8);
168display_type_vector_number_T(rgbx8);
169
170
171/*
172 * -------------------------------
173 * --- display_vector_positive ---
174 * -------------------------------
175 */
176
177#undef display_type_vector_positive
178#define display_type_vector_positive(t) \
179void short_name(t,display_,vector_positive)(t * v, int32_t j0, int32_t j1, int32_t iformat, char * name) \
180{                                                               \
181    char * format;                                              \
182    char * str;                                                 \
183    select_display_positive_parameters(iformat, &format, &str); \
184    if (name != NULL) {                                         \
185        printf(name);                                           \
186    }                                                           \
187    for (int32_t j = j0; j <= j1; j++) {                        \
188        if (v[j] != 0) {                                        \
189            printf(format, v[j]);                               \
190        }                                                       \
191        else {                                                  \
192            printf("%s", str);                                  \
193        }                                                       \
194    }                                                           \
195    printf("\n");                                               \
196}
197
198
199display_type_vector_positive(int8_t);
200display_type_vector_positive(uint8_t);
201display_type_vector_positive(int16_t);
202display_type_vector_positive(uint16_t);
203display_type_vector_positive(int32_t);
204display_type_vector_positive(uint32_t);
205display_type_vector_positive(int64_t);
206display_type_vector_positive(uint64_t);
207display_type_vector_positive(float);
208display_type_vector_positive(double);
209
210// Local Variables:
211// tab-width: 4
212// c-basic-offset: 4
213// c-file-offsets:((innamespace . 0)(inline-open . 0))
214// indent-tabs-mode: nil
215// End:
216
217// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=4:softtabstop=4
218
Note: See TracBrowser for help on using the repository browser.