1// SPDX-License-Identifier: Apache-2.0
2// SPDX-FileCopyrightText: 2026 The Ebitengine Authors
3
4#include <stdint.h>
5#include <time.h>
6
7void write_through(uint64_t *p, uint64_t v) {
8 *p = v;
9 struct timespec start, now;
10 clock_gettime(CLOCK_MONOTONIC, &start);
11 do {
12 clock_gettime(CLOCK_MONOTONIC, &now);
13 } while ((now.tv_sec - start.tv_sec) * 1000000000L + now.tv_nsec - start.tv_nsec < 2000000L);
14}
15
16int64_t sum1_c(int64_t a1) { return a1; }
17
18int64_t sum2_c(int64_t a1, int64_t a2) { return a1 + a2; }
19
20int64_t sum3_c(int64_t a1, int64_t a2, int64_t a3) { return a1 + a2 + a3; }
21
22int64_t sum5_c(int64_t a1, int64_t a2, int64_t a3, int64_t a4, int64_t a5) {
23 return a1 + a2 + a3 + a4 + a5;
24}
25
26int64_t sum10_c(int64_t a1, int64_t a2, int64_t a3, int64_t a4, int64_t a5,
27 int64_t a6, int64_t a7, int64_t a8, int64_t a9, int64_t a10) {
28 return a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8 + a9 + a10;
29}
30
31int64_t sum14_c(int64_t a1, int64_t a2, int64_t a3, int64_t a4, int64_t a5,
32 int64_t a6, int64_t a7, int64_t a8, int64_t a9, int64_t a10,
33 int64_t a11, int64_t a12, int64_t a13, int64_t a14) {
34 return a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8 + a9 + a10 + a11 + a12 + a13 +
35 a14;
36}
37
38int64_t sum15_c(int64_t a1, int64_t a2, int64_t a3, int64_t a4, int64_t a5,
39 int64_t a6, int64_t a7, int64_t a8, int64_t a9, int64_t a10,
40 int64_t a11, int64_t a12, int64_t a13, int64_t a14,
41 int64_t a15) {
42 return a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8 + a9 + a10 + a11 + a12 + a13 +
43 a14 + a15;
44}
45
46typedef int64_t (*callback1_t)(int64_t);
47int64_t call_callback1(callback1_t cb, int64_t a1) { return cb(a1); }
48
49typedef int64_t (*callback2_t)(int64_t, int64_t);
50int64_t call_callback2(callback2_t cb, int64_t a1, int64_t a2) {
51 return cb(a1, a2);
52}
53
54typedef int64_t (*callback3_t)(int64_t, int64_t, int64_t);
55int64_t call_callback3(callback3_t cb, int64_t a1, int64_t a2, int64_t a3) {
56 return cb(a1, a2, a3);
57}
58
59typedef int64_t (*callback5_t)(int64_t, int64_t, int64_t, int64_t, int64_t);
60int64_t call_callback5(callback5_t cb, int64_t a1, int64_t a2, int64_t a3,
61 int64_t a4, int64_t a5) {
62 return cb(a1, a2, a3, a4, a5);
63}
64
65typedef int64_t (*callback10_t)(int64_t, int64_t, int64_t, int64_t, int64_t,
66 int64_t, int64_t, int64_t, int64_t, int64_t);
67int64_t call_callback10(callback10_t cb, int64_t a1, int64_t a2, int64_t a3,
68 int64_t a4, int64_t a5, int64_t a6, int64_t a7,
69 int64_t a8, int64_t a9, int64_t a10) {
70 return cb(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10);
71}
72
73typedef int64_t (*callback14_t)(int64_t, int64_t, int64_t, int64_t, int64_t,
74 int64_t, int64_t, int64_t, int64_t, int64_t,
75 int64_t, int64_t, int64_t, int64_t);
76int64_t call_callback14(callback14_t cb, int64_t a1, int64_t a2, int64_t a3,
77 int64_t a4, int64_t a5, int64_t a6, int64_t a7,
78 int64_t a8, int64_t a9, int64_t a10, int64_t a11,
79 int64_t a12, int64_t a13, int64_t a14) {
80 return cb(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14);
81}
82
83typedef int64_t (*callback15_t)(int64_t, int64_t, int64_t, int64_t, int64_t,
84 int64_t, int64_t, int64_t, int64_t, int64_t,
85 int64_t, int64_t, int64_t, int64_t, int64_t);
86int64_t call_callback15(callback15_t cb, int64_t a1, int64_t a2, int64_t a3,
87 int64_t a4, int64_t a5, int64_t a6, int64_t a7,
88 int64_t a8, int64_t a9, int64_t a10, int64_t a11,
89 int64_t a12, int64_t a13, int64_t a14, int64_t a15) {
90 return cb(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15);
91}