| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
[mlir][NFC] update LLVM create APIs (2/n) (#149667) See https://github.com/llvm/llvm-project/pull/147168 for more info. | 1 年前 | |
[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 个月前 | |
[MLIR][LLVM] DI Expression Rewrite & Legalization (#77541) Add a rewriter for DIExpressions & use it to run legalization patterns before exporting to llvm (because LLVM dialect allows DI Expressions that may not be valid in LLVM IR). The rewriter driver works similarly to the existing mlir rewriter drivers, except it operates on lists of DIExpressionElemAttr (i.e. DIExpressionAttr). Each rewrite pattern transforms a range of DIExpressionElemAttr into a new list of DIExpressionElemAttr. In addition, this PR sets up a place to add legalization patterns that are broadly applicable internally to the LLVM dialect, and they will always be applied prior to export. This PR adds one pattern for merging fragment operators. --------- Co-authored-by: Tobias Gysi <tobias.gysi@nextsilicon.com> | 2 年前 | |
[MLIR] Adopt LDBG() in lib/Dialect/LLVMIR/ (NFC) | 11 个月前 | |
[MLIR][LLVM] Extend DIScopeForLLVMFuncOp to handle cross-file operatio… (#167844) The current DIScopeForLLVMFuncOp pass handles debug information for inlined code by processing CallSiteLoc attributes. However, some compilation scenarios compose code from multiple source files directly into a single function without generating CallSiteLoc. **Scenario:** python # a.py def kernel_a(tensor): print("a: {}", tensor) # a.py:3 jit_func_b(tensor) # Calls b.py code # b.py def func_b(tensor): print("b: {}", tensor) # b.py:7 The scenario executes Python at compile-time and directly inserts operations from b.py into the kernel function, resulting in MLIR like: mlir @kernel_a(...) { print("a: {}", %arg0) loc(#loc_a) // a.py:3 print("b: {}", %arg0) loc(#loc_b) // b.py:7 <- FileLineColLoc, not CallSiteLoc } loc(#loc_kernel) // a.py:1 #loc1 = loc("a.py":3:.) #loc2 = loc("b.py":7:.) #loc_a = loc("print"(#loc1)) #loc_b = loc("print"(#loc2)) llvm !6 = !DIFile(filename: "a.py", directory: "...") !9 = distinct !DISubprogram(name: "...", linkageName: "...", scope: !6, file: !6, line: 13, ...) !10 = !DILocation(line: 7, column: ., scope: !9) // Points to kernel's DISubprogram, not correct | 8 个月前 | |
[MLIR] Apply clang-tidy fixes for readability-simplify-boolean-expr in InlinerInterfaceImpl.cpp (NFC) | 10 个月前 | |
[mlir][NFC] update LLVM create APIs (2/n) (#149667) See https://github.com/llvm/llvm-project/pull/147168 for more info. | 1 年前 | |
[mlir][NFC] update LLVM create APIs (2/n) (#149667) See https://github.com/llvm/llvm-project/pull/147168 for more info. | 1 年前 | |
[mlir] Retire additional let constructor (NFC) (#139390) Three main changes: - The pass createRequestCWrappersPass is renamed as createLLVMRequestCWrappersPass - createOptimizeForTargetPass is now under the LLVM namespace. It’s unclear why the NVVM namespace was used initially, as all passes in LLVMIR/Transforms/Passes.h consistently reside in the LLVM namespace. - DuplicateFunctionEliminationPass is now in the func namespace. | 1 年前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 1 年前 | ||
| 9 个月前 | ||
| 2 年前 | ||
| 11 个月前 | ||
| 8 个月前 | ||
| 10 个月前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 |