| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
[mlir] Use llvm::copy (NFC) (#168213) Identified with llvm-use-ranges. | 8 个月前 | |
[mlir] Migrate away from a soft-deprecated constructor of APInt (NFC) (#166128) We have: /// Once all uses of this constructor are migrated to other constructors, /// consider marking this overload ""= delete" to prevent calls from being /// incorrectly bound to the APInt(unsigned, uint64_t, bool) constructor. LLVM_ABI APInt(unsigned numBits, unsigned numWords, const uint64_t bigVal[]); This patch migrates away from this soft-deprecated constructor. | 8 个月前 | |
[MLIR][Python] add GetTypeID for llvm.struct_type and llvm.ptr and enable downcasting (#169383) | 8 个月前 | |
[MLIR][Bytecode] Followup 8106c81 (#157136) Addressed code review feedback: - Fixed some issues in the unit test - Adjusted line wrapping in the docs - Clarified comments in the bytecode reader | 10 个月前 | |
[MLIR][Python] add GetTypeID for llvm.struct_type and llvm.ptr and enable downcasting (#169383) | 8 个月前 | |
[mlir][arith] Add support for sitofp, uitofp to ArithToAPFloat (#169284) Add support for arith.sitofp and arith.uitofp. | 8 个月前 | |
[mlir] Remove unused includes (NFC) (#148872) These are identified by misc-include-cleaner. I've filtered out those that break builds. Also, I'm staying away from llvm-config.h, config.h, and Compiler.h, which likely cause platform- or compiler-specific build failures. | 1 年前 | |
[MemRef] Remove memref.dim OffsetSizeAndStrideOpInterface folding (#169327) OffsetSizeAndStrideOpInterface does not specify whether it's operating on the input or output shape and in fact different ops implement this in different ways, which is also why SubviewOp is special cased here. This "marked as dynamic but not really dynamic" folding is better handled by shape inference, so just remove the bad fold. | 8 个月前 | |
[mlir][arith] Add support for sitofp, uitofp to ArithToAPFloat (#169284) Add support for arith.sitofp and arith.uitofp. | 8 个月前 | |
[MLIR] Apply clang-tidy fixes for misc-use-internal-linkage in AsmPrinter.cpp (NFC) | 8 个月前 | |
[MLIR] Apply clang-tidy fixes for llvm-qualified-auto in ValueBoundsOpInterface.cpp (NFC) | 8 个月前 | |
[mlir] Set implicit operation loc to start of split. (#151499) | 11 个月前 | |
[mlir][Pass] Fix crash when applying a pass to an optional interface (#169262) Interfaces can be optional: whether an op implements an interface or not can depend on the state of the operation. `` // An optional code block for adding additional "classof" logic. This can // be used to better enable "optional" interfaces, where an entity only // implements the interface if some dynamic characteristic holds. // $_attr/$_op/$_type may be used to refer to an instance of the // interface instance being checked. code extraClassOf = ""; ` The current Pass::canScheduleOn(RegisteredOperationName) is insufficient. This commit adds an additional overload to inspect Operation *. This commit fixes a crash when scheduling an InterfacePass` for an optional interface on an operation that does not actually implement the interface. This is a re-upload of #168499, which was reverted. | 8 个月前 | |
[MLIR] Apply clang-tidy fixes for readability-identifier-naming in Parser.cpp (NFC) | 8 个月前 | |
[MLIR] Add reduction interface with tester to mlir-reduce (#166096) Currently, we don't have support for patterns that need access to a Tester instance in mlir-reduce. This PR adds DialectReductionPatternWithTesterInterface to the set of supported interfaces. Dialects can implement this interface to inject the tester into their pattern classes. | 8 个月前 | |
[MLIR] Implement remark emitting policies in MLIR (#161202) This update introduces two new remark emitting policies: 1. RemarkEmittingPolicyAll, which emits all remarks, 2. RemarkEmittingPolicyFinal, which only emits final remarks after processing. The RemarkEngine is modified to support these policies, allowing for more flexible remark handling based on user configuration. PR also adds flag to mlir-opt --remark-policy=<value> - Specify the policy for remark output. =all - Print all remarks =final - Print final remarks Relanding https://github.com/llvm/llvm-project/pull/160526 This PR requires RemarkEngine to be finalize manually. So here is usage: MLIRContext ctx; ctx.setRemarkEngine(...) ... ctx.getRemarkEngine().shutdown() <-- PR adds this, it is required when the emission policy is final | 9 个月前 | |
[mlir] Replace llvm::OwningArrayRef with std::vector (#168803) There are several places where we use llvm::OwningArrayRef. The interface to this requires us to first construct temporary storage, then allocate space and set the allocated memory to 0, then copy the values we actually want into that memory, then move the array into place. Instead we can just do it all inline in a single pass by using std::vector. In one case we actually allocate a completely separate container and then allocate + copy the data over because llvm::OwningArrayRef does not (and can't) support push_back. Note that llvm::SmallVector is not a suitable replacement here because we rely on reference stability on move construction: when the outer container reallocates, we need the the contents of the inner containers to be fixed in memory, and llvm::SmallVector does not give us that guarantee. | 8 个月前 | |
[mlir] Expose output strategies of TimingManager (#166548) After the original API change to DefaultTimingManager::setOutput() (see 362aa434cc31ccca96749a6db8cd97f5b7d71206), users are forced to provide their own implementation of OutputStrategy. However, default MLIR implementations are usually sufficient. Expose Text and Json strategies via factory-like method to avoid the problem in downstream projects. | 8 个月前 | |
[mlir][ods] Enable basic string interpolation in constraint summary. (#153603) This enables printing, for example, the attribute value from a mismatched predicate. Example of resultant output (here made non-negative report value seen as sign-extended int): PDL/ops.mlir:21:1: error: 'pdl.pattern' op attribute 'benefit' failed to satisfy constraint: 16-bit signless integer attribute whose value is non-negative (got -31) pdl.pattern @rewrite_with_args : benefit(-31) { ^ This is primarily the mechanism and didn't change any existing constraints. I also attempted to keep the error format as close to the original as possible - but did notice 2 errors that were inconsistent with the rest and updated them to be consistent. | 8 个月前 | |
[OpenMP][flang] Lowering of OpenMP custom reductions to MLIR (#168417) This patch add support for lowering of custom reductions to MLIR. It also enhances the capability of the pass to automatically mark functions as "declare target" by traversing custom reduction initializers and combiners. | 8 个月前 | |
[mlir] Use llvm::copy (NFC) (#168213) Identified with llvm-use-ranges. | 8 个月前 | |
[mlir] Make remove-dead-values remove block and successorOperands before delete ops (#166766) Reland https://github.com/llvm/llvm-project/pull/165725, fix the Failed test by removing successor operands before delete operations. Following the deletion of cond.branch, its successor operands will subsequently be removed. | 8 个月前 | |
[MLIR] Introduce RemarkEngine + pluggable remark streaming (YAML/Bitstream) (#152474) This PR implements structured, tooling-friendly optimization remarks with zero cost unless enabled. It implements: - RemarkEngine collects finalized remarks within MLIRContext. - MLIRRemarkStreamerBase abstract class streams them to a backend. - Backends: MLIRLLVMRemarkStreamer (bridges to llvm::remarks → YAML/Bitstream) or your own custom streamer. - Optional mirroring to DiagnosticEngine (printAsEmitRemarks + categories). - Off by default; no behavior change unless enabled. Thread-safe; ordering best-effort. ## Overview Passes (reportOptimization*) │ ▼ +-------------------+ | RemarkEngine | collects +-------------------+ │ │ │ mirror │ stream ▼ ▼ emitRemark MLIRRemarkStreamerBase (abstract) │ ├── MLIRLLVMRemarkStreamer → llvm::remarks → YAML | Bitstream └── CustomStreamer → your sink ## Enable Remark engine and Plug LLVM's Remark streamer `` // Enable once per MLIRContext. This uses MLIRLLVMRemarkStreamer mlir::remark::enableOptimizationRemarksToFile( ctx, path, llvm::remarks::Format::YAML, cats); ## API to emit remark // Emit from a pass remark::passed(loc, categoryVectorizer, myPassname1) << "vectorized loop"; remark::missed(loc, categoryUnroll, "MyPass") << remark::reason("not profitable at this size") // Creates structured reason arg << remark::suggest("increase unroll factor to >=4"); // Creates structured suggestion arg remark::passed(loc, categoryVectorizer, myPassname1) << "vectorized loop" << remark::metric("tripCount", 128); // Create structured metric on-the-fly `` | 11 个月前 | |
[MLIR][GPU][XeVM] Add XeVM target and XeVM dialect integration tests. (#148286) As part of XeVM dialect upsteaming, covers remaining parts required for XeVM dialect integration and testing. It has two high level components - XeVM target and serialization support - XeVM dialect integration tests using level zero runtime Co-Authored-by: Artem Kroviakov <artem.kroviakov@intel.com> | 11 个月前 | |
[mlir][x86vector] Lower vector.contract to FMA or packed type dot-product (#168074) A transform pass to lower vector.contract to (a) vector.fma for F32, (b) x86vector.avx512.dot for BF16, (c) x86vector.avx.dot.i8 for Int8 packed types. The lowering works on condition with m, batch, k dims to be one and vnni dim should be 2 for bf16; 4 for int8. **The lowering pattern**: batch_reduce.matmul (input) -> register-tiling(M, N) -> Vectorization (to vector.contract) -> unroll vector.contract (unit dims) -> hoisting transformation (move C loads/store outside batch/k loop) -> apply licm, canonicalization, and bufferize. | 8 个月前 | |
[Flang][mlir] - Translation of delayed privatization for deferred target-tasks (#155348) This PR adds support for translation of the private clause on deferred target tasks - that is omp.target operations with the nowait clause. An offloading call for a deferred target-task is not blocking - the offloading (target-generating) host task continues its execution after issuing the offloading call. Therefore, the key problem we need to solve is to ensure that the data needed for private variables to be initialized in the target task persists even after the host task has completed. We do this in a new pass called PrepareForOMPOffloadPrivatizationPass. For a privatized variable that needs its host counterpart for initialization (such as the shape of the data from the descriptor when an allocatable is privatized or the value of the data when an allocatable is firstprivatized), - the pass allocates memory on the heap. - it then initializes this memory by using the init and copy (for firstprivate) regions of the corresponding omp::PrivateClauseOp. - Finally the memory allocated on the heap is freed using the dealloc region of the same omp::PrivateClauseOp instance. This step is not straightforward though, because we cannot simply free the memory that's going to be used by another thread without any synchronization. So, for deallocation, we create a omp.task after the omp.target and synchronize the two with a dummy dependency (using the depend clause). In this newly created omp.task we do the deallocation. | 9 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 8 个月前 | ||
| 8 个月前 | ||
| 8 个月前 | ||
| 10 个月前 | ||
| 8 个月前 | ||
| 8 个月前 | ||
| 1 年前 | ||
| 8 个月前 | ||
| 8 个月前 | ||
| 8 个月前 | ||
| 8 个月前 | ||
| 11 个月前 | ||
| 8 个月前 | ||
| 8 个月前 | ||
| 8 个月前 | ||
| 9 个月前 | ||
| 8 个月前 | ||
| 8 个月前 | ||
| 8 个月前 | ||
| 8 个月前 | ||
| 8 个月前 | ||
| 8 个月前 | ||
| 11 个月前 | ||
| 11 个月前 | ||
| 8 个月前 | ||
| 9 个月前 |