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.
 | 
			
		||||
        """
 | 
			
		||||
        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