MMatthias Springer[mlir][transform] Add ForeachOp to transform dialect
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
[mlir][AMDGPU] Add lds_barrier op The lds_barrier op allows workgroups to wait at a barrier for operations to/from their local data store (LDS) to complete without incurring the performance penalties of a full memory fence. Reviewed By: nirvedhmeshram Differential Revision: https://reviews.llvm.org/D129522 | 3 年前 | |
[mlir][NFC] Update textual references of func to func.func in AMX/Arithmetic/ArmSVE/Async tests The special case parsing of func operations is being removed. | 4 年前 | |
[MLIR] Add affine.if canonicalization to compose in affine.apply ops Add affine.if canonicalization to compose affine.apply ops into its set and operands. This eliminates affine.apply ops feeding into affine.if ops. Differential Revision: https://reviews.llvm.org/D130242 | 3 年前 | |
Revert "[mlir][Arithmetic] Add arith.delinearize_index operation" This reverts commit 535b507ba58e8b5f604d53ffc961be1456d229a7. | 3 年前 | |
[mlir][NFC] Update textual references of func to func.func in AMX/Arithmetic/ArmSVE/Async tests The special case parsing of func operations is being removed. | 4 年前 | |
[mlir][NFC] Update textual references of func to func.func in AMX/Arithmetic/ArmSVE/Async tests The special case parsing of func operations is being removed. | 4 年前 | |
[mlir][NFC] Update textual references of func to func.func in AMX/Arithmetic/ArmSVE/Async tests The special case parsing of func operations is being removed. | 4 年前 | |
[mlir][Linalg] Add a Transform dialect NavigationOp op to match a list of ops or an interface. This operation is a NavigationOp that simplifies the writing of transform IR. Since there is no way of refering to an interface by name, the current implementation uses an EnumAttr and depends on the interfaces it supports. In the future, it would be worthwhile to remove this dependence and generalize. Differential Revision: https://reviews.llvm.org/D130267 | 3 年前 | |
[mlir][NFC] Update textual references of func to func.func in Bufferization/Complex/EmitC/CF/Func/GPU tests The special case parsing of func operations is being removed. | 4 年前 | |
[mlir][complex] Inverse canonicalization between exp and log We can canonicalize consecutive complex.exp and complex.log which are inverse functions each other. Reviewed By: bixia Differential Revision: https://reviews.llvm.org/D128966 | 3 年前 | |
[MLIR Parser] Improve QoI for "expected token" errors A typical problem with missing a token is that the missing token is at the end of a line. The problem with this is that the error message gets reported on the start of the following line (which is where the next / invalid token is) which can be confusing. Handle this by noticing this case and backing up to the end of the previous line. Differential Revision: https://reviews.llvm.org/D125295 | 4 年前 | |
[mlir] Data layout for integer and float types Add support for integer and float types into the data layout subsystem with default logic similar to LLVM IR. Given the flexibility of the sybsystem, the logic can be easily overwritten by operations if necessary. This provides the connection necessary, e.g., for the GPU target where alignment requirements for integers and floats differ from those provided by default (although still compatible with the LLVM IR model). Previously, it was impossible to use non-default alignment requirements for integer and float types, which could lead to incorrect address and size calculations when targeting GPUs. Depends On D120737 Reviewed By: wsmoses Differential Revision: https://reviews.llvm.org/D120739 | 4 年前 | |
[mlir:Parser] Don't use strings for the "ugly" form of Attribute/Type syntax This commit refactors the syntax of "ugly" attribute/type formats to not use strings for wrapping. This means that moving forward attirbutes and type formats will always need to be in some recognizable form, i.e. if they use incompatible characters they will need to manually wrap those in a string, the framework will no longer do it automatically. This has the benefit of greatly simplifying how parsing attributes/types work, given that we currently rely on some extremely complicated nested parser logic which is quite problematic for a myriad of reasons; unecessary complexity(we create a nested source manager/lexer/etc.), diagnostic locations can be off/wrong given string escaping, etc. Differential Revision: https://reviews.llvm.org/D118505 | 3 年前 | |
[mlir][NFC] Split out various tests from IR/invalid.mlir This file contains a huge number of tests that should really be in different dialect/files. It is monolothic because of the legacy surrounding the old standard dialect, affine operations, etc. Splitting this up makes the tests much more maintainable given that they are now group with other similar tests. | 3 年前 | |
[mlir:Parser] Don't use strings for the "ugly" form of Attribute/Type syntax This commit refactors the syntax of "ugly" attribute/type formats to not use strings for wrapping. This means that moving forward attirbutes and type formats will always need to be in some recognizable form, i.e. if they use incompatible characters they will need to manually wrap those in a string, the framework will no longer do it automatically. This has the benefit of greatly simplifying how parsing attributes/types work, given that we currently rely on some extremely complicated nested parser logic which is quite problematic for a myriad of reasons; unecessary complexity(we create a nested source manager/lexer/etc.), diagnostic locations can be off/wrong given string escaping, etc. Differential Revision: https://reviews.llvm.org/D118505 | 3 年前 | |
[mlir][LLVMIR] Apply CallOp/CallableInterface on suitable operations - Applying CallOpInterface on CallOp and InvokeOp. - Applying CallableInterface on LLVMFuncOp. We're testing the changes using CallGraph, which uses both interfaces. Differential Revision: https://reviews.llvm.org/D129026 | 3 年前 | |
[mlir][linalg] Expand test case for tile-and-fuse with transform dialect Reverse the order of the payload ops. fuse_into_containing_op should still work. Differential Revision: https://reviews.llvm.org/D130355 | 3 年前 | |
[mlir] Split MLProgram global load and store to Graph variants * Split ops into X_graph variants as discussed; * Remove tokens from non-Graph region variants and rely on side-effect modelling there while removing side-effect modelling from Graph variants and relying on explicit ordering there; * Make tokens required to be produced by Graph variants - but kept explicit token type specification given previous discussion on this potentially being configurable in future; This results in duplicating some code. I considered adding helper functions but decided against adding an abstraction there early given size of duplication and creating accidental coupling. Differential Revision: https://reviews.llvm.org/D127813 | 3 年前 | |
[mlir][Math] Add constant folder for Exp2Op. This patch adds constant folder for Exp2Op which only supports single and double precision floating-point. Differential Revision: https://reviews.llvm.org/D130472 | 3 年前 | |
[FileCheck] Catch missspelled directives. Reviewed By: MaskRay Differential Revision: https://reviews.llvm.org/D125604 | 4 年前 | |
[mlir][NVGPU] Verifier for nvgpu.ldmatrix * Adds verifiers for nvgpu.ldmatrix op * Adds tests to mlir/test/Dialect/NVGPU/invalid.mlir Reviewed By: ThomasRaoux Differential Revision: https://reviews.llvm.org/D129669 | 3 年前 | |
[mlir:Parser] Don't use strings for the "ugly" form of Attribute/Type syntax This commit refactors the syntax of "ugly" attribute/type formats to not use strings for wrapping. This means that moving forward attirbutes and type formats will always need to be in some recognizable form, i.e. if they use incompatible characters they will need to manually wrap those in a string, the framework will no longer do it automatically. This has the benefit of greatly simplifying how parsing attributes/types work, given that we currently rely on some extremely complicated nested parser logic which is quite problematic for a myriad of reasons; unecessary complexity(we create a nested source manager/lexer/etc.), diagnostic locations can be off/wrong given string escaping, etc. Differential Revision: https://reviews.llvm.org/D118505 | 3 年前 | |
[MLIR][OpenMP] Add a constraint to the Threadprivate Op Add a constraint to ensure that the operand and result of the threadprivate operation are the same. Reviewed By: peixin Differential Revision: https://reviews.llvm.org/D128609 | 3 年前 | |
[mlir:PDL] Rework errors for pdl.operations with non-inferrable results We currently emit an error during verification if a pdl.operation with non-inferrable results is used within a rewrite. This allows for catching some errors during compile time, but is slightly broken. For one, the verification at the PDL level assumes that all dialects have been loaded, which is true at run time, but may not be true when the PDL is generated (such as via PDLL). This commit fixes this by not emitting the error if the operation isn't registered, i.e. it uses the mightHave variant of trait/interface methods. Secondly, we currently don't verify when a pdl.operation has no explicit results, but the operation being created is known to expect at least one. This commit adds a heuristic error to detect these cases when possible and fail. We can't always capture when the user made an error, but we can capture the most common case where the user expected an operation to infer its result types (when it actually isn't possible). Differential Revision: https://reviews.llvm.org/D124583 | 4 年前 | |
[mlir:PDLInterp] Refactor the implementation of result type inferrence The current implementation uses a discrete "pdl_interp.inferred_types" operation, which acts as a "fake" handle to a type range. This op is used as a signal to pdl_interp.create_operation that types should be inferred. This is terribly awkward and clunky though: * This op doesn't have a byte code representation, and its conversion to bytecode kind of assumes that it is only used in a certain way. The current lowering is also broken and seemingly untested. * Given that this is a different operation, it gives off the assumption that it can be used multiple times, or that after the first use the value contains the inferred types. This isn't the case though, the resultant type range can never actually be used as a type range. This commit refactors the representation by removing the discrete InferredTypesOp, and instead adds a UnitAttr to pdl_interp.CreateOperation that signals when the created operations should infer their types. This leads to a much much cleaner abstraction, a more optimal bytecode lowering, and also allows for better error handling and diagnostics when a created operation doesn't actually support type inferrence. Differential Revision: https://reviews.llvm.org/D124587 | 4 年前 | |
[mlir:Parser] Don't use strings for the "ugly" form of Attribute/Type syntax This commit refactors the syntax of "ugly" attribute/type formats to not use strings for wrapping. This means that moving forward attirbutes and type formats will always need to be in some recognizable form, i.e. if they use incompatible characters they will need to manually wrap those in a string, the framework will no longer do it automatically. This has the benefit of greatly simplifying how parsing attributes/types work, given that we currently rely on some extremely complicated nested parser logic which is quite problematic for a myriad of reasons; unecessary complexity(we create a nested source manager/lexer/etc.), diagnostic locations can be off/wrong given string escaping, etc. Differential Revision: https://reviews.llvm.org/D118505 | 3 年前 | |
[mlir][Linalg] Add a Transform dialect NavigationOp op to match a list of ops or an interface. This operation is a NavigationOp that simplifies the writing of transform IR. Since there is no way of refering to an interface by name, the current implementation uses an EnumAttr and depends on the interfaces it supports. In the future, it would be worthwhile to remove this dependence and generalize. Differential Revision: https://reviews.llvm.org/D130267 | 3 年前 | |
[mlir][spirv] Rename spv.GLSL ops to spv.GL. NFC. This is to improve consistency within the SPIR-V dialect and make these ops a bit shorter. Reviewed By: antiagainst Differential Revision: https://reviews.llvm.org/D130280 | 3 年前 | |
[MLIR][Shape] Generalize shape.concat to extent tensors The operation shape.concat was used for type shape only. We now enable it for extent tensors. Reviewed By: jpienaar Differential Revision: https://reviews.llvm.org/D127321 | 4 年前 | |
[mlir][bufferization][NFC] Move sparse_tensor.release to bufferization dialect This op used to belong to the sparse dialect, but there are use cases for dense bufferization as well. (E.g., when a tensor alloc is returned from a function and should be deallocated at the call site.) This change moves the op to the bufferization dialect, which now has an alloc_tensor and a dealloc_tensor op. Differential Revision: https://reviews.llvm.org/D129985 | 3 年前 | |
[mlir][tensor][bufferize] Fix deallocation of GenerateOp/FromElementsOp Both ops allocate a buffer. There were cases in which the buffer was not deallocated. Differential Revision: https://reviews.llvm.org/D130469 | 3 年前 | |
[mlir][tosa] Enable decomposing Conv2D also where 1 input dim is dynamic Restricted to just 1 dynamic input dim as that worked all the way through to codegen. Differential Revision: https://reviews.llvm.org/D129334 | 3 年前 | |
[mlir][transform] Add ForeachOp to transform dialect This op "unbatches" an op handle and executes the loop body for each payload op. Differential Revision: https://reviews.llvm.org/D130257 | 3 年前 | |
Generalize the vector transfer flattening patterns (dyn shapes). Differential Revision: https://reviews.llvm.org/D130284 | 3 年前 | |
[mlir][NFC] Update textual references of func to func.func in Tensor/Tosa/Vector tests The special case parsing of func operations is being removed. | 4 年前 | |
[mlir][NFC] Update textual references of func to func.func in IR/Interface tests The special case parsing of func operations is being removed. | 4 年前 |