xref: /llvm-project/offload/utils/generate_microtask_cases.py (revision 330d8983d25d08580fc1642fea48b2473f47a9da)
1#!/usr/bin/env python3
2
3import argparse
4
5
6def main():
7    parser = argparse.ArgumentParser()
8    parser.add_argument(
9        "--max_args",
10        type=int,
11        help="Max number of arguments to generate case statements for",
12        required=True,
13    )
14    parser.add_argument("--output", help="Output header file to include", required=True)
15    args = parser.parse_args()
16
17    output = ""
18    for i in range(args.max_args + 1):
19        output += "case %d:\n" % (i)
20        output += "((void (*)(kmp_int32 *, kmp_int32 *\n"
21        for j in range(i):
22            output += ", void *"
23            if (j + 1) % 4 == 0:
24                output += "\n"
25        output += "))fn)(&global_tid, &bound_tid\n"
26        for j in range(i):
27            output += ", args[%d]" % (j)
28            if (j + 1) % 4 == 0:
29                output += "\n"
30        output += ");\n"
31        output += "break;\n"
32
33    with open(args.output, "w") as f:
34        print(output, file=f)
35
36
37if __name__ == "__main__":
38    main()
39