llvm-project/openmp/libomptarget/utils/generate_microtask_cases.py
Giorgis Georgakoudis a2dbfb6b72 [OpenMP] Simplify offloading parallel call codegen
This revision simplifies Clang codegen for parallel regions in OpenMP GPU target offloading and corresponding changes in libomptarget: SPMD/non-SPMD parallel calls are unified under a single `kmpc_parallel_51` runtime entry point for parallel regions (which will be commonized between target, host-side parallel regions), data sharing is internalized to the runtime. Tests have been auto-generated using `update_cc_test_checks.py`. Also, the revision contains changes to OpenMPOpt for remark creation on target offloading regions.

Reviewed By: jdoerfert, Meinersbur

Differential Revision: https://reviews.llvm.org/D95976
2021-04-21 18:46:07 -07:00

32 lines
944 B
Python
Executable File

#!/usr/bin/env python3
import argparse
def main():
parser = argparse.ArgumentParser()
parser.add_argument('--max_args', type=int, help='Max number of arguments to generate case statements for', required=True)
parser.add_argument('--output', help='Output header file to include', required=True)
args = parser.parse_args()
output=''
for i in range(args.max_args+1):
output += 'case %d:\n'%(i)
output += '((void (*)(kmp_int32 *, kmp_int32 *\n'
for j in range(i):
output += ', void *'
if (j+1)%4 == 0:
output += '\n'
output += '))fn)(&global_tid, &bound_tid\n'
for j in range(i):
output += ', args[%d]'%(j)
if (j+1)%4 == 0:
output += '\n'
output += ');\n'
output += 'break;\n'
with open(args.output, 'w') as f:
print(output, file=f)
if __name__ == "__main__":
main()