Using Tablegen to Generate Op Documentation (#74)
* Add dialect documentation. * Add a step in our CI to ensure documentation is up-to-date. * Add dialect documentation. * Fix config file mistake, using multi-line commands. * Fix a bug in DocCheck.
This commit is contained in:
		
							parent
							
								
									2c7046ff5f
								
							
						
					
					
						commit
						181803ebf4
					
				|  | @ -44,6 +44,13 @@ jobs: | |||
|       - run: | ||||
|           name: Run DocCheck | ||||
|           command: cd ONNF/build && cmake --build . --target check-doc | ||||
|       - run: | ||||
|           name: Ensure tablegen documentation is up-to-date | ||||
|           command: | | ||||
|             cd ONNF/build | ||||
|             cmake --build . --target onnf-doc | ||||
|             # Check whether dialect documentation is up-to-date. | ||||
|             diff doc/Dialects ../doc/Dialects | ||||
|       - run: | ||||
|           name: Print the Current Time | ||||
|           command: date | ||||
|  |  | |||
							
								
								
									
										20
									
								
								MLIR.cmake
								
								
								
								
							
							
						
						
									
										20
									
								
								MLIR.cmake
								
								
								
								
							|  | @ -207,3 +207,23 @@ add_executable(mlir-tblgen IMPORTED) | |||
| set_property(TARGET mlir-tblgen | ||||
|         PROPERTY IMPORTED_LOCATION ${LLVM_PROJ_BUILD}/bin/mlir-tblgen) | ||||
| set(MLIR_TABLEGEN_EXE mlir-tblgen) | ||||
| 
 | ||||
| # Add a dialect used by ONNF and copy the generated operation | ||||
| # documentation to the desired places. | ||||
| # c.f. https://github.com/llvm/llvm-project/blob/e298e216501abf38b44e690d2b28fc788ffc96cf/mlir/CMakeLists.txt#L11 | ||||
| function(add_onnf_dialect_doc dialect dialect_tablegen_file) | ||||
|   # Generate Dialect Documentation | ||||
|   set(LLVM_TARGET_DEFINITIONS ${dialect_tablegen_file}) | ||||
|   onnf_tablegen(${dialect}.md -gen-op-doc) | ||||
|   set(GEN_DOC_FILE ${ONNF_BIN_ROOT}/doc/Dialects/${dialect}.md) | ||||
|   add_custom_command( | ||||
|           OUTPUT ${GEN_DOC_FILE} | ||||
|           COMMAND ${CMAKE_COMMAND} -E copy | ||||
|           ${CMAKE_CURRENT_BINARY_DIR}/${dialect}.md | ||||
|           ${GEN_DOC_FILE} | ||||
|           DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${dialect}.md) | ||||
|   add_custom_target(${dialect}DocGen DEPENDS ${GEN_DOC_FILE}) | ||||
|   add_dependencies(onnf-doc ${dialect}DocGen) | ||||
| endfunction() | ||||
| 
 | ||||
| add_custom_target(onnf-doc) | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							|  | @ -44,7 +44,15 @@ class Directive(object): | |||
|         :param directive_config: a list used to output parsed directive configuration. | ||||
|         :return: parse result. | ||||
|         """ | ||||
|         line = ctx.doc_file.next_non_empty_line() | ||||
|         try: | ||||
|             line = ctx.doc_file.next_non_empty_line() | ||||
|         except RuntimeError as e: | ||||
|             # Do not raise exception when next non-empty line | ||||
|             # does not exist. Instead, return failure. | ||||
|             if str(e) != "Enf of file.": | ||||
|                 raise | ||||
|             return failure() | ||||
| 
 | ||||
|         matches = self.ext_to_patterns[ctx.doc_file_ext()].findall(line) | ||||
|         if len(matches) > 1: | ||||
|             raise ValueError("more than one directives in a line") | ||||
|  |  | |||
|  | @ -39,8 +39,10 @@ add_dependencies(compiler gen_onnx_combine) | |||
| set(LLVM_TARGET_DEFINITIONS dialect/onnx/onnx.td) | ||||
| onnf_tablegen(onnx.hpp.inc -gen-op-decls "-I${CMAKE_SOURCE_DIR}/compiler/pass") | ||||
| onnf_tablegen(onnx.cpp.inc -gen-op-defs "-I${CMAKE_SOURCE_DIR}/compiler/pass") | ||||
| set(GEN_DOC_FILE ${CMAKE_BINARY_DIR}/docs/Dialects/onnx.md) | ||||
| add_public_tablegen_target(gen_onnx) | ||||
| add_dependencies(compiler gen_onnx) | ||||
| add_onnf_dialect_doc(onnx dialect/onnx/onnx.td) | ||||
| 
 | ||||
| set(LLVM_TARGET_DEFINITIONS dialect/krnl/krnl_ops.td) | ||||
| onnf_tablegen(krnl.hpp.inc -gen-op-decls) | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue