ESBMC
Efficient SMT-based Context-Bounded Model Checker
Loading...
Searching...
No Matches
call_kernel.h
Go to the documentation of this file.
1#ifndef _CALL_KERNEL_H
2# define _CALL_KERNEL_H 1
3
4# include <stddef.h>
5# include <cstdlib>
6# include <string.h>
7# include <pthread.h>
8# include <assert.h>
9# include "vector_types.h"
11# include <new>
12
15
16# define GPU_threads 2
17
18// The device count is platform-dependent. It is chosen once, before any thread
19// starts; the upper bound keeps __cudaPeerIndex within an unsigned int.
21{
22 int n = nondet_int();
23 __ESBMC_assume(n >= 1 && n <= 65536);
24 return n;
25}
26
28// CUDA keeps the current device per host thread.
29__thread int __cudaCurrentDevice = 0;
30// Owning device plus one of each cudaMalloc allocation; zero for host memory.
31__attribute__((annotate("__ESBMC_inf_size"))) int __cudaDeviceOf[1];
32// Whether a device may dereference a peer's memory.
33__attribute__((annotate("__ESBMC_inf_size"))) bool __cudaPeerAccess[1];
34
35unsigned int __cudaPeerIndex(int device, int peer)
36{
37 return (unsigned int)device * 65536u + (unsigned int)peer;
38}
39
40template <class T>
42{
43}
44
45// A kernel runs on the current device and may only dereference that device's
46// memory, or a peer's once peer access is enabled.
47template <class T>
49{
50 const int owner = __cudaDeviceOf[__ESBMC_POINTER_OBJECT((const void *)p)];
51 __ESBMC_assert(
52 owner == 0 || owner == __cudaCurrentDevice + 1 ||
53 __cudaPeerAccess[__cudaPeerIndex(__cudaCurrentDevice, owner - 1)],
54 "kernel argument is allocated on another device");
55}
56
57template <class... Ts>
58void __cudaCheckKernelArgs(Ts... args)
59{
60 int checked[] = {0, (__cudaCheckKernelArg(args), 0)...};
61 (void)checked;
62}
63
64/*ESBMC_verify_kernel()*/
65typedef void *(*voidFunction_no_params)();
66typedef void *(*voidFunction_one)(int *arg);
67typedef void *(*voidFunction_two)(int *arg, int *arg2);
68typedef void *(*voidFunction_three)(int *arg, int *arg2, int *arg3);
69
70/*ESBMC_verify_kernel_i()*/
71typedef void *(*voidFunction_two_i)(int arg, int arg2);
72
73/*ESBMC_verify_kernel_u()*/
74typedef void *(*voidFunction_one_u)(uint4 *arg);
75typedef void *(*voidFunction_two_u)(unsigned int *arg, int *arg2);
76typedef void *(
77 *voidFunction_three_u)(unsigned arg, unsigned arg2, unsigned arg3);
78
79/*ESBMC_verify_kernel_f()*/
80typedef void *(*voidFunction_float)(float *arg1);
81typedef void *(*voidFunction_ffloat)(float *arg1, float arg2);
82typedef void *(*voidFunction_f5i2)(
83 float *arg1,
84 float *arg2,
85 float *arg3,
86 float *arg4,
87 float *arg5,
88 int arg6,
89 int arg7);
90
91/*ESBMC_verify_kernel_c()*/
92typedef void *(*voidFunction_d1)(double *arg1);
93typedef void *(*voidFunction_d2)(double arg1, int arg2);
94typedef void *(*voidFunction_c3)(char *arg1, char *arg2, char *arg3);
95
96/*ESBMC_verify_kernel_intt()*/
97typedef void *(*voidFunction_intt)(int *arg1, int arg2);
98
99/*ESBMC_verify_kernel_fuintt*/
100typedef void *(
101 *voidFunction_fuintt)(float *arg1, unsigned int arg2, unsigned int arg3);
102typedef void *(*voidFunction_fuint)(float *arg1, unsigned int arg2);
103
104/*ESBMC_verify_kernel_fuintint*/
105typedef void *(
106 *voidFunction_fuintint)(float *arg1, unsigned int arg2, int arg3);
107typedef void *(*voidFunction_fint)(float *arg1, int arg2);
108
109/*ESBMC_verify_kernel_three_args_iuull*/
110typedef void *(*voidFunction_iuull)(
111 int *arg1,
112 unsigned int *arg2,
113 unsigned long long int *arg3);
114
115/*ESBMC_verify_kernel_four_args_i_ui_ull_f*/
116typedef void *(*voidFunction_i_ui_ull_f)(
117 int *arg1,
118 unsigned int *arg2,
119 unsigned long long int *arg3,
120 float *arg4);
121
122/*ESBMC_verify_kernel_ui*/
123typedef void *(*voidFunction_one_ui)(
124 unsigned int *arg); /* CONSERTAR ESTA DUPLICAÇÃO!! */
125typedef void *(*voidFunction_ui)(unsigned int *arg);
126
128{
129 void *(*func)();
130};
131
133{
134 int *a;
135 int *b;
136 int *c;
137 void *(*func)(int *, int *, int *);
138};
139
141{
142 int *a;
143 void *(*func)(int *);
144};
145
147{
148 int *a;
149 int *b;
150 void *(*func)(int *, int *);
151};
152
153/* ESBMC_verify_kernel() */
155{
156 int a;
157 int b;
158 void *(*func)(int, int);
159};
160
161/* ESBMC_verify_kernel_u() */
163{
165 void *(*func)(uint4 *);
166};
167
169{
170 unsigned int *a;
171 int *b;
172 void *(*func)(unsigned int *, int *);
173};
174
176{
177 unsigned a;
178 unsigned b;
179 unsigned c;
180 void *(*func)(unsigned, unsigned, unsigned);
181};
182
183/*ESBMC_verify_kernel_f()*/
185{
186 float *a;
187 void *(*func)(float *);
188};
189
191{
192 float *a;
193 float b;
194 void *(*func)(float *, float);
195};
196
198{
199 float *a;
200 float *b;
201 float *c;
202 float *d;
203 float *e;
204 int f;
205 int g;
206 void *(*func)(float *, float *, float *, float *, float *, int, int);
207};
208/*ESBMC_verify_kernel_c()*/
210{
211 double *a;
212 void *(*func)(double *);
213};
214
216{
217 double a;
218 int b;
219 void *(*func)(double, int);
220};
221
223{
224 char *a;
225 char *b;
226 char *c;
227 void *(*func)(char *, char *, char *);
228};
229
230/*ESBMC_verify_kernel_intt()*/
232{
233 int *a;
234 int b;
235 void *(*func)(int *, int);
236};
237
238/*ESBMC_verify_kernel_fuintt()*/
239
241{
242 float *a;
243 unsigned int b;
244 unsigned int c;
245 void *(*func)(float *, unsigned int, unsigned int);
246};
247
249{
250 float *a;
251 unsigned int b;
252 void *(*func)(float *, unsigned int);
253};
254
255/*ESBMC_verify_kernel_fuintint()*/
256
258{
259 float *a;
260 unsigned int b;
261 int c;
262 void *(*func)(float *, unsigned int, int);
263};
264
266{
267 float *a;
268 int b;
269 void *(*func)(float *, int);
270};
271
272/*ESBMC_verify_kernel_three_args_iuull()*/
274{
275 int *a;
276 unsigned int *b;
277 unsigned long long int *c;
278 void *(*func)(int *, unsigned int *, unsigned long long int *);
279};
280
281/*ESBMC_verify_kernel_four_args_i_ui_ull_f*/
283{
284 int *a;
285 unsigned int *b;
286 unsigned long long int *c;
287 float *d;
288 void *(*func)(int *, unsigned int *, unsigned long long int *, float *);
289};
290
291/*ESBMC_verify_kernel_ui()*/
293{
294 unsigned int *a;
295 void *(*func)(unsigned int *);
296};
297
299typedef struct arg_struct Targ;
300typedef struct arg_struct1 Targ1;
301typedef struct arg_struct2 Targ2;
302
303typedef struct arg_struct2_i Targ2_i;
304
305typedef struct arg_struct_u1 Targ_u1;
306typedef struct arg_struct_u2 Targ_u2;
307typedef struct arg_struct_u3 Targ_u3;
308
310
314
315typedef struct arg_struct_d1 Targ_d1;
316typedef struct arg_struct_d2 Targ_d2;
317typedef struct arg_struct_c3 Targ_c3;
318
321
324
327
329
330unsigned int n_threads;
331__attribute__((annotate("__ESBMC_inf_size"))) pthread_t threads_id[1];
332
337
339
343
345
349
353
356
359
361
363
365
366/*ESBMC_execute_kernel()*/
368{
369 // ESBMC_atomic_begin();
370 dev_no_params.func();
371 // ESBMC_atomic_end();
372 return NULL;
373}
374
376{
377 // ESBMC_atomic_begin();
378 dev_one.func(dev_one.a);
379 // ESBMC_atomic_end();
380 return NULL;
381}
382
384{
385 // ESBMC_atomic_begin();
386 dev_two.func(dev_two.a, dev_two.b);
387 // ESBMC_atomic_end();
388 return NULL;
389}
390
392{
393 // ESBMC_atomic_begin();
395 // ESBMC_atomic_end();
396 return NULL;
397}
398
399/*ESBMC_execute_kernel_i()*/
401{
402 // ESBMC_atomic_begin();
403 dev_two_i.func(dev_two_i.a, dev_two_i.b);
404 // ESBMC_atomic_end();
405 return NULL;
406}
407
408/*ESBMC_execute_kernel_u()*/
410{
411 // ESBMC_atomic_begin();
412 dev_one_u.func(dev_one_u.a);
413 // ESBMC_atomic_end();
414 return NULL;
415}
416
418{
419 // ESBMC_atomic_begin();
420 dev_two_u.func(dev_two_u.a, dev_two_u.b);
421 // ESBMC_atomic_end();
422 return NULL;
423}
424
426{
427 // ESBMC_atomic_begin();
429 // ESBMC_atomic_end();
430 return NULL;
431}
432
433/*ESBMC_execute_kernel_f()*/
435{
436 // ESBMC_atomic_begin();
437 dev_float.func(dev_float.a);
438 // ESBMC_atomic_end();
439 return NULL;
440}
441
443{
444 // ESBMC_atomic_begin();
446 // ESBMC_atomic_end();
447 return NULL;
448}
449
451{
452 // ESBMC_atomic_begin();
453 dev_f5i2.func(
454 dev_f5i2.a,
455 dev_f5i2.b,
456 dev_f5i2.c,
457 dev_f5i2.d,
458 dev_f5i2.e,
459 dev_f5i2.f,
460 dev_f5i2.g);
461 // ESBMC_atomic_end();
462 return NULL;
463}
464
465/*ESBMC_execute_kernel_c()*/
466void *ESBMC_execute_kernel_d1(void *args)
467{
468 // ESBMC_atomic_begin();
469 dev_d1.func(dev_d1.a);
470 // ESBMC_atomic_end();
471 return NULL;
472}
473
474void *ESBMC_execute_kernel_d2(void *args)
475{
476 // ESBMC_atomic_begin();
477 dev_d2.func(dev_d2.a, dev_d2.b);
478 // ESBMC_atomic_end();
479 return NULL;
480}
481
482void *ESBMC_execute_kernel_c3(void *args)
483{
484 // ESBMC_atomic_begin();
485 dev_c3.func(dev_c3.a, dev_c3.b, dev_c3.c);
486 // ESBMC_atomic_end();
487 return NULL;
488}
489
490/*ESBMC_execute_kernel_intt()*/
492{
493 // ESBMC_atomic_begin();
494 dev_intt.func(dev_intt.a, dev_intt.b);
495 // ESBMC_atomic_end();
496 return NULL;
497}
498
499/*ESBMC_execute_kernel_fuintt()*/
501{
502 // ESBMC_atomic_begin();
504 // ESBMC_atomic_end();
505 return NULL;
506}
507
509{
510 // ESBMC_atomic_begin();
511 dev_fuint.func(dev_fuint.a, dev_fuint.b);
512 // ESBMC_atomic_end();
513 return NULL;
514}
515
516/*ESBMC_execute_kernel_fuintint()*/
518{
519 // ESBMC_atomic_begin();
521 // ESBMC_atomic_end();
522 return NULL;
523}
524
526{
527 // ESBMC_atomic_begin();
528 dev_fint.func(dev_fint.a, dev_fint.b);
529 // ESBMC_atomic_end();
530 return NULL;
531}
532
533/*ESBMC_execute_kernel_three_args_iuull()*/
535{
536 // ESBMC_atomic_begin();
538 // ESBMC_atomic_end();
539 return NULL;
540}
541
542/*ESBMC_execute_kernel_four_args_iuull()*/
544{
545 // ESBMC_atomic_begin();
551 // ESBMC_atomic_end();
552 return NULL;
553}
554
555/*ESBMC_execute_kernel_three_args_ui()*/
556void *ESBMC_execute_kernel_ui(void *args)
557{
558 // ESBMC_atomic_begin();
559 dev_ui.func(dev_ui.a);
560 // ESBMC_atomic_end();
561 return NULL;
562}
563
564/*ESBMC_verify_kernel()*/
565void ESBMC_verify_kernel_no_params(void *(*kernel)(), int blocks, int threads)
566{
567 __ESBMC_atomic_begin();
568 dev_no_params.func = kernel;
569
571 for (unsigned short int i = 0; i < GPU_threads; i++)
573
574 __ESBMC_atomic_end();
575}
576
578 void *(*kernel)(int *),
579 int blocks,
580 int threads,
581 void *arg1)
582{
583 __ESBMC_atomic_begin();
584 dev_one.a = (int *)__ESBMC_alloca(GPU_threads * sizeof(int));
585 dev_one.a = (int *)arg1;
586 dev_one.func = kernel;
587
588 blockGlobal = blocks;
589 threadGlobal = threads;
590
592 for (unsigned short int i = 0; i < GPU_threads; i++)
594
595 __ESBMC_atomic_end();
596}
597
599 void *(*kernel)(int *, int *),
600 int blocks,
601 int threads,
602 void *arg1,
603 void *arg2)
604{
605 __ESBMC_atomic_begin();
606 dev_two.a = (int *)__ESBMC_alloca(GPU_threads * sizeof(int));
607 dev_two.b = (int *)__ESBMC_alloca(GPU_threads * sizeof(int));
608 dev_two.a = (int *)arg1;
609 dev_two.b = (int *)arg2;
610 dev_two.func = kernel;
611
613 for (unsigned short int i = 0; i < GPU_threads; i++)
615
616 __ESBMC_atomic_end();
617}
618
620 void *(*kernel)(int *, int *, int *),
621 int blocks,
622 int threads,
623 void *arg1,
624 void *arg2,
625 void *arg3)
626{
627 __ESBMC_atomic_begin();
628 dev_three.a = (int *)__ESBMC_alloca(GPU_threads * sizeof(int));
629 dev_three.b = (int *)__ESBMC_alloca(GPU_threads * sizeof(int));
630 dev_three.c = (int *)__ESBMC_alloca(GPU_threads * sizeof(int));
631
632 dev_three.a = (int *)arg1;
633 dev_three.b = (int *)arg2;
634 dev_three.c = (int *)arg3;
635 dev_three.func = kernel;
636
638 for (unsigned short int i = 0; i < GPU_threads; i++)
640
641 __ESBMC_atomic_end();
642}
643
644/*ESBMC_verify_kernel_i()*/
646 void *(*kernel)(int, int),
647 int blocks,
648 int threads,
649 int arg1,
650 int arg2)
651{
652 __ESBMC_atomic_begin();
653 dev_two_i.a = arg1;
654 dev_two_i.b = arg2;
655 dev_two_i.func = kernel;
656
658 for (unsigned short int i = 0; i < GPU_threads; i++)
660
661 __ESBMC_atomic_end();
662}
663
664/*ESBMC_verify_kernel_u()*/
666 void *(*kernel)(uint4 *),
667 int blocks,
668 int threads,
669 void *arg1)
670{
671 __ESBMC_atomic_begin();
672 dev_one_u.a = (uint4 *)__ESBMC_alloca(GPU_threads * sizeof(uint4));
673 dev_one_u.a = (uint4 *)arg1;
674 dev_one_u.func = kernel;
675
677 for (unsigned short int i = 0; i < GPU_threads; i++)
679
680 __ESBMC_atomic_end();
681}
682
684 void *(*kernel)(unsigned int *, int *),
685 int blocks,
686 int threads,
687 void *arg1,
688 void *arg2)
689{
690 __ESBMC_atomic_begin();
691 dev_two_u.a =
692 (unsigned int *)__ESBMC_alloca(GPU_threads * sizeof(unsigned int));
693 dev_two_u.b = (int *)__ESBMC_alloca(GPU_threads * sizeof(int));
694 dev_two_u.a = (unsigned int *)arg1;
695 dev_two_u.b = (int *)arg2;
696 dev_two_u.func = kernel;
697
699 for (unsigned short int i = 0; i < GPU_threads; i++)
701
702 __ESBMC_atomic_end();
703}
704
706 void *(*kernel)(unsigned, unsigned, unsigned),
707 int blocks,
708 int threads,
709 unsigned arg1,
710 unsigned arg2,
711 unsigned arg3)
712{
713 __ESBMC_atomic_begin();
714 dev_three_u.a = arg1;
715 dev_three_u.b = arg2;
716 dev_three_u.c = arg3;
717 dev_three_u.func = kernel;
718
720 for (unsigned short int i = 0; i < GPU_threads; i++)
722
723 __ESBMC_atomic_end();
724}
725
726/*ESBMC_verify_kernel_f()*/
728 void *(*kernel)(float *),
729 int blocks,
730 int threads,
731 void *arg1)
732{
733 __ESBMC_atomic_begin();
734 dev_float.a = (float *)__ESBMC_alloca(GPU_threads * sizeof(float));
735 dev_float.a = (float *)arg1;
736 dev_float.func = kernel;
737
739 for (unsigned short int i = 0; i < GPU_threads; i++)
741
742 __ESBMC_atomic_end();
743}
744
746 void *(*kernel)(float *, float),
747 int blocks,
748 int threads,
749 void *arg1,
750 float arg2)
751{
752 __ESBMC_atomic_begin();
753 dev_ffloat.a = (float *)__ESBMC_alloca(GPU_threads * sizeof(float));
754 dev_ffloat.a = (float *)arg1;
755 dev_ffloat.b = arg2;
756 dev_ffloat.func = kernel;
757
759 for (unsigned short int i = 0; i < GPU_threads; i++)
761
762 __ESBMC_atomic_end();
763}
764
766 void *(*kernel)(float *, float *, float *, float *, float *, int, int),
767 int blocks,
768 int threads,
769 void *arg1,
770 void *arg2,
771 void *arg3,
772 void *arg4,
773 void *arg5,
774 int arg6,
775 int arg7)
776{
777 __ESBMC_atomic_begin();
778 dev_f5i2.a = (float *)__ESBMC_alloca(GPU_threads * sizeof(float));
779 dev_f5i2.b = (float *)__ESBMC_alloca(GPU_threads * sizeof(float));
780 dev_f5i2.c = (float *)__ESBMC_alloca(GPU_threads * sizeof(float));
781 dev_f5i2.d = (float *)__ESBMC_alloca(GPU_threads * sizeof(float));
782 dev_f5i2.e = (float *)__ESBMC_alloca(GPU_threads * sizeof(float));
783
784 dev_f5i2.a = (float *)arg1;
785 dev_f5i2.b = (float *)arg2;
786 dev_f5i2.c = (float *)arg3;
787 dev_f5i2.d = (float *)arg4;
788 dev_f5i2.e = (float *)arg5;
789 dev_f5i2.f = arg6;
790 dev_f5i2.g = arg7;
791 dev_f5i2.func = kernel;
792
794 for (unsigned short int i = 0; i < GPU_threads; i++)
796
797 __ESBMC_atomic_end();
798}
799
800/*ESBMC_verify_kernel_c()*/
802 void *(*kernel)(double *),
803 int blocks,
804 int threads,
805 void *arg1)
806{
807 __ESBMC_atomic_begin();
808 dev_d1.a = (double *)__ESBMC_alloca(GPU_threads * sizeof(double));
809 dev_d1.a = (double *)arg1;
810 dev_d1.func = kernel;
811
813 for (unsigned short int i = 0; i < GPU_threads; i++)
815
816 __ESBMC_atomic_end();
817}
818
820 void *(*kernel)(double, int),
821 int blocks,
822 int threads,
823 double arg1,
824 int arg2)
825{
826 __ESBMC_atomic_begin();
827 dev_d2.a = arg1;
828 dev_d2.b = arg2;
829 dev_d2.func = kernel;
830
832 for (unsigned short int i = 0; i < GPU_threads; i++)
834
835 __ESBMC_atomic_end();
836}
837
839 void *(*kernel)(char *, char *, char *),
840 int blocks,
841 int threads,
842 void *arg1,
843 void *arg2,
844 void *arg3)
845{
846 __ESBMC_atomic_begin();
847 dev_c3.a = (char *)__ESBMC_alloca(GPU_threads * sizeof(float));
848 dev_c3.b = (char *)__ESBMC_alloca(GPU_threads * sizeof(float));
849 dev_c3.c = (char *)__ESBMC_alloca(GPU_threads * sizeof(float));
850
851 dev_c3.a = (char *)arg1;
852 dev_c3.b = (char *)arg2;
853 dev_c3.c = (char *)arg3;
854 dev_c3.func = kernel;
855
857 for (unsigned short int i = 0; i < GPU_threads; i++)
859
860 __ESBMC_atomic_end();
861}
862
863/*ESBMC_verify_kernel_intt()*/
865 void *(*kernel)(int *, int),
866 int blocks,
867 int threads,
868 void *arg1,
869 int arg2)
870{
871 __ESBMC_atomic_begin();
872 dev_intt.a = (int *)__ESBMC_alloca(GPU_threads * sizeof(int));
873
874 dev_intt.a = (int *)arg1;
875 dev_intt.b = arg2;
876 dev_intt.func = kernel;
877
879 for (unsigned short int i = 0; i < GPU_threads; i++)
881
882 __ESBMC_atomic_end();
883}
884
885/*ESBMC_verify_kernel_fuintt()*/
887 void *(*kernel)(float *, unsigned int, unsigned int),
888 int blocks,
889 int threads,
890 void *arg1,
891 unsigned int arg2,
892 unsigned int arg3)
893{
894 __ESBMC_atomic_begin();
895 dev_fuintt.a = (float *)__ESBMC_alloca(GPU_threads * sizeof(float));
896
897 dev_fuintt.a = (float *)arg1;
898 dev_fuintt.b = arg2;
899 dev_fuintt.c = arg3;
900 dev_fuintt.func = kernel;
901
903 for (unsigned short int i = 0; i < GPU_threads; i++)
905
906 __ESBMC_atomic_end();
907}
908
910 void *(*kernel)(float *, unsigned int),
911 int blocks,
912 int threads,
913 void *arg1,
914 unsigned int arg2)
915{
916 __ESBMC_atomic_begin();
917 dev_fuint.a = (float *)__ESBMC_alloca(GPU_threads * sizeof(float));
918
919 dev_fuint.a = (float *)arg1;
920 dev_fuint.b = arg2;
921 dev_fuint.func = kernel;
922
924 for (unsigned short int i = 0; i < GPU_threads; i++)
926
927 __ESBMC_atomic_end();
928}
929
930/*ESBMC_verify_kernel_fuintint()*/
932 void *(*kernel)(float *, unsigned int, int),
933 int blocks,
934 int threads,
935 void *arg1,
936 unsigned int arg2,
937 int arg3)
938{
939 __ESBMC_atomic_begin();
940 dev_fuintint.a = (float *)__ESBMC_alloca(GPU_threads * sizeof(float));
941
942 dev_fuintint.a = (float *)arg1;
943 dev_fuintint.b = arg2;
944 dev_fuintint.c = arg3;
945 dev_fuintint.func = kernel;
946
948 for (unsigned short int i = 0; i < GPU_threads; i++)
950
951 __ESBMC_atomic_end();
952}
953
955 void *(*kernel)(float *, int),
956 int blocks,
957 int threads,
958 void *arg1,
959 int arg2)
960{
961 __ESBMC_atomic_begin();
962 dev_fint.a = (float *)__ESBMC_alloca(GPU_threads * sizeof(float));
963 dev_fint.a = (float *)arg1;
964 dev_fint.b = arg2;
965 dev_fint.func = kernel;
966
968 for (unsigned short int i = 0; i < GPU_threads; i++)
970
971 __ESBMC_atomic_end();
972}
973
974/*ESBMC_verify_kernel_three_args_iuull()*/
976 void *(*kernel)(int *, unsigned int *, unsigned long long int *),
977 int blocks,
978 int threads,
979 void *arg1,
980 void *arg2,
981 void *arg3)
982{
983 __ESBMC_atomic_begin();
984 dev_three_iuull.a = (int *)__ESBMC_alloca(GPU_threads * sizeof(int));
986 (unsigned int *)__ESBMC_alloca(GPU_threads * sizeof(unsigned int));
987 dev_three_iuull.c = (unsigned long long int *)__ESBMC_alloca(
988 GPU_threads * sizeof(unsigned long long int));
989
990 dev_three_iuull.a = (int *)arg1;
991 dev_three_iuull.b = (unsigned int *)arg2;
992 dev_three_iuull.c = (unsigned long long int *)arg3;
993 dev_three_iuull.func = kernel;
994
996 for (unsigned short int i = 0; i < GPU_threads; i++)
998 &threads_id[i], NULL, ESBMC_execute_kernel_three_iuull, NULL);
999 __ESBMC_atomic_end();
1000}
1001
1002/*ESBMC_verify_kernel_four_args_i_ui_ull_f()*/
1004 void *(*kernel)(int *, unsigned int *, unsigned long long int *, float *),
1005 int blocks,
1006 int threads,
1007 void *arg1,
1008 void *arg2,
1009 void *arg3,
1010 void *arg4)
1011{
1012 __ESBMC_atomic_begin();
1013 dev_four_i_ui_ull_f.a = (int *)__ESBMC_alloca(GPU_threads * sizeof(int));
1015 (unsigned int *)__ESBMC_alloca(GPU_threads * sizeof(unsigned int));
1016 dev_four_i_ui_ull_f.c = (unsigned long long int *)__ESBMC_alloca(
1017 GPU_threads * sizeof(unsigned long long int));
1018 dev_four_i_ui_ull_f.d = (float *)__ESBMC_alloca(GPU_threads * sizeof(float));
1019
1020 dev_four_i_ui_ull_f.a = (int *)arg1;
1021 dev_four_i_ui_ull_f.b = (unsigned int *)arg2;
1022 dev_four_i_ui_ull_f.c = (unsigned long long int *)arg3;
1023 dev_four_i_ui_ull_f.d = (float *)arg4;
1024 dev_four_i_ui_ull_f.func = kernel;
1025
1026 assignIndexes();
1027 for (unsigned short int i = 0; i < GPU_threads; i++)
1030
1031 __ESBMC_atomic_end();
1032}
1033
1034/*ESBMC_verify_kernel_three_args_ui()*/
1036 void *(*kernel)(unsigned int *),
1037 int blocks,
1038 int threads,
1039 void *arg1)
1040{
1041 __ESBMC_atomic_begin();
1042 dev_ui.a = (unsigned int *)__ESBMC_alloca(GPU_threads * sizeof(unsigned int));
1043 dev_ui.a = (unsigned int *)arg1;
1044 dev_ui.func = kernel;
1045
1046 assignIndexes();
1047 for (unsigned short int i = 0; i < GPU_threads; i++)
1049
1050 __ESBMC_atomic_end();
1051}
1052
1053/************ TEMPLATES **********/
1054/*ESBMC_verify_kernel()*/
1055template <class RET, class BLOCK, class THREAD>
1056void ESBMC_verify_kernel(RET *kernel, BLOCK blocks, THREAD threads)
1057{
1058 // ESBMC_atomic_begin();
1059 gridDim = dim3(blocks);
1060 blockDim = dim3(threads);
1061
1063 (voidFunction_no_params)kernel,
1064 gridDim.x * gridDim.y * gridDim.z,
1065 blockDim.x * blockDim.y * blockDim.z);
1066
1067 for (unsigned short int i = 0; i < GPU_threads; i++)
1068 pthread_join(threads_id[i], NULL);
1069
1070 // ESBMC_atomic_end();
1071}
1072
1073template <class RET, class BLOCK, class THREAD, class T1>
1074void ESBMC_verify_kernel(RET *kernel, BLOCK blocks, THREAD threads, T1 arg)
1075{
1076 // ESBMC_atomic_begin();
1077 gridDim = dim3(blocks);
1078 blockDim = dim3(threads);
1080
1082 (voidFunction_one)kernel,
1083 gridDim.x * gridDim.y * gridDim.z,
1084 blockDim.x * blockDim.y * blockDim.z,
1085 (void *)arg);
1086
1087 for (unsigned short int i = 0; i < GPU_threads; i++)
1088 pthread_join(threads_id[i], NULL);
1089
1090 // ESBMC_atomic_end();
1091}
1092
1093template <class RET, class BLOCK, class THREAD, class T1, class T2>
1095 RET *kernel,
1096 BLOCK blocks,
1097 THREAD threads,
1098 T1 arg,
1099 T2 arg2)
1100{
1101 // ESBMC_atomic_begin();
1102 gridDim = dim3(blocks);
1103 blockDim = dim3(threads);
1104 __cudaCheckKernelArgs(arg, arg2);
1105
1107 (voidFunction_two)kernel,
1108 gridDim.x * gridDim.y * gridDim.z,
1109 blockDim.x * blockDim.y * blockDim.z,
1110 (void *)arg,
1111 (void *)arg2);
1112
1113 for (unsigned short int i = 0; i < GPU_threads; i++)
1114 pthread_join(threads_id[i], NULL);
1115
1116 // ESBMC_atomic_end();
1117}
1118
1119template <class RET, class BLOCK, class THREAD, class T1, class T2, class T3>
1121 RET *kernel,
1122 BLOCK blocks,
1123 THREAD threads,
1124 T1 arg,
1125 T2 arg2,
1126 T3 arg3)
1127{
1128 // ESBMC_atomic_begin();
1129 gridDim = dim3(blocks);
1130 blockDim = dim3(threads);
1131 __cudaCheckKernelArgs(arg, arg2, arg3);
1132
1134 (voidFunction_three)kernel,
1135 gridDim.x * gridDim.y * gridDim.z,
1136 blockDim.x * blockDim.y * blockDim.z,
1137 (void *)arg,
1138 (void *)arg2,
1139 (void *)arg3);
1140
1141 for (unsigned short int i = 0; i < GPU_threads; i++)
1142 pthread_join(threads_id[i], NULL);
1143
1144 // ESBMC_atomic_end();
1145}
1146
1147/*ESBMC_verify_kernel_i*/
1148template <class RET, class BLOCK, class THREAD, class T1, class T2>
1150 RET *kernel,
1151 BLOCK blocks,
1152 THREAD threads,
1153 T1 arg,
1154 T2 arg2)
1155{
1156 // ESBMC_atomic_begin();
1157 gridDim = dim3(blocks);
1158 blockDim = dim3(threads);
1159 __cudaCheckKernelArgs(arg, arg2);
1160
1162 (voidFunction_two_i)kernel,
1163 gridDim.x * gridDim.y * gridDim.z,
1164 blockDim.x * blockDim.y * blockDim.z,
1165 arg,
1166 arg2);
1167
1168 for (unsigned short int i = 0; i < GPU_threads; i++)
1169 pthread_join(threads_id[i], NULL);
1170
1171 // ESBMC_atomic_end();
1172}
1173
1174/*ESBMC_verify_kernel_u()*/
1175template <class RET, class BLOCK, class THREAD, class T1>
1176void ESBMC_verify_kernel_u(RET *kernel, BLOCK blocks, THREAD threads, T1 arg)
1177{
1178 // ESBMC_atomic_begin();
1179 gridDim = dim3(blocks);
1180 blockDim = dim3(threads);
1182
1184 (voidFunction_one_u)kernel,
1185 gridDim.x * gridDim.y * gridDim.z,
1186 blockDim.x * blockDim.y * blockDim.z,
1187 arg);
1188
1189 for (unsigned short int i = 0; i < GPU_threads; i++)
1190 pthread_join(threads_id[i], NULL);
1191
1192 // ESBMC_atomic_end();
1193}
1194
1195template <class RET, class BLOCK, class THREAD, class T1, class T2>
1197 RET *kernel,
1198 BLOCK blocks,
1199 THREAD threads,
1200 T1 arg,
1201 T2 arg2)
1202{
1203 // ESBMC_atomic_begin();
1204 gridDim = dim3(blocks);
1205 blockDim = dim3(threads);
1206 __cudaCheckKernelArgs(arg, arg2);
1207
1209 (voidFunction_two_u)kernel,
1210 gridDim.x * gridDim.y * gridDim.z,
1211 blockDim.x * blockDim.y * blockDim.z,
1212 (void *)arg,
1213 (void *)arg2);
1214
1215 for (unsigned short int i = 0; i < GPU_threads; i++)
1216 pthread_join(threads_id[i], NULL);
1217
1218 // ESBMC_atomic_end();
1219}
1220
1221template <class RET, class BLOCK, class THREAD, class T1, class T2, class T3>
1223 RET *kernel,
1224 BLOCK blocks,
1225 THREAD threads,
1226 T1 arg,
1227 T2 arg2,
1228 T3 arg3)
1229{
1230 // ESBMC_atomic_begin();
1231 gridDim = dim3(blocks);
1232 blockDim = dim3(threads);
1233 __cudaCheckKernelArgs(arg, arg2, arg3);
1234
1236 (voidFunction_three_u)kernel,
1237 gridDim.x * gridDim.y * gridDim.z,
1238 blockDim.x * blockDim.y * blockDim.z,
1239 arg,
1240 arg2,
1241 arg3);
1242
1243 for (unsigned short int i = 0; i < GPU_threads; i++)
1244 pthread_join(threads_id[i], NULL);
1245
1246 // ESBMC_atomic_end();
1247}
1248
1249/*ESBMC_verify_kernel_f()*/
1250template <class RET, class BLOCK, class THREAD, class T1, class T2>
1252 RET *kernel,
1253 BLOCK blocks,
1254 THREAD threads,
1255 T1 arg,
1256 T2 arg2)
1257{
1258 // ESBMC_atomic_begin();
1259 gridDim = dim3(blocks);
1260 blockDim = dim3(threads);
1261 __cudaCheckKernelArgs(arg, arg2);
1262
1264 (voidFunction_ffloat)kernel,
1265 gridDim.x * gridDim.y * gridDim.z,
1266 blockDim.x * blockDim.y * blockDim.z,
1267 (void *)arg,
1268 arg2);
1269
1270 for (unsigned short int i = 0; i < GPU_threads; i++)
1271 pthread_join(threads_id[i], NULL);
1272
1273 // ESBMC_atomic_end();
1274}
1275
1276template <class RET, class BLOCK, class THREAD, class T1>
1277void ESBMC_verify_kernel_f(RET *kernel, BLOCK blocks, THREAD threads, T1 arg)
1278{
1279 // ESBMC_atomic_begin();
1280 gridDim = dim3(blocks);
1281 blockDim = dim3(threads);
1283
1285 (voidFunction_float)kernel,
1286 gridDim.x * gridDim.y * gridDim.z,
1287 blockDim.x * blockDim.y * blockDim.z,
1288 (void *)arg);
1289
1290 for (unsigned short int i = 0; i < GPU_threads; i++)
1291 pthread_join(threads_id[i], NULL);
1292
1293 // ESBMC_atomic_end();
1294}
1295template <
1296 class RET,
1297 class BLOCK,
1298 class THREAD,
1299 class T1,
1300 class T2,
1301 class T3,
1302 class T4,
1303 class T5,
1304 class T6,
1305 class T7>
1307 RET *kernel,
1308 BLOCK blocks,
1309 THREAD threads,
1310 T1 arg,
1311 T2 arg2,
1312 T3 arg3,
1313 T4 arg4,
1314 T5 arg5,
1315 T6 arg6,
1316 T7 arg7)
1317{
1318 // ESBMC_atomic_begin();
1319 gridDim = dim3(blocks);
1320 blockDim = dim3(threads);
1321 __cudaCheckKernelArgs(arg, arg2, arg3, arg4, arg5, arg6, arg7);
1322
1324 (voidFunction_f5i2)kernel,
1325 gridDim.x * gridDim.y * gridDim.z,
1326 blockDim.x * blockDim.y * blockDim.z,
1327 (void *)arg,
1328 (void *)arg2,
1329 (void *)arg3,
1330 (void *)arg4,
1331 (void *)arg5,
1332 arg6,
1333 arg7);
1334
1335 for (unsigned short int i = 0; i < GPU_threads; i++)
1336 pthread_join(threads_id[i], NULL);
1337
1338 // ESBMC_atomic_end();
1339}
1340
1341/*ESBMC_verify_kernel_c()*/
1342template <class RET, class BLOCK, class THREAD, class T1, class T2, class T3>
1344 RET *kernel,
1345 BLOCK blocks,
1346 THREAD threads,
1347 T1 arg,
1348 T2 arg2,
1349 T3 arg3)
1350{
1351 // ESBMC_atomic_begin();
1352 gridDim = dim3(blocks);
1353 blockDim = dim3(threads);
1354 __cudaCheckKernelArgs(arg, arg2, arg3);
1355
1357 (voidFunction_c3)kernel,
1358 gridDim.x * gridDim.y * gridDim.z,
1359 blockDim.x * blockDim.y * blockDim.z,
1360 (void *)arg,
1361 (void *)arg2,
1362 (void *)arg3);
1363
1364 for (unsigned short int i = 0; i < GPU_threads; i++)
1365 pthread_join(threads_id[i], NULL);
1366
1367 // ESBMC_atomic_end();
1368}
1369
1370template <class RET, class BLOCK, class THREAD, class T1>
1371void ESBMC_verify_kernel_c(RET *kernel, BLOCK blocks, THREAD threads, T1 arg)
1372{
1373 // ESBMC_atomic_begin();
1374 gridDim = dim3(blocks);
1375 blockDim = dim3(threads);
1377
1379 (voidFunction_d1)kernel,
1380 gridDim.x * gridDim.y * gridDim.z,
1381 blockDim.x * blockDim.y * blockDim.z,
1382 (void *)arg);
1383
1384 for (unsigned short int i = 0; i < GPU_threads; i++)
1385 pthread_join(threads_id[i], NULL);
1386
1387 // ESBMC_atomic_end();
1388}
1389
1390template <class RET, class BLOCK, class THREAD, class T1, class T2>
1392 RET *kernel,
1393 BLOCK blocks,
1394 THREAD threads,
1395 T1 arg,
1396 T2 arg2)
1397{
1398 // ESBMC_atomic_begin();
1399 gridDim = dim3(blocks);
1400 blockDim = dim3(threads);
1401 __cudaCheckKernelArgs(arg, arg2);
1402
1404 (voidFunction_d2)kernel,
1405 gridDim.x * gridDim.y * gridDim.z,
1406 blockDim.x * blockDim.y * blockDim.z,
1407 arg,
1408 arg2);
1409
1410 for (unsigned short int i = 0; i < GPU_threads; i++)
1411 pthread_join(threads_id[i], NULL);
1412
1413 // ESBMC_atomic_end();
1414}
1415
1416/*ESBMC_verify_kernel_intt()*/
1417template <class RET, class BLOCK, class THREAD, class T1, class T2>
1419 RET *kernel,
1420 BLOCK blocks,
1421 THREAD threads,
1422 T1 arg,
1423 T2 arg2)
1424{
1425 // ESBMC_atomic_begin();
1426 gridDim = dim3(blocks);
1427 blockDim = dim3(threads);
1428 __cudaCheckKernelArgs(arg, arg2);
1429
1431 (voidFunction_intt)kernel,
1432 gridDim.x * gridDim.y * gridDim.z,
1433 blockDim.x * blockDim.y * blockDim.z,
1434 (void *)arg,
1435 arg2);
1436
1437 for (unsigned short int i = 0; i < GPU_threads; i++)
1438 pthread_join(threads_id[i], NULL);
1439
1440 // ESBMC_atomic_end();
1441}
1442
1443/*ESBMC_verify_kernel_fuintt()*/
1444template <class RET, class BLOCK, class THREAD, class T1, class T2, class T3>
1446 RET *kernel,
1447 BLOCK blocks,
1448 THREAD threads,
1449 T1 arg,
1450 T2 arg2,
1451 T3 arg3)
1452{
1453 // ESBMC_atomic_begin();
1454 gridDim = dim3(blocks);
1455 blockDim = dim3(threads);
1456 __cudaCheckKernelArgs(arg, arg2, arg3);
1457
1459 (voidFunction_fuintt)kernel,
1460 gridDim.x * gridDim.y * gridDim.z,
1461 blockDim.x * blockDim.y * blockDim.z,
1462 (void *)arg,
1463 arg2,
1464 arg3);
1465
1466 for (unsigned short int i = 0; i < GPU_threads; i++)
1467 pthread_join(threads_id[i], NULL);
1468
1469 // ESBMC_atomic_end();
1470}
1471
1472template <class RET, class BLOCK, class THREAD, class T1, class T2>
1474 RET *kernel,
1475 BLOCK blocks,
1476 THREAD threads,
1477 T1 arg,
1478 T2 arg2)
1479{
1480 // ESBMC_atomic_begin();
1481 gridDim = dim3(blocks);
1482 blockDim = dim3(threads);
1483 __cudaCheckKernelArgs(arg, arg2);
1484
1486 (voidFunction_fuint)kernel,
1487 gridDim.x * gridDim.y * gridDim.z,
1488 blockDim.x * blockDim.y * blockDim.z,
1489 (void *)arg,
1490 arg2);
1491
1492 for (unsigned short int i = 0; i < GPU_threads; i++)
1493 pthread_join(threads_id[i], NULL);
1494
1495 // ESBMC_atomic_end();
1496}
1497
1498/*ESBMC_verify_kernel_fuintint()*/
1499template <class RET, class BLOCK, class THREAD, class T1, class T2, class T3>
1501 RET *kernel,
1502 BLOCK blocks,
1503 THREAD threads,
1504 T1 arg,
1505 T2 arg2,
1506 T3 arg3)
1507{
1508 // ESBMC_atomic_begin();
1509 gridDim = dim3(blocks);
1510 blockDim = dim3(threads);
1511 __cudaCheckKernelArgs(arg, arg2, arg3);
1512
1514 (voidFunction_fuintint)kernel,
1515 gridDim.x * gridDim.y * gridDim.z,
1516 blockDim.x * blockDim.y * blockDim.z,
1517 (void *)arg,
1518 arg2,
1519 arg3);
1520
1521 for (unsigned short int i = 0; i < GPU_threads; i++)
1522 pthread_join(threads_id[i], NULL);
1523
1524 // ESBMC_atomic_end();
1525}
1526
1527template <class RET, class BLOCK, class THREAD, class T1, class T2>
1529 RET *kernel,
1530 BLOCK blocks,
1531 THREAD threads,
1532 T1 arg,
1533 T2 arg2)
1534{
1535 // ESBMC_atomic_begin();
1536 gridDim = dim3(blocks);
1537 blockDim = dim3(threads);
1538 __cudaCheckKernelArgs(arg, arg2);
1539
1541 (voidFunction_fint)kernel,
1542 gridDim.x * gridDim.y * gridDim.z,
1543 blockDim.x * blockDim.y * blockDim.z,
1544 (void *)arg,
1545 arg2);
1546
1547 for (unsigned short int i = 0; i < GPU_threads; i++)
1548 pthread_join(threads_id[i], NULL);
1549
1550 // ESBMC_atomic_end();
1551}
1552
1553/*ESBMC_verify_kernel__three_args_iuull()*/
1554template <class RET, class BLOCK, class THREAD, class T1, class T2, class T3>
1556 RET *kernel,
1557 BLOCK blocks,
1558 THREAD threads,
1559 T1 arg,
1560 T2 arg2,
1561 T3 arg3)
1562{
1563 // ESBMC_atomic_begin();
1564 gridDim = dim3(blocks);
1565 blockDim = dim3(threads);
1566 __cudaCheckKernelArgs(arg, arg2, arg3);
1567
1569 (voidFunction_iuull)kernel,
1570 gridDim.x * gridDim.y * gridDim.z,
1571 blockDim.x * blockDim.y * blockDim.z,
1572 (void *)arg,
1573 (void *)arg2,
1574 (void *)arg3);
1575
1576 for (unsigned short int i = 0; i < GPU_threads; i++)
1577 pthread_join(threads_id[i], NULL);
1578
1579 // ESBMC_atomic_end();
1580}
1581
1582//\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/
1583/*ESBMC_verify_kernel__four_args_iuull()*/
1584template <
1585 class RET,
1586 class BLOCK,
1587 class THREAD,
1588 class T1,
1589 class T2,
1590 class T3,
1591 class T4>
1593 RET *kernel,
1594 BLOCK blocks,
1595 THREAD threads,
1596 T1 arg,
1597 T2 arg2,
1598 T3 arg3,
1599 T4 arg4)
1600{
1601 // ESBMC_atomic_begin();
1602 gridDim = dim3(blocks);
1603 blockDim = dim3(threads);
1604 __cudaCheckKernelArgs(arg, arg2, arg3, arg4);
1605
1608 gridDim.x * gridDim.y * gridDim.z,
1609 blockDim.x * blockDim.y * blockDim.z,
1610 (void *)arg,
1611 (void *)arg2,
1612 (void *)arg3,
1613 (void *)arg4);
1614
1615 for (unsigned short int i = 0; i < GPU_threads; i++)
1616 pthread_join(threads_id[i], NULL);
1617
1618 // ESBMC_atomic_end();
1619}
1620
1621/*ESBMC_verify_kernel_ui()*/
1622template <class RET, class BLOCK, class THREAD, class T1>
1623void ESBMC_verify_kernel_ui(RET *kernel, BLOCK blocks, THREAD threads, T1 arg)
1624{
1625 // ESBMC_atomic_begin();
1626 gridDim = dim3(blocks);
1627 blockDim = dim3(threads);
1629
1631 (voidFunction_one_ui)kernel,
1632 gridDim.x * gridDim.y * gridDim.z,
1633 blockDim.x * blockDim.y * blockDim.z,
1634 (void *)arg);
1635
1636 for (unsigned short int i = 0; i < GPU_threads; i++)
1637 pthread_join(threads_id[i], NULL);
1638
1639 // ESBMC_atomic_end();
1640}
1641
1642#endif /*call_kernel*/
void * ESBMC_execute_kernel_c3(void *args)
Definition call_kernel.h:482
Targ_ffloat dev_ffloat
Definition call_kernel.h:347
struct arg_struct_f5i2 Targ_f5i2
Definition call_kernel.h:313
void ESBMC_verify_kernel_one_ui(void *(*kernel)(unsigned int *), int blocks, int threads, void *arg1)
Definition call_kernel.h:1035
void * ESBMC_execute_kernel_three(void *args)
Definition call_kernel.h:391
Targ_fuintint dev_fuintint
Definition call_kernel.h:357
struct arg_struct_fint Targ_fint
Definition call_kernel.h:323
Targ2 dev_two
Definition call_kernel.h:336
void ESBMC_verify_kernel_f5i2(void *(*kernel)(float *, float *, float *, float *, float *, int, int), int blocks, int threads, void *arg1, void *arg2, void *arg3, void *arg4, void *arg5, int arg6, int arg7)
Definition call_kernel.h:765
void ESBMC_verify_kernel_fuintint(RET *kernel, BLOCK blocks, THREAD threads, T1 arg, T2 arg2, T3 arg3)
Definition call_kernel.h:1500
void ESBMC_verify_kernel_c(RET *kernel, BLOCK blocks, THREAD threads, T1 arg, T2 arg2, T3 arg3)
Definition call_kernel.h:1343
struct arg_struct_float Targ_float
Definition call_kernel.h:311
int __cudaDeviceCount
Definition call_kernel.h:27
int threadGlobal
Definition call_kernel.h:14
Targ_fuintt dev_fuintt
Definition call_kernel.h:354
void * ESBMC_execute_kernel_fint(void *args)
Definition call_kernel.h:525
void *(* voidFunction_three)(int *arg, int *arg2, int *arg3)
Definition call_kernel.h:68
void *(* voidFunction_iuull)(int *arg1, unsigned int *arg2, unsigned long long int *arg3)
Definition call_kernel.h:110
void *(* voidFunction_one_ui)(unsigned int *arg)
Definition call_kernel.h:123
void *(* voidFunction_c3)(char *arg1, char *arg2, char *arg3)
Definition call_kernel.h:94
void * ESBMC_execute_kernel_fuintint(void *args)
Definition call_kernel.h:517
void * ESBMC_execute_kernel_two(void *args)
Definition call_kernel.h:383
void ESBMC_verify_kernel_u(RET *kernel, BLOCK blocks, THREAD threads, T1 arg)
Definition call_kernel.h:1176
void * ESBMC_execute_kernel_d1(void *args)
Definition call_kernel.h:466
struct arg_struct_u1 Targ_u1
Definition call_kernel.h:305
void * ESBMC_execute_kernel_one_u(void *args)
Definition call_kernel.h:409
void *(* voidFunction_float)(float *arg1)
Definition call_kernel.h:80
struct arg_struct_iuull Targ_iuull
Definition call_kernel.h:325
void *(* voidFunction_two_u)(unsigned int *arg, int *arg2)
Definition call_kernel.h:75
void ESBMC_verify_kernel_no_params(void *(*kernel)(), int blocks, int threads)
Definition call_kernel.h:565
Targ1_ui dev_ui
Definition call_kernel.h:364
void * ESBMC_execute_kernel_one(void *args)
Definition call_kernel.h:375
#define GPU_threads
Definition call_kernel.h:16
void ESBMC_verify_kernel_with_three_args_u(void *(*kernel)(unsigned, unsigned, unsigned), int blocks, int threads, unsigned arg1, unsigned arg2, unsigned arg3)
Definition call_kernel.h:705
void ESBMC_verify_kernel_intt(RET *kernel, BLOCK blocks, THREAD threads, T1 arg, T2 arg2)
Definition call_kernel.h:1418
Targ_u1 dev_one_u
Definition call_kernel.h:340
void ESBMC_verify_kernel_with_one_args_u(void *(*kernel)(uint4 *), int blocks, int threads, void *arg1)
Definition call_kernel.h:665
void *(* voidFunction_intt)(int *arg1, int arg2)
Definition call_kernel.h:97
Targ_no_params dev_no_params
Definition call_kernel.h:333
void ESBMC_verify_kernel__fuint(void *(*kernel)(float *, unsigned int), int blocks, int threads, void *arg1, unsigned int arg2)
Definition call_kernel.h:909
Targ_d1 dev_d1
Definition call_kernel.h:350
void *(* voidFunction_ffloat)(float *arg1, float arg2)
Definition call_kernel.h:81
struct arg_struct_i_ui_ull_f Targ_i_ui_ull_f
Definition call_kernel.h:326
Targ_u3 dev_three_u
Definition call_kernel.h:342
struct arg_struct_intt Targ_intt
Definition call_kernel.h:309
void ESBMC_verify_kernel_three_args_iuull(RET *kernel, BLOCK blocks, THREAD threads, T1 arg, T2 arg2, T3 arg3)
Definition call_kernel.h:1555
void *(* voidFunction_fuintt)(float *arg1, unsigned int arg2, unsigned int arg3)
Definition call_kernel.h:101
void *(* voidFunction_three_u)(unsigned arg, unsigned arg2, unsigned arg3)
Definition call_kernel.h:77
void ESBMC_verify_kernel__fuintt(void *(*kernel)(float *, unsigned int, unsigned int), int blocks, int threads, void *arg1, unsigned int arg2, unsigned int arg3)
Definition call_kernel.h:886
void ESBMC_verify_kernel_i(RET *kernel, BLOCK blocks, THREAD threads, T1 arg, T2 arg2)
Definition call_kernel.h:1149
Targ_iuull dev_three_iuull
Definition call_kernel.h:360
void * ESBMC_execute_kernel_ffloat(void *args)
Definition call_kernel.h:442
void ESBMC_verify_kernel_with_three_args_iuull(void *(*kernel)(int *, unsigned int *, unsigned long long int *), int blocks, int threads, void *arg1, void *arg2, void *arg3)
Definition call_kernel.h:975
void __cudaCheckKernelArg(T)
Definition call_kernel.h:41
void * ESBMC_execute_kernel_three_iuull(void *args)
Definition call_kernel.h:534
int blockGlobal
Definition call_kernel.h:13
void * ESBMC_execute_kernel_three_u(void *args)
Definition call_kernel.h:425
void ESBMC_verify_kernel_with_four__args_i_ui_ull_f(void *(*kernel)(int *, unsigned int *, unsigned long long int *, float *), int blocks, int threads, void *arg1, void *arg2, void *arg3, void *arg4)
Definition call_kernel.h:1003
void * ESBMC_execute_kernel_float(void *args)
Definition call_kernel.h:434
void *(* voidFunction_fuintint)(float *arg1, unsigned int arg2, int arg3)
Definition call_kernel.h:106
void ESBMC_verify_kernel__intt(void *(*kernel)(int *, int), int blocks, int threads, void *arg1, int arg2)
Definition call_kernel.h:864
void ESBMC_verify_kernel_float(void *(*kernel)(float *), int blocks, int threads, void *arg1)
Definition call_kernel.h:727
Targ_intt dev_intt
Definition call_kernel.h:344
Targ_fint dev_fint
Definition call_kernel.h:358
struct arg_struct_fuintt Targ_fuintt
Definition call_kernel.h:319
void * ESBMC_execute_kernel_two_u(void *args)
Definition call_kernel.h:417
void ESBMC_verify_kernel(RET *kernel, BLOCK blocks, THREAD threads)
Definition call_kernel.h:1056
Targ2_i dev_two_i
Definition call_kernel.h:338
void ESBMC_verify_kernel_with_two_args_u(void *(*kernel)(unsigned int *, int *), int blocks, int threads, void *arg1, void *arg2)
Definition call_kernel.h:683
void ESBMC_verify_kernel_with_two_args_i(void *(*kernel)(int, int), int blocks, int threads, int arg1, int arg2)
Definition call_kernel.h:645
struct arg_struct_no_params Targ_no_params
Definition call_kernel.h:298
void *(* voidFunction_two)(int *arg, int *arg2)
Definition call_kernel.h:67
unsigned int n_threads
Definition call_kernel.h:330
struct arg_struct_d1 Targ_d1
Definition call_kernel.h:315
void ESBMC_verify_kernel_with_two_args(void *(*kernel)(int *, int *), int blocks, int threads, void *arg1, void *arg2)
Definition call_kernel.h:598
struct arg_struct_fuintint Targ_fuintint
Definition call_kernel.h:322
struct arg_struct1 Targ1
Definition call_kernel.h:300
void __cudaCheckKernelArgs(Ts... args)
Definition call_kernel.h:58
struct arg_struct_fuint Targ_fuint
Definition call_kernel.h:320
void ESBMC_verify_kernel_d2(void *(*kernel)(double, int), int blocks, int threads, double arg1, int arg2)
Definition call_kernel.h:819
void * ESBMC_execute_kernel_two_i(void *args)
Definition call_kernel.h:400
void *(* voidFunction_d1)(double *arg1)
Definition call_kernel.h:92
void *(* voidFunction_f5i2)(float *arg1, float *arg2, float *arg3, float *arg4, float *arg5, int arg6, int arg7)
Definition call_kernel.h:82
Targ_f5i2 dev_f5i2
Definition call_kernel.h:348
Targ_d2 dev_d2
Definition call_kernel.h:351
void ESBMC_verify_kernel_with_one_arg(void *(*kernel)(int *), int blocks, int threads, void *arg1)
Definition call_kernel.h:577
Targ_c3 dev_c3
Definition call_kernel.h:352
void ESBMC_verify_kernel__fint(void *(*kernel)(float *, int), int blocks, int threads, void *arg1, int arg2)
Definition call_kernel.h:954
Targ1 dev_one
Definition call_kernel.h:335
void *(* voidFunction_fuint)(float *arg1, unsigned int arg2)
Definition call_kernel.h:102
Targ_float dev_float
Definition call_kernel.h:346
void *(* voidFunction_fint)(float *arg1, int arg2)
Definition call_kernel.h:107
void *(* voidFunction_one)(int *arg)
Definition call_kernel.h:66
void *(* voidFunction_i_ui_ull_f)(int *arg1, unsigned int *arg2, unsigned long long int *arg3, float *arg4)
Definition call_kernel.h:116
struct arg_struct2 Targ2
Definition call_kernel.h:301
void ESBMC_verify_kernel_d1(void *(*kernel)(double *), int blocks, int threads, void *arg1)
Definition call_kernel.h:801
void * ESBMC_execute_kernel_four_i_ui_ull_f(void *args)
Definition call_kernel.h:543
Targ dev_three
Definition call_kernel.h:334
void *(* voidFunction_no_params)()
Definition call_kernel.h:65
void ESBMC_verify_kernel_with_three_args(void *(*kernel)(int *, int *, int *), int blocks, int threads, void *arg1, void *arg2, void *arg3)
Definition call_kernel.h:619
struct arg_struct_ffloat Targ_ffloat
Definition call_kernel.h:312
void * ESBMC_execute_kernel_fuint(void *args)
Definition call_kernel.h:508
struct arg_struct_u3 Targ_u3
Definition call_kernel.h:307
void ESBMC_verify_kernel_four(RET *kernel, BLOCK blocks, THREAD threads, T1 arg, T2 arg2, T3 arg3, T4 arg4)
Definition call_kernel.h:1592
struct arg_struct_d2 Targ_d2
Definition call_kernel.h:316
void * ESBMC_execute_kernel_d2(void *args)
Definition call_kernel.h:474
void * ESBMC_execute_kernel_ui(void *args)
Definition call_kernel.h:556
void *(* voidFunction_d2)(double arg1, int arg2)
Definition call_kernel.h:93
void *(* voidFunction_one_u)(uint4 *arg)
Definition call_kernel.h:74
unsigned int __cudaPeerIndex(int device, int peer)
Definition call_kernel.h:35
void *(* voidFunction_two_i)(int arg, int arg2)
Definition call_kernel.h:71
struct arg_struct2_i Targ2_i
Definition call_kernel.h:303
void ESBMC_verify_kernel_c3(void *(*kernel)(char *, char *, char *), int blocks, int threads, void *arg1, void *arg2, void *arg3)
Definition call_kernel.h:838
void * ESBMC_execute_kernel_f5i2(void *args)
Definition call_kernel.h:450
void * ESBMC_execute_kernel_no_params(void *args)
Definition call_kernel.h:367
struct arg_struct_u2 Targ_u2
Definition call_kernel.h:306
void ESBMC_verify_kernel_ffloat(void *(*kernel)(float *, float), int blocks, int threads, void *arg1, float arg2)
Definition call_kernel.h:745
void ESBMC_verify_kernel_f(RET *kernel, BLOCK blocks, THREAD threads, T1 arg, T2 arg2)
Definition call_kernel.h:1251
Targ_u2 dev_two_u
Definition call_kernel.h:341
Targ_i_ui_ull_f dev_four_i_ui_ull_f
Definition call_kernel.h:362
struct arg_struct_c3 Targ_c3
Definition call_kernel.h:317
int __cudaChooseDeviceCount()
Definition call_kernel.h:20
void * ESBMC_execute_kernel_intt(void *args)
Definition call_kernel.h:491
struct arg_struct Targ
Definition call_kernel.h:299
void ESBMC_verify_kernel_ui(RET *kernel, BLOCK blocks, THREAD threads, T1 arg)
Definition call_kernel.h:1623
Targ_fuint dev_fuint
Definition call_kernel.h:355
void ESBMC_verify_kernel_fuintt(RET *kernel, BLOCK blocks, THREAD threads, T1 arg, T2 arg2, T3 arg3)
Definition call_kernel.h:1445
void ESBMC_verify_kernel__fuintint(void *(*kernel)(float *, unsigned int, int), int blocks, int threads, void *arg1, unsigned int arg2, int arg3)
Definition call_kernel.h:931
__thread int __cudaCurrentDevice
Definition call_kernel.h:29
struct arg_struct1_ui Targ1_ui
Definition call_kernel.h:328
void * ESBMC_execute_kernel_fuintt(void *args)
Definition call_kernel.h:500
void assignIndexes()
Definition device_launch_parameters.h:39
dim3 blockDim
Definition device_launch_parameters.h:24
dim3 gridDim
Definition device_launch_parameters.h:26
#define T
Definition exp2f.c:24
Definition float.py:1
Definition int.py:1
#define NULL
Definition pthread.h:32
unsigned long int pthread_t
Definition pthread.h:41
int pthread_join(pthread_t __th, void **__thread_return)
int pthread_create(pthread_t *__restrict __newthread, __const pthread_attr_t *__restrict __attr, void *(*__start_routine)(void *), void *__restrict __arg)
struct mapping_t_fast __attribute__
Definition pthread_lib.c:86
Definition call_kernel.h:293
unsigned int * a
Definition call_kernel.h:294
Definition call_kernel.h:141
int * a
Definition call_kernel.h:142
Definition call_kernel.h:155
int a
Definition call_kernel.h:156
int b
Definition call_kernel.h:157
Definition call_kernel.h:147
int * a
Definition call_kernel.h:148
int * b
Definition call_kernel.h:149
Definition call_kernel.h:223
char * c
Definition call_kernel.h:226
char * b
Definition call_kernel.h:225
char * a
Definition call_kernel.h:224
Definition call_kernel.h:210
double * a
Definition call_kernel.h:211
Definition call_kernel.h:216
int b
Definition call_kernel.h:218
double a
Definition call_kernel.h:217
Definition call_kernel.h:198
int g
Definition call_kernel.h:205
float * c
Definition call_kernel.h:201
float * e
Definition call_kernel.h:203
int f
Definition call_kernel.h:204
float * b
Definition call_kernel.h:200
float * a
Definition call_kernel.h:199
float * d
Definition call_kernel.h:202
Definition call_kernel.h:191
float b
Definition call_kernel.h:193
float * a
Definition call_kernel.h:192
Definition call_kernel.h:266
float * a
Definition call_kernel.h:267
int b
Definition call_kernel.h:268
Definition call_kernel.h:185
float * a
Definition call_kernel.h:186
Definition call_kernel.h:249
float * a
Definition call_kernel.h:250
unsigned int b
Definition call_kernel.h:251
Definition call_kernel.h:258
unsigned int b
Definition call_kernel.h:260
int c
Definition call_kernel.h:261
float * a
Definition call_kernel.h:259
Definition call_kernel.h:241
float * a
Definition call_kernel.h:242
unsigned int c
Definition call_kernel.h:244
unsigned int b
Definition call_kernel.h:243
Definition call_kernel.h:283
unsigned int * b
Definition call_kernel.h:285
unsigned long long int * c
Definition call_kernel.h:286
float * d
Definition call_kernel.h:287
int * a
Definition call_kernel.h:284
Definition call_kernel.h:232
int b
Definition call_kernel.h:234
int * a
Definition call_kernel.h:233
Definition call_kernel.h:274
unsigned int * b
Definition call_kernel.h:276
unsigned long long int * c
Definition call_kernel.h:277
int * a
Definition call_kernel.h:275
Definition call_kernel.h:128
Definition call_kernel.h:163
uint4 * a
Definition call_kernel.h:164
Definition call_kernel.h:169
int * b
Definition call_kernel.h:171
unsigned int * a
Definition call_kernel.h:170
Definition call_kernel.h:176
unsigned a
Definition call_kernel.h:177
unsigned b
Definition call_kernel.h:178
unsigned c
Definition call_kernel.h:179
Definition call_kernel.h:133
int * c
Definition call_kernel.h:136
int * a
Definition call_kernel.h:134
int * b
Definition call_kernel.h:135
int nondet_int(void)
__device_builtin__ struct _uint4 uint4
Definition vector_types.h:335
__device_builtin__ struct __dim3 dim3
Definition vector_types.h:395