GCC Code Coverage Report


Directory: ./
File: build/lib/volk_16ic_s32f_deinterleave_32f_x2_a_orc_impl.c
Date: 2023-10-23 23:10:04
Exec Total Coverage
Lines: 23 50 46.0%
Functions: 1 2 50.0%
Branches: 2 18 11.1%

Line Branch Exec Source
1
2 /* autogenerated from volk_16ic_s32f_deinterleave_32f_x2_a_orc_impl.orc */
3
4 #ifdef HAVE_CONFIG_H
5 #include "config.h"
6 #endif
7 #include <math.h>
8
9 #ifndef _ORC_INTEGER_TYPEDEFS_
10 #define _ORC_INTEGER_TYPEDEFS_
11 #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
12 #include <stdint.h>
13 typedef int8_t orc_int8;
14 typedef int16_t orc_int16;
15 typedef int32_t orc_int32;
16 typedef int64_t orc_int64;
17 typedef uint8_t orc_uint8;
18 typedef uint16_t orc_uint16;
19 typedef uint32_t orc_uint32;
20 typedef uint64_t orc_uint64;
21 #define ORC_UINT64_C(x) UINT64_C(x)
22 #elif defined(_MSC_VER)
23 typedef signed __int8 orc_int8;
24 typedef signed __int16 orc_int16;
25 typedef signed __int32 orc_int32;
26 typedef signed __int64 orc_int64;
27 typedef unsigned __int8 orc_uint8;
28 typedef unsigned __int16 orc_uint16;
29 typedef unsigned __int32 orc_uint32;
30 typedef unsigned __int64 orc_uint64;
31 #define ORC_UINT64_C(x) (x##Ui64)
32 #define inline __inline
33 #else
34 #include <limits.h>
35 typedef signed char orc_int8;
36 typedef short orc_int16;
37 typedef int orc_int32;
38 typedef unsigned char orc_uint8;
39 typedef unsigned short orc_uint16;
40 typedef unsigned int orc_uint32;
41 #if INT_MAX == LONG_MAX
42 typedef long long orc_int64;
43 typedef unsigned long long orc_uint64;
44 #define ORC_UINT64_C(x) (x##ULL)
45 #else
46 typedef long orc_int64;
47 typedef unsigned long orc_uint64;
48 #define ORC_UINT64_C(x) (x##UL)
49 #endif
50 #endif
51 typedef union { orc_int16 i; orc_int8 x2[2]; } orc_union16;
52 typedef union { orc_int32 i; float f; orc_int16 x2[2]; orc_int8 x4[4]; } orc_union32;
53 typedef union { orc_int64 i; double f; orc_int32 x2[2]; float x2f[2]; orc_int16 x4[4]; } orc_union64;
54 #endif
55 #ifndef ORC_RESTRICT
56 #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
57 #define ORC_RESTRICT restrict
58 #elif defined(__GNUC__) && __GNUC__ >= 4
59 #define ORC_RESTRICT __restrict__
60 #elif defined(_MSC_VER)
61 #define ORC_RESTRICT __restrict
62 #else
63 #define ORC_RESTRICT
64 #endif
65 #endif
66
67 #ifndef ORC_INTERNAL
68 #if defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590)
69 #define ORC_INTERNAL __attribute__((visibility("hidden")))
70 #elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x550)
71 #define ORC_INTERNAL __hidden
72 #elif defined (__GNUC__)
73 #define ORC_INTERNAL __attribute__((visibility("hidden")))
74 #else
75 #define ORC_INTERNAL
76 #endif
77 #endif
78
79
80 #ifndef DISABLE_ORC
81 #include <orc/orc.h>
82 #endif
83 void volk_16ic_s32f_deinterleave_32f_x2_a_orc_impl (orc_uint32 * ORC_RESTRICT d1, orc_uint32 * ORC_RESTRICT d2, const orc_uint32 * ORC_RESTRICT s1, float p1, int n);
84
85
86 /* begin Orc C target preamble */
87 #define ORC_CLAMP(x,a,b) ((x)<(a) ? (a) : ((x)>(b) ? (b) : (x)))
88 #define ORC_ABS(a) ((a)<0 ? -(a) : (a))
89 #define ORC_MIN(a,b) ((a)<(b) ? (a) : (b))
90 #define ORC_MAX(a,b) ((a)>(b) ? (a) : (b))
91 #define ORC_SB_MAX 127
92 #define ORC_SB_MIN (-1-ORC_SB_MAX)
93 #define ORC_UB_MAX (orc_uint8) 255
94 #define ORC_UB_MIN 0
95 #define ORC_SW_MAX 32767
96 #define ORC_SW_MIN (-1-ORC_SW_MAX)
97 #define ORC_UW_MAX (orc_uint16)65535
98 #define ORC_UW_MIN 0
99 #define ORC_SL_MAX 2147483647
100 #define ORC_SL_MIN (-1-ORC_SL_MAX)
101 #define ORC_UL_MAX 4294967295U
102 #define ORC_UL_MIN 0
103 #define ORC_CLAMP_SB(x) ORC_CLAMP(x,ORC_SB_MIN,ORC_SB_MAX)
104 #define ORC_CLAMP_UB(x) ORC_CLAMP(x,ORC_UB_MIN,ORC_UB_MAX)
105 #define ORC_CLAMP_SW(x) ORC_CLAMP(x,ORC_SW_MIN,ORC_SW_MAX)
106 #define ORC_CLAMP_UW(x) ORC_CLAMP(x,ORC_UW_MIN,ORC_UW_MAX)
107 #define ORC_CLAMP_SL(x) ORC_CLAMP(x,ORC_SL_MIN,ORC_SL_MAX)
108 #define ORC_CLAMP_UL(x) ORC_CLAMP(x,ORC_UL_MIN,ORC_UL_MAX)
109 #define ORC_SWAP_W(x) ((((x)&0xffU)<<8) | (((x)&0xff00U)>>8))
110 #define ORC_SWAP_L(x) ((((x)&0xffU)<<24) | (((x)&0xff00U)<<8) | (((x)&0xff0000U)>>8) | (((x)&0xff000000U)>>24))
111 #define ORC_SWAP_Q(x) ((((x)&ORC_UINT64_C(0xff))<<56) | (((x)&ORC_UINT64_C(0xff00))<<40) | (((x)&ORC_UINT64_C(0xff0000))<<24) | (((x)&ORC_UINT64_C(0xff000000))<<8) | (((x)&ORC_UINT64_C(0xff00000000))>>8) | (((x)&ORC_UINT64_C(0xff0000000000))>>24) | (((x)&ORC_UINT64_C(0xff000000000000))>>40) | (((x)&ORC_UINT64_C(0xff00000000000000))>>56))
112 #define ORC_PTR_OFFSET(ptr,offset) ((void *)(((unsigned char *)(ptr)) + (offset)))
113 #define ORC_DENORMAL(x) ((x) & ((((x)&0x7f800000) == 0) ? 0xff800000 : 0xffffffff))
114 #define ORC_ISNAN(x) ((((x)&0x7f800000) == 0x7f800000) && (((x)&0x007fffff) != 0))
115 #define ORC_DENORMAL_DOUBLE(x) ((x) & ((((x)&ORC_UINT64_C(0x7ff0000000000000)) == 0) ? ORC_UINT64_C(0xfff0000000000000) : ORC_UINT64_C(0xffffffffffffffff)))
116 #define ORC_ISNAN_DOUBLE(x) ((((x)&ORC_UINT64_C(0x7ff0000000000000)) == ORC_UINT64_C(0x7ff0000000000000)) && (((x)&ORC_UINT64_C(0x000fffffffffffff)) != 0))
117 #ifndef ORC_RESTRICT
118 #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
119 #define ORC_RESTRICT restrict
120 #elif defined(__GNUC__) && __GNUC__ >= 4
121 #define ORC_RESTRICT __restrict__
122 #else
123 #define ORC_RESTRICT
124 #endif
125 #endif
126 /* end Orc C target preamble */
127
128
129
130 /* volk_16ic_s32f_deinterleave_32f_x2_a_orc_impl */
131 #ifdef DISABLE_ORC
132 void
133 volk_16ic_s32f_deinterleave_32f_x2_a_orc_impl (orc_uint32 * ORC_RESTRICT d1, orc_uint32 * ORC_RESTRICT d2, const orc_uint32 * ORC_RESTRICT s1, float p1, int n){
134 int i;
135 orc_union32 * ORC_RESTRICT ptr0;
136 orc_union32 * ORC_RESTRICT ptr1;
137 const orc_union32 * ORC_RESTRICT ptr4;
138 orc_union32 var34;
139 orc_union64 var35;
140 orc_union32 var36;
141 orc_union32 var37;
142 orc_union64 var38;
143 orc_union64 var39;
144 orc_union64 var40;
145
146 ptr0 = (orc_union32 *)d1;
147 ptr1 = (orc_union32 *)d2;
148 ptr4 = (orc_union32 *)s1;
149
150 /* 3: loadpl */
151 var35.x2f[0] = p1;
152 var35.x2f[1] = p1;
153
154 for (i = 0; i < n; i++) {
155 /* 0: loadl */
156 var34 = ptr4[i];
157 /* 1: convswl */
158 var38.x2[0] = var34.x2[0];
159 var38.x2[1] = var34.x2[1];
160 /* 2: convlf */
161 var39.x2f[0] = var38.x2[0];
162 var39.x2f[1] = var38.x2[1];
163 /* 4: divf */
164 {
165 orc_union32 _src1;
166 orc_union32 _src2;
167 orc_union32 _dest1;
168 _src1.i = ORC_DENORMAL(var39.x2[0]);
169 _src2.i = ORC_DENORMAL(var35.x2[0]);
170 _dest1.f = _src1.f / _src2.f;
171 var40.x2[0] = ORC_DENORMAL(_dest1.i);
172 }
173 {
174 orc_union32 _src1;
175 orc_union32 _src2;
176 orc_union32 _dest1;
177 _src1.i = ORC_DENORMAL(var39.x2[1]);
178 _src2.i = ORC_DENORMAL(var35.x2[1]);
179 _dest1.f = _src1.f / _src2.f;
180 var40.x2[1] = ORC_DENORMAL(_dest1.i);
181 }
182 /* 5: splitql */
183 {
184 orc_union64 _src;
185 _src.i = var40.i;
186 var36.i = _src.x2[1];
187 var37.i = _src.x2[0];
188 }
189 /* 6: storel */
190 ptr1[i] = var36;
191 /* 7: storel */
192 ptr0[i] = var37;
193 }
194
195 }
196
197 #else
198 static void
199 _backup_volk_16ic_s32f_deinterleave_32f_x2_a_orc_impl (OrcExecutor * ORC_RESTRICT ex)
200 {
201 int i;
202 int n = ex->n;
203 orc_union32 * ORC_RESTRICT ptr0;
204 orc_union32 * ORC_RESTRICT ptr1;
205 const orc_union32 * ORC_RESTRICT ptr4;
206 orc_union32 var34;
207 orc_union64 var35;
208 orc_union32 var36;
209 orc_union32 var37;
210 orc_union64 var38;
211 orc_union64 var39;
212 orc_union64 var40;
213
214 ptr0 = (orc_union32 *)ex->arrays[0];
215 ptr1 = (orc_union32 *)ex->arrays[1];
216 ptr4 = (orc_union32 *)ex->arrays[4];
217
218 /* 3: loadpl */
219 var35.x2[0] = ex->params[24];
220 var35.x2[1] = ex->params[24];
221
222 for (i = 0; i < n; i++) {
223 /* 0: loadl */
224 var34 = ptr4[i];
225 /* 1: convswl */
226 var38.x2[0] = var34.x2[0];
227 var38.x2[1] = var34.x2[1];
228 /* 2: convlf */
229 var39.x2f[0] = var38.x2[0];
230 var39.x2f[1] = var38.x2[1];
231 /* 4: divf */
232 {
233 orc_union32 _src1;
234 orc_union32 _src2;
235 orc_union32 _dest1;
236 _src1.i = ORC_DENORMAL(var39.x2[0]);
237 _src2.i = ORC_DENORMAL(var35.x2[0]);
238 _dest1.f = _src1.f / _src2.f;
239 var40.x2[0] = ORC_DENORMAL(_dest1.i);
240 }
241 {
242 orc_union32 _src1;
243 orc_union32 _src2;
244 orc_union32 _dest1;
245 _src1.i = ORC_DENORMAL(var39.x2[1]);
246 _src2.i = ORC_DENORMAL(var35.x2[1]);
247 _dest1.f = _src1.f / _src2.f;
248 var40.x2[1] = ORC_DENORMAL(_dest1.i);
249 }
250 /* 5: splitql */
251 {
252 orc_union64 _src;
253 _src.i = var40.i;
254 var36.i = _src.x2[1];
255 var37.i = _src.x2[0];
256 }
257 /* 6: storel */
258 ptr1[i] = var36;
259 /* 7: storel */
260 ptr0[i] = var37;
261 }
262
263 }
264
265 void
266 2 volk_16ic_s32f_deinterleave_32f_x2_a_orc_impl (orc_uint32 * ORC_RESTRICT d1, orc_uint32 * ORC_RESTRICT d2, const orc_uint32 * ORC_RESTRICT s1, float p1, int n)
267 {
268 2 OrcExecutor _ex, *ex = &_ex;
269 static volatile int p_inited = 0;
270 static OrcCode *c = 0;
271 void (*func) (OrcExecutor *);
272
273
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
2 if (!p_inited) {
274 2 orc_once_mutex_lock ();
275
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
2 if (!p_inited) {
276 OrcProgram *p;
277
278 #if 1
279 static const orc_uint8 bc[] = {
280 1, 9, 45, 118, 111, 108, 107, 95, 49, 54, 105, 99, 95, 115, 51, 50,
281 102, 95, 100, 101, 105, 110, 116, 101, 114, 108, 101, 97, 118, 101, 95, 51,
282 50, 102, 95, 120, 50, 95, 97, 95, 111, 114, 99, 95, 105, 109, 112, 108,
283 11, 4, 4, 11, 4, 4, 12, 4, 4, 17, 4, 20, 8, 20, 8, 21,
284 1, 153, 32, 4, 21, 1, 211, 33, 32, 21, 1, 203, 33, 33, 24, 197,
285 1, 0, 33, 2, 0,
286 };
287 2 p = orc_program_new_from_static_bytecode (bc);
288 2 orc_program_set_backup_function (p, _backup_volk_16ic_s32f_deinterleave_32f_x2_a_orc_impl);
289 #else
290 p = orc_program_new ();
291 orc_program_set_name (p, "volk_16ic_s32f_deinterleave_32f_x2_a_orc_impl");
292 orc_program_set_backup_function (p, _backup_volk_16ic_s32f_deinterleave_32f_x2_a_orc_impl);
293 orc_program_add_destination (p, 4, "d1");
294 orc_program_add_destination (p, 4, "d2");
295 orc_program_add_source (p, 4, "s1");
296 orc_program_add_parameter_float (p, 4, "p1");
297 orc_program_add_temporary (p, 8, "t1");
298 orc_program_add_temporary (p, 8, "t2");
299
300 orc_program_append_2 (p, "convswl", 1, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
301 orc_program_append_2 (p, "convlf", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1);
302 orc_program_append_2 (p, "divf", 1, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P1, ORC_VAR_D1);
303 orc_program_append_2 (p, "splitql", 0, ORC_VAR_D2, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_D1);
304 #endif
305
306 2 orc_program_compile (p);
307 2 c = orc_program_take_code (p);
308 2 orc_program_free (p);
309 }
310 2 p_inited = TRUE;
311 2 orc_once_mutex_unlock ();
312 }
313 2 ex->arrays[ORC_VAR_A2] = c;
314 2 ex->program = 0;
315
316 2 ex->n = n;
317 2 ex->arrays[ORC_VAR_D1] = d1;
318 2 ex->arrays[ORC_VAR_D2] = d2;
319 2 ex->arrays[ORC_VAR_S1] = (void *)s1;
320 {
321 orc_union32 tmp;
322 2 tmp.f = p1;
323 2 ex->params[ORC_VAR_P1] = tmp.i;
324 }
325
326 2 func = c->exec;
327 2 func (ex);
328 2 }
329 #endif
330
331
332