[all-commits] [llvm/llvm-project] c0fd5e: [mlir] Add traits for verifying the number of succ...

River Riddle via All-commits all-commits at lists.llvm.org
Thu Mar 5 12:58:42 PST 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: c0fd5e657e5d38a480d65b4e8f6f7a835afd6c76
      https://github.com/llvm/llvm-project/commit/c0fd5e657e5d38a480d65b4e8f6f7a835afd6c76
  Author: River Riddle <riddleriver at gmail.com>
  Date:   2020-03-05 (Thu, 05 Mar 2020)

  Changed paths:
    M mlir/include/mlir/IR/OpDefinition.h
    M mlir/lib/Dialect/SPIRV/SPIRVOps.cpp
    M mlir/lib/Dialect/StandardOps/IR/Ops.cpp
    M mlir/lib/IR/Operation.cpp
    M mlir/lib/Target/LLVMIR/ModuleTranslation.cpp
    M mlir/test/Dialect/SPIRV/control-flow-ops.mlir
    M mlir/test/mlir-tblgen/op-decl.td
    M mlir/tools/mlir-tblgen/OpDefinitionsGen.cpp

  Log Message:
  -----------
  [mlir] Add traits for verifying the number of successors and providing relevant accessors.

This allows for simplifying OpDefGen, as well providing specializing accessors for the different successor counts. This mirrors the existing traits for operands and results.

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


  Commit: 621d7cca3751f934f991e34fe0e26187c33314f4
      https://github.com/llvm/llvm-project/commit/621d7cca3751f934f991e34fe0e26187c33314f4
  Author: River Riddle <riddleriver at gmail.com>
  Date:   2020-03-05 (Thu, 05 Mar 2020)

  Changed paths:
    M mlir/include/mlir/Analysis/CMakeLists.txt
    A mlir/include/mlir/Analysis/ControlFlowInterfaces.h
    A mlir/include/mlir/Analysis/ControlFlowInterfaces.td
    M mlir/include/mlir/Dialect/LLVMIR/LLVMDialect.h
    M mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td
    M mlir/include/mlir/Dialect/SPIRV/SPIRVControlFlowOps.td
    M mlir/include/mlir/Dialect/SPIRV/SPIRVOps.h
    M mlir/include/mlir/Dialect/StandardOps/IR/Ops.h
    M mlir/include/mlir/Dialect/StandardOps/IR/Ops.td
    M mlir/include/mlir/IR/OperationSupport.h
    M mlir/lib/Analysis/CMakeLists.txt
    A mlir/lib/Analysis/ControlFlowInterfaces.cpp
    M mlir/lib/Dialect/LLVMIR/CMakeLists.txt
    M mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp
    M mlir/lib/Dialect/SPIRV/CMakeLists.txt
    M mlir/lib/Dialect/SPIRV/SPIRVOps.cpp
    M mlir/lib/Dialect/StandardOps/CMakeLists.txt
    M mlir/lib/Dialect/StandardOps/IR/Ops.cpp
    M mlir/lib/IR/Operation.cpp
    M mlir/lib/IR/OperationSupport.cpp
    M mlir/test/lib/TestDialect/CMakeLists.txt
    M mlir/test/lib/TestDialect/TestDialect.cpp
    M mlir/test/lib/TestDialect/TestDialect.h
    M mlir/test/lib/TestDialect/TestOps.td
    M mlir/tools/mlir-tblgen/OpDefinitionsGen.cpp

  Log Message:
  -----------
  [mlir] Add a new BranchOpInterface to allow for opaquely interfacing with branching terminator operations.

This interface contains the necessary components to provide the same builtin behavior that terminators have. This will be used in future revisions to remove many of the hardcoded constraints placed on successors and successor operands. The interface initially contains three methods:

```c++
// Return a set of values corresponding to the operands for successor 'index', or None if the operands do not correspond to materialized values.
Optional<OperandRange> getSuccessorOperands(unsigned index);

// Return true if this terminator can have it's successor operands erased.
bool canEraseSuccessorOperand();

// Erase the operand of a successor. This is only valid to call if 'canEraseSuccessorOperand' returns true.
void eraseSuccessorOperand(unsigned succIdx, unsigned opIdx);
```

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


  Commit: 01f7431b5be2be7a6e2de933a4ae883a803502f6
      https://github.com/llvm/llvm-project/commit/01f7431b5be2be7a6e2de933a4ae883a803502f6
  Author: River Riddle <riddleriver at gmail.com>
  Date:   2020-03-05 (Thu, 05 Mar 2020)

  Changed paths:
    M mlir/include/mlir/Dialect/StandardOps/IR/Ops.td
    M mlir/include/mlir/Dialect/VectorOps/VectorOps.td
    M mlir/lib/Dialect/StandardOps/IR/Ops.cpp
    M mlir/lib/Dialect/VectorOps/VectorOps.cpp
    M mlir/test/Conversion/LoopsToGPU/parallel_loop.mlir
    M mlir/test/Dialect/Linalg/fusion.mlir
    M mlir/test/Dialect/Linalg/promote.mlir
    M mlir/test/Dialect/Linalg/tile.mlir
    M mlir/test/Dialect/Linalg/tile_conv.mlir
    M mlir/test/Dialect/Linalg/tile_parallel.mlir
    M mlir/test/Dialect/Linalg/transform-patterns.mlir
    M mlir/test/IR/core-ops.mlir
    M mlir/test/Transforms/canonicalize.mlir
    M mlir/tools/mlir-tblgen/OpFormatGen.cpp

  Log Message:
  -----------
  [mlir][DeclarativeParser] Add support for formatting operations with AttrSizedOperandSegments.

