[all-commits] [llvm/llvm-project] 52b34d: [mlir][PDLL] Add an initial language server for PDLL

River Riddle via All-commits all-commits at lists.llvm.org
Sat Mar 19 13:29:35 PDT 2022


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 52b34df9d670e948a97dd72b8b5a426d7b3007c7
      https://github.com/llvm/llvm-project/commit/52b34df9d670e948a97dd72b8b5a426d7b3007c7
  Author: River Riddle <riddleriver at gmail.com>
  Date:   2022-03-19 (Sat, 19 Mar 2022)

  Changed paths:
    M mlir/include/mlir/Tools/PDLL/AST/Nodes.h
    A mlir/include/mlir/Tools/mlir-pdll-lsp-server/MlirPdllLspServerMain.h
    M mlir/lib/Tools/CMakeLists.txt
    M mlir/lib/Tools/PDLL/AST/Nodes.cpp
    M mlir/lib/Tools/lsp-server-support/Protocol.h
    M mlir/lib/Tools/mlir-lsp-server/MLIRServer.cpp
    A mlir/lib/Tools/mlir-pdll-lsp-server/CMakeLists.txt
    A mlir/lib/Tools/mlir-pdll-lsp-server/LSPServer.cpp
    A mlir/lib/Tools/mlir-pdll-lsp-server/LSPServer.h
    A mlir/lib/Tools/mlir-pdll-lsp-server/MlirPdllLspServerMain.cpp
    A mlir/lib/Tools/mlir-pdll-lsp-server/PDLLServer.cpp
    A mlir/lib/Tools/mlir-pdll-lsp-server/PDLLServer.h
    M mlir/test/CMakeLists.txt
    A mlir/test/mlir-pdll-lsp-server/definition-split-file.test
    A mlir/test/mlir-pdll-lsp-server/definition.test
    A mlir/test/mlir-pdll-lsp-server/exit-eof.test
    A mlir/test/mlir-pdll-lsp-server/exit-with-shutdown.test
    A mlir/test/mlir-pdll-lsp-server/exit-without-shutdown.test
    A mlir/test/mlir-pdll-lsp-server/initialize-params-invalid.test
    A mlir/test/mlir-pdll-lsp-server/initialize-params.test
    A mlir/test/mlir-pdll-lsp-server/references.test
    M mlir/tools/CMakeLists.txt
    A mlir/tools/mlir-pdll-lsp-server/CMakeLists.txt
    A mlir/tools/mlir-pdll-lsp-server/mlir-pdll-lsp-server.cpp
    M mlir/utils/vscode/package-lock.json
    M mlir/utils/vscode/package.json
    A mlir/utils/vscode/pdll-grammar.json
    A mlir/utils/vscode/pdll-language-configuration.json
    M mlir/utils/vscode/src/configWatcher.ts
    M mlir/utils/vscode/src/extension.ts
    M mlir/utils/vscode/src/mlirContext.ts

  Log Message:
  -----------
  [mlir][PDLL] Add an initial language server for PDLL

This commits adds a basic language server for PDLL to enable providing
language features in IDEs such as VSCode. This initial commit only
adds support for tracking definitions, references, and diagnostics, but
followup commits will build upon this to provide more significant behavior.

In addition to the server, this commit also updates mlir-vscode to support
the PDLL language and invoke the server.

Differential Revision: https://reviews.llvm.org/D121541


  Commit: 41ae211458bd22324f4c65fd9da035c01395cd0f
      https://github.com/llvm/llvm-project/commit/41ae211458bd22324f4c65fd9da035c01395cd0f
  Author: River Riddle <riddleriver at gmail.com>
  Date:   2022-03-19 (Sat, 19 Mar 2022)

  Changed paths:
    M mlir/lib/Tools/mlir-pdll-lsp-server/LSPServer.cpp
    M mlir/lib/Tools/mlir-pdll-lsp-server/PDLLServer.cpp
    M mlir/lib/Tools/mlir-pdll-lsp-server/PDLLServer.h
    A mlir/test/mlir-pdll-lsp-server/hover.test
    M mlir/test/mlir-pdll-lsp-server/initialize-params.test

  Log Message:
  -----------
  [mlir][PDLL] Add hover support to the PDLL language server

This adds support for providing information when hovering over
operation names, variables, patters, constraints, and rewrites.

Differential Revision: https://reviews.llvm.org/D121542


  Commit: 8dd4272ca2f5ce7c793f3c6f9e468913d768700d
      https://github.com/llvm/llvm-project/commit/8dd4272ca2f5ce7c793f3c6f9e468913d768700d
  Author: River Riddle <riddleriver at gmail.com>
  Date:   2022-03-19 (Sat, 19 Mar 2022)

  Changed paths:
    M mlir/lib/Tools/mlir-pdll-lsp-server/LSPServer.cpp
    M mlir/lib/Tools/mlir-pdll-lsp-server/PDLLServer.cpp
    M mlir/lib/Tools/mlir-pdll-lsp-server/PDLLServer.h
    A mlir/test/mlir-pdll-lsp-server/document-symbols.test
    M mlir/test/mlir-pdll-lsp-server/initialize-params.test

  Log Message:
  -----------
  [mlir][PDLL] Add symbol support to the PDLL language server

This adds support for documenting the top-level "symbols",
e.g. patterns, constraints, rewrites, etc., within a PDLL file.

