def gen_user_kernel(self, block: NNToolCodeBlock, ukname: str, kname: str): block.write("int {0}(char *Name) {{", ukname) block.indent() block.write("Kernel_T *Kernel = UserKernel(") block.indent() block.write("Name,") block.write("{0},", self.gen_iterspace()) block.write("TILE_HOR,") cargs = self.gen_cargs() block.write("CArgs({0},", len(cargs)) block.indent() for carg in cargs[:-1:]: block.write("{0},", carg) block.write("{0}", cargs[-1]) block.deindent() block.write("),") block.write("Calls(1,") block.indent() block.write("Call(\"{0}\", LOC_LOOP,", kname) block.indent() bindings = self.gen_kerbingings() block.write("Bindings({0},", len(bindings)) block.indent() for binding in bindings[:-1:]: block.write("{0},", binding) block.write("{0}", bindings[-1]) block.deindent() block.write(")") block.deindent() block.write(")") block.deindent() block.write("),") kargs = self.gen_kargs() block.write("KerArgs({0},", len(cargs)) block.indent() for karg in kargs[:-1:]: block.write("{0},", karg) block.write("{0}", kargs[-1]) block.deindent() block.write(")") block.deindent() block.write(");") block.write("if (Kernel) {{") block.indent() for kinfo in self.gen_kinfos(): block.write("{0};", kinfo) block.deindent() block.write("}}") block.write("return (Kernel!=0);") block.deindent() block.write("}}")
def gen_user_kernel(self, ukname: str, kname: str, code: CodeBlock = None): if code is None: code = CodeBlock() code.write("int {0}(char *Name) {{", ukname) code.indent() code.write("Kernel_T *Kernel = UserKernel(") code.indent() code.write("Name,") code.write("{0},", self.gen_iterspace()) code.write("TILE_HOR,") cargs = self.gen_cargs() code.write("CArgs({0},", len(cargs)) code.indent() for carg in cargs[:-1:]: code.write("{0},", carg) code.write("{0}", cargs[-1]) code.deindent() code.write("),") code.write("Calls(1,") code.indent() code.write("Call(\"{0}\", LOC_LOOP,", kname) code.indent() bindings = self.gen_kerbingings() code.write("Bindings({0},", len(bindings)) code.indent() for binding in bindings[:-1:]: code.write("{0},", binding) code.write("{0}", bindings[-1]) code.deindent() code.write(")") code.deindent() code.write(")") code.deindent() code.write("),") kargs = self.gen_kargs() code.write("KerArgs({0},", len(cargs)) code.indent() for karg in kargs[:-1:]: code.write("{0},", karg) code.write("{0}", kargs[-1]) code.deindent() code.write(")") code.deindent() code.write(");") code.write("if (Kernel) {{") code.indent() for kinfo in self.gen_kinfos(): code.write("{0};", kinfo) code.deindent() code.write("}}") code.write("return (Kernel!=0);") code.deindent() code.write("}}") return code