GCC Code Coverage Report


Directory: ./
File: build/lib/volk_32fc_x2_multiply_32fc_a_orc_impl.c
Date: 2023-10-23 23:10:04
Exec Total Coverage
Lines: 21 67 31.3%
Functions: 1 2 50.0%
Branches: 2 42 4.8%

Line Branch Exec Source
1
2 /* autogenerated from volk_32fc_x2_multiply_32fc_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_32fc_x2_multiply_32fc_a_orc_impl (orc_uint64 * ORC_RESTRICT d1, const orc_uint64 * ORC_RESTRICT s1, const orc_uint64 * ORC_RESTRICT s2, 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_32fc_x2_multiply_32fc_a_orc_impl */
131 #ifdef DISABLE_ORC
132 void
133 volk_32fc_x2_multiply_32fc_a_orc_impl (orc_uint64 * ORC_RESTRICT d1, const orc_uint64 * ORC_RESTRICT s1, const orc_uint64 * ORC_RESTRICT s2, int n){
134 int i;
135 orc_union64 * ORC_RESTRICT ptr0;
136 const orc_union64 * ORC_RESTRICT ptr4;
137 const orc_union64 * ORC_RESTRICT ptr5;
138 orc_union64 var38;
139 orc_union64 var39;
140 orc_union64 var40;
141 orc_union64 var41;
142 orc_union64 var42;
143 orc_union64 var43;
144 orc_union32 var44;
145 orc_union32 var45;
146 orc_union32 var46;
147 orc_union64 var47;
148 orc_union64 var48;
149 orc_union32 var49;
150 orc_union32 var50;
151 orc_union32 var51;
152
153 ptr0 = (orc_union64 *)d1;
154 ptr4 = (orc_union64 *)s1;
155 ptr5 = (orc_union64 *)s2;
156
157
158 for (i = 0; i < n; i++) {
159 /* 0: loadq */
160 var38 = ptr4[i];
161 /* 1: loadq */
162 var39 = ptr5[i];
163 /* 2: mulf */
164 {
165 orc_union32 _src1;
166 orc_union32 _src2;
167 orc_union32 _dest1;
168 _src1.i = ORC_DENORMAL(var38.x2[0]);
169 _src2.i = ORC_DENORMAL(var39.x2[0]);
170 _dest1.f = _src1.f * _src2.f;
171 var43.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(var38.x2[1]);
178 _src2.i = ORC_DENORMAL(var39.x2[1]);
179 _dest1.f = _src1.f * _src2.f;
180 var43.x2[1] = ORC_DENORMAL(_dest1.i);
181 }
182 /* 3: splitql */
183 {
184 orc_union64 _src;
185 _src.i = var43.i;
186 var44.i = _src.x2[1];
187 var45.i = _src.x2[0];
188 }
189 /* 4: subf */
190 {
191 orc_union32 _src1;
192 orc_union32 _src2;
193 orc_union32 _dest1;
194 _src1.i = ORC_DENORMAL(var45.i);
195 _src2.i = ORC_DENORMAL(var44.i);
196 _dest1.f = _src1.f - _src2.f;
197 var46.i = ORC_DENORMAL(_dest1.i);
198 }
199 /* 5: loadq */
200 var40 = ptr4[i];
201 /* 6: swaplq */
202 var47.i = ((var40.i&ORC_UINT64_C(0x00000000ffffffff)) << 32) | ((var40.i & ORC_UINT64_C(0xffffffff00000000)) >> 32);
203 /* 7: loadq */
204 var41 = ptr5[i];
205 /* 8: mulf */
206 {
207 orc_union32 _src1;
208 orc_union32 _src2;
209 orc_union32 _dest1;
210 _src1.i = ORC_DENORMAL(var47.x2[0]);
211 _src2.i = ORC_DENORMAL(var41.x2[0]);
212 _dest1.f = _src1.f * _src2.f;
213 var48.x2[0] = ORC_DENORMAL(_dest1.i);
214 }
215 {
216 orc_union32 _src1;
217 orc_union32 _src2;
218 orc_union32 _dest1;
219 _src1.i = ORC_DENORMAL(var47.x2[1]);
220 _src2.i = ORC_DENORMAL(var41.x2[1]);
221 _dest1.f = _src1.f * _src2.f;
222 var48.x2[1] = ORC_DENORMAL(_dest1.i);
223 }
224 /* 9: splitql */
225 {
226 orc_union64 _src;
227 _src.i = var48.i;
228 var49.i = _src.x2[1];
229 var50.i = _src.x2[0];
230 }
231 /* 10: addf */
232 {
233 orc_union32 _src1;
234 orc_union32 _src2;
235 orc_union32 _dest1;
236 _src1.i = ORC_DENORMAL(var50.i);
237 _src2.i = ORC_DENORMAL(var49.i);
238 _dest1.f = _src1.f + _src2.f;
239 var51.i = ORC_DENORMAL(_dest1.i);
240 }
241 /* 11: mergelq */
242 {
243 orc_union64 _dest;
244 _dest.x2[0] = var46.i;
245 _dest.x2[1] = var51.i;
246 var42.i = _dest.i;
247 }
248 /* 12: storeq */
249 ptr0[i] = var42;
250 }
251
252 }
253
254 #else
255 static void
256 _backup_volk_32fc_x2_multiply_32fc_a_orc_impl (OrcExecutor * ORC_RESTRICT ex)
257 {
258 int i;
259 int n = ex->n;
260 orc_union64 * ORC_RESTRICT ptr0;
261 const orc_union64 * ORC_RESTRICT ptr4;
262 const orc_union64 * ORC_RESTRICT ptr5;
263 orc_union64 var38;
264 orc_union64 var39;
265 orc_union64 var40;
266 orc_union64 var41;
267 orc_union64 var42;
268 orc_union64 var43;
269 orc_union32 var44;
270 orc_union32 var45;
271 orc_union32 var46;
272 orc_union64 var47;
273 orc_union64 var48;
274 orc_union32 var49;
275 orc_union32 var50;
276 orc_union32 var51;
277
278 ptr0 = (orc_union64 *)ex->arrays[0];
279 ptr4 = (orc_union64 *)ex->arrays[4];
280 ptr5 = (orc_union64 *)ex->arrays[5];
281
282
283 for (i = 0; i < n; i++) {
284 /* 0: loadq */
285 var38 = ptr4[i];
286 /* 1: loadq */
287 var39 = ptr5[i];
288 /* 2: mulf */
289 {
290 orc_union32 _src1;
291 orc_union32 _src2;
292 orc_union32 _dest1;
293 _src1.i = ORC_DENORMAL(var38.x2[0]);
294 _src2.i = ORC_DENORMAL(var39.x2[0]);
295 _dest1.f = _src1.f * _src2.f;
296 var43.x2[0] = ORC_DENORMAL(_dest1.i);
297 }
298 {
299 orc_union32 _src1;
300 orc_union32 _src2;
301 orc_union32 _dest1;
302 _src1.i = ORC_DENORMAL(var38.x2[1]);
303 _src2.i = ORC_DENORMAL(var39.x2[1]);
304 _dest1.f = _src1.f * _src2.f;
305 var43.x2[1] = ORC_DENORMAL(_dest1.i);
306 }
307 /* 3: splitql */
308 {
309 orc_union64 _src;
310 _src.i = var43.i;
311 var44.i = _src.x2[1];
312 var45.i = _src.x2[0];
313 }
314 /* 4: subf */
315 {
316 orc_union32 _src1;
317 orc_union32 _src2;
318 orc_union32 _dest1;
319 _src1.i = ORC_DENORMAL(var45.i);
320 _src2.i = ORC_DENORMAL(var44.i);
321 _dest1.f = _src1.f - _src2.f;
322 var46.i = ORC_DENORMAL(_dest1.i);
323 }
324 /* 5: loadq */
325 var40 = ptr4[i];
326 /* 6: swaplq */
327 var47.i = ((var40.i&ORC_UINT64_C(0x00000000ffffffff)) << 32) | ((var40.i & ORC_UINT64_C(0xffffffff00000000)) >> 32);
328 /* 7: loadq */
329 var41 = ptr5[i];
330 /* 8: mulf */
331 {
332 orc_union32 _src1;
333 orc_union32 _src2;
334 orc_union32 _dest1;
335 _src1.i = ORC_DENORMAL(var47.x2[0]);
336 _src2.i = ORC_DENORMAL(var41.x2[0]);
337 _dest1.f = _src1.f * _src2.f;
338 var48.x2[0] = ORC_DENORMAL(_dest1.i);
339 }
340 {
341 orc_union32 _src1;
342 orc_union32 _src2;
343 orc_union32 _dest1;
344 _src1.i = ORC_DENORMAL(var47.x2[1]);
345 _src2.i = ORC_DENORMAL(var41.x2[1]);
346 _dest1.f = _src1.f * _src2.f;
347 var48.x2[1] = ORC_DENORMAL(_dest1.i);
348 }
349 /* 9: splitql */
350 {
351 orc_union64 _src;
352 _src.i = var48.i;
353 var49.i = _src.x2[1];
354 var50.i = _src.x2[0];
355 }
356 /* 10: addf */
357 {
358 orc_union32 _src1;
359 orc_union32 _src2;
360 orc_union32 _dest1;
361 _src1.i = ORC_DENORMAL(var50.i);
362 _src2.i = ORC_DENORMAL(var49.i);
363 _dest1.f = _src1.f + _src2.f;
364 var51.i = ORC_DENORMAL(_dest1.i);
365 }
366 /* 11: mergelq */
367 {
368 orc_union64 _dest;
369 _dest.x2[0] = var46.i;
370 _dest.x2[1] = var51.i;
371 var42.i = _dest.i;
372 }
373 /* 12: storeq */
374 ptr0[i] = var42;
375 }
376
377 }
378
379 void
380 2 volk_32fc_x2_multiply_32fc_a_orc_impl (orc_uint64 * ORC_RESTRICT d1, const orc_uint64 * ORC_RESTRICT s1, const orc_uint64 * ORC_RESTRICT s2, int n)
381 {
382 2 OrcExecutor _ex, *ex = &_ex;
383 static volatile int p_inited = 0;
384 static OrcCode *c = 0;
385 void (*func) (OrcExecutor *);
386
387
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
2 if (!p_inited) {
388 2 orc_once_mutex_lock ();
389
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
2 if (!p_inited) {
390 OrcProgram *p;
391
392 #if 1
393 static const orc_uint8 bc[] = {
394 1, 9, 37, 118, 111, 108, 107, 95, 51, 50, 102, 99, 95, 120, 50, 95,
395 109, 117, 108, 116, 105, 112, 108, 121, 95, 51, 50, 102, 99, 95, 97, 95,
396 111, 114, 99, 95, 105, 109, 112, 108, 11, 8, 8, 12, 8, 8, 12, 8,
397 8, 20, 8, 20, 4, 20, 4, 20, 4, 20, 4, 20, 8, 21, 1, 202,
398 32, 4, 5, 197, 36, 35, 32, 201, 33, 35, 36, 187, 37, 4, 21, 1,
399 202, 32, 37, 5, 197, 36, 35, 32, 200, 34, 35, 36, 194, 0, 33, 34,
400 2, 0,
401 };
402 2 p = orc_program_new_from_static_bytecode (bc);
403 2 orc_program_set_backup_function (p, _backup_volk_32fc_x2_multiply_32fc_a_orc_impl);
404 #else
405 p = orc_program_new ();
406 orc_program_set_name (p, "volk_32fc_x2_multiply_32fc_a_orc_impl");
407 orc_program_set_backup_function (p, _backup_volk_32fc_x2_multiply_32fc_a_orc_impl);
408 orc_program_add_destination (p, 8, "d1");
409 orc_program_add_source (p, 8, "s1");
410 orc_program_add_source (p, 8, "s2");
411 orc_program_add_temporary (p, 8, "t1");
412 orc_program_add_temporary (p, 4, "t2");
413 orc_program_add_temporary (p, 4, "t3");
414 orc_program_add_temporary (p, 4, "t4");
415 orc_program_add_temporary (p, 4, "t5");
416 orc_program_add_temporary (p, 8, "t6");
417
418 orc_program_append_2 (p, "mulf", 1, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_S2, ORC_VAR_D1);
419 orc_program_append_2 (p, "splitql", 0, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_D1);
420 orc_program_append_2 (p, "subf", 0, ORC_VAR_T2, ORC_VAR_T4, ORC_VAR_T5, ORC_VAR_D1);
421 orc_program_append_2 (p, "swaplq", 0, ORC_VAR_T6, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1);
422 orc_program_append_2 (p, "mulf", 1, ORC_VAR_T1, ORC_VAR_T6, ORC_VAR_S2, ORC_VAR_D1);
423 orc_program_append_2 (p, "splitql", 0, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_D1);
424 orc_program_append_2 (p, "addf", 0, ORC_VAR_T3, ORC_VAR_T4, ORC_VAR_T5, ORC_VAR_D1);
425 orc_program_append_2 (p, "mergelq", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_D1);
426 #endif
427
428 2 orc_program_compile (p);
429 2 c = orc_program_take_code (p);
430 2 orc_program_free (p);
431 }
432 2 p_inited = TRUE;
433 2 orc_once_mutex_unlock ();
434 }
435 2 ex->arrays[ORC_VAR_A2] = c;
436 2 ex->program = 0;
437
438 2 ex->n = n;
439 2 ex->arrays[ORC_VAR_D1] = d1;
440 2 ex->arrays[ORC_VAR_S1] = (void *)s1;
441 2 ex->arrays[ORC_VAR_S2] = (void *)s2;
442
443 2 func = c->exec;
444 2 func (ex);
445 2 }
446 #endif
447
448
449