This attribute details the segment sizes for operand groups within the operation. This revision add support for automatically populating this attribute in the declarative parser.

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


  Commit: 988249a5060c761a37d1dff3bd260aa7770f9f99
      https://github.com/llvm/llvm-project/commit/988249a5060c761a37d1dff3bd260aa7770f9f99
  Author: River Riddle <riddleriver at gmail.com>
  Date:   2020-03-05 (Thu, 05 Mar 2020)

  Changed paths:
    M mlir/include/mlir/IR/Block.h
    M mlir/include/mlir/IR/OperationSupport.h
    M mlir/lib/Conversion/StandardToLLVM/ConvertStandardToLLVM.cpp
    M mlir/lib/Dialect/AffineOps/AffineOps.cpp
    M mlir/lib/IR/Block.cpp
    M mlir/lib/IR/OperationSupport.cpp
    M mlir/lib/Target/LLVMIR/ModuleTranslation.cpp
    M mlir/lib/Transforms/Utils/RegionUtils.cpp
    M mlir/test/Conversion/StandardToLLVM/convert-to-llvmir.mlir

  Log Message:
  -----------
  [mlir] Refactor a few users to no longer rely on the successor operand API of Operation.

The existing API for successor operands on operations is in the process of being removed. This revision simplifies a later one that completely removes the existing API.

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


  Commit: c98cff5ae4325875c416a395073a3830b52df894
      https://github.com/llvm/llvm-project/commit/c98cff5ae4325875c416a395073a3830b52df894
  Author: River Riddle <riddleriver at gmail.com>
  Date:   2020-03-05 (Thu, 05 Mar 2020)

  Changed paths:
    M mlir/include/mlir/Dialect/StandardOps/IR/Ops.td
    M mlir/include/mlir/Dialect/VectorOps/VectorOps.td
    M mlir/lib/Dialect/StandardOps/IR/Ops.cpp
    M mlir/test/mlir-tblgen/op-result.td
    M mlir/tools/mlir-tblgen/OpDefinitionsGen.cpp

  Log Message:
  -----------
  [mlir] Automatically populate `operand_segment_sizes` in the auto-generated build methods.

This greatly simplifies the requirements for builders using this mechanism for managing variadic operands.

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


  Commit: cb1777127c0f4a908c46dbbe8a948d8549427112
      https://github.com/llvm/llvm-project/commit/cb1777127c0f4a908c46dbbe8a948d8549427112
  Author: River Riddle <riddleriver at gmail.com>
  Date:   2020-03-05 (Thu, 05 Mar 2020)

  Changed paths:
    M mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td
    M mlir/include/mlir/Dialect/SPIRV/SPIRVControlFlowOps.td
    M mlir/include/mlir/Dialect/StandardOps/IR/Ops.td
    M mlir/include/mlir/IR/OpDefinition.h
    M mlir/include/mlir/IR/OpImplementation.h
    M mlir/include/mlir/IR/Operation.h
    M mlir/include/mlir/IR/OperationSupport.h
    M mlir/include/mlir/IR/UseDefLists.h
    M mlir/include/mlir/Transforms/DialectConversion.h
    M mlir/lib/Conversion/GPUToNVVM/LowerGpuOpsToNVVMOps.cpp
    M mlir/lib/Conversion/StandardToLLVM/ConvertStandardToLLVM.cpp
    M mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp
    M mlir/lib/Dialect/SPIRV/SPIRVOps.cpp
    M mlir/lib/IR/AsmPrinter.cpp
    M mlir/lib/IR/Operation.cpp
    M mlir/lib/IR/OperationSupport.cpp
    M mlir/lib/Parser/Parser.cpp
    M mlir/lib/Target/LLVMIR/ConvertFromLLVMIR.cpp
    M mlir/lib/Transforms/DialectConversion.cpp
    M mlir/lib/Transforms/Utils/RegionUtils.cpp
    M mlir/test/Dialect/SPIRV/control-flow-ops.mlir
    M mlir/test/IR/invalid.mlir
    M mlir/test/IR/parser.mlir
    M mlir/test/Transforms/canonicalize-dce.mlir
    M mlir/test/lib/TestDialect/TestOps.td
    M mlir/tools/mlir-tblgen/OpDefinitionsGen.cpp
    M mlir/tools/mlir-tblgen/OpFormatGen.cpp

  Log Message:
  -----------
  [mlir] Remove successor operands from the Operation class

Summary:
This revision removes all of the functionality related to successor operands on the core Operation class. This greatly simplifies a lot of handling of operands, as well as successors. For example, DialectConversion no longer needs a special "matchAndRewrite" for branching terminator operations.(Note, the existing method was also broken for operations with variadic successors!!)

This also enables terminator operations to define their own relationships with successor arguments, instead of the hardcoded "pass-through" behavior that exists today.

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


Compare: https://github.com/llvm/llvm-project/compare/a7c655f1480f...cb1777127c0f


More information about the All-commits mailing list