Differential Revision: https://reviews.llvm.org/D121543


  Commit: 008de486f706ef25a66d4384c2c3af1ed86e680e
      https://github.com/llvm/llvm-project/commit/008de486f706ef25a66d4384c2c3af1ed86e680e
  Author: River Riddle <riddleriver at gmail.com>
  Date:   2022-03-19 (Sat, 19 Mar 2022)

  Changed paths:
    M mlir/include/mlir/Tools/PDLL/ODS/Context.h
    A mlir/include/mlir/Tools/PDLL/Parser/CodeComplete.h
    M mlir/include/mlir/Tools/PDLL/Parser/Parser.h
    M mlir/lib/Tools/PDLL/Parser/CMakeLists.txt
    A mlir/lib/Tools/PDLL/Parser/CodeComplete.cpp
    M mlir/lib/Tools/PDLL/Parser/Lexer.cpp
    M mlir/lib/Tools/PDLL/Parser/Lexer.h
    M mlir/lib/Tools/PDLL/Parser/Parser.cpp
    M mlir/lib/Tools/lsp-server-support/Protocol.cpp
    M mlir/lib/Tools/lsp-server-support/Protocol.h
    M mlir/lib/Tools/mlir-pdll-lsp-server/LSPServer.cpp
    M mlir/lib/Tools/mlir-pdll-lsp-server/PDLLServer.cpp
    M mlir/lib/Tools/mlir-pdll-lsp-server/PDLLServer.h
    A mlir/test/mlir-pdll-lsp-server/completion.test
    M mlir/test/mlir-pdll-lsp-server/initialize-params.test

  Log Message:
  -----------
  [mlir][PDLL] Add code completion to the PDLL language server

This commit adds code completion support to the language server,
and initially supports providing completions for: Member access,
attributes/constraint/dialect/operation names, and pattern metadata.

Differential Revision: https://reviews.llvm.org/D121544


  Commit: 469c58944d4f0f990ca8ee88ebcc37624801a36c
      https://github.com/llvm/llvm-project/commit/469c58944d4f0f990ca8ee88ebcc37624801a36c
  Author: River Riddle <riddleriver at gmail.com>
  Date:   2022-03-19 (Sat, 19 Mar 2022)

  Changed paths:
    M mlir/include/mlir/Tools/PDLL/Parser/CodeComplete.h
    M mlir/lib/Tools/PDLL/Parser/Parser.cpp
    M mlir/lib/Tools/lsp-server-support/Protocol.cpp
    M mlir/lib/Tools/lsp-server-support/Protocol.h
    M mlir/lib/Tools/mlir-pdll-lsp-server/LSPServer.cpp
    M mlir/lib/Tools/mlir-pdll-lsp-server/PDLLServer.cpp
    M mlir/lib/Tools/mlir-pdll-lsp-server/PDLLServer.h
    M mlir/test/mlir-pdll-lsp-server/initialize-params.test
    A mlir/test/mlir-pdll-lsp-server/signature-help.test

  Log Message:
  -----------
  [mlir][PDLL] Add signature help to the PDLL language server

This commit adds signature support to the language server,
and initially supports providing help for: operation operands and results,
and constraint/rewrite calls.

Differential Revision: https://reviews.llvm.org/D121545


  Commit: 9595f3568ade92509d5f1e0d45066e31def762a6
      https://github.com/llvm/llvm-project/commit/9595f3568ade92509d5f1e0d45066e31def762a6
  Author: River Riddle <riddleriver at gmail.com>
  Date:   2022-03-19 (Sat, 19 Mar 2022)

  Changed paths:
    M mlir/docs/PDLL.md
    M mlir/include/mlir/Dialect/PDL/IR/PDLOps.td
    M mlir/include/mlir/Dialect/PDLInterp/IR/PDLInterpOps.td
    M mlir/include/mlir/IR/PatternMatch.h
    M mlir/lib/Conversion/PDLToPDLInterp/PDLToPDLInterp.cpp
    M mlir/lib/Conversion/PDLToPDLInterp/Predicate.h
    M mlir/lib/Conversion/PDLToPDLInterp/PredicateTree.cpp
    M mlir/lib/Dialect/PDL/IR/PDL.cpp
    M mlir/lib/Rewrite/ByteCode.cpp
    M mlir/lib/Tools/PDLL/CodeGen/CPPGen.cpp
    M mlir/lib/Tools/PDLL/CodeGen/MLIRGen.cpp
    M mlir/python/mlir/dialects/_pdl_ops_ext.py
    M mlir/test/Conversion/PDLToPDLInterp/pdl-to-pdl-interp-matcher.mlir
    M mlir/test/Conversion/PDLToPDLInterp/pdl-to-pdl-interp-rewriter.mlir
    M mlir/test/Dialect/PDL/invalid.mlir
    M mlir/test/Dialect/PDL/ops.mlir
    M mlir/test/Rewrite/pdl-bytecode.mlir
    M mlir/test/lib/Rewrite/TestPDLByteCode.cpp
    M mlir/test/mlir-pdll/CodeGen/CPP/general.pdll
    M mlir/test/python/dialects/pdl_ops.py

  Log Message:
  -----------
  [mlir:PDL] Remove the ConstantParams support from native Constraints/Rewrites

This support has never really worked well, and is incredibly clunky to
use (it effectively creates two argument APIs), and clunky to generate (it isn't
clear how we should actually expose this from PDL frontends). Treating these
as just attribute arguments is much much cleaner in every aspect of the stack.
If we need to optimize lots of constant parameters, it would be better to
investigate internal representation optimizations (e.g. batch attribute creation),
that do not affect the user (we want a clean external API).

Differential Revision: https://reviews.llvm.org/D121569


Compare: https://github.com/llvm/llvm-project/compare/1a820ff03910...9595f3568ade


More information about the All-commits mailing list