diff --git a/cmake/llvm-hash.txt b/cmake/llvm-hash.txt index e86248fa1a3d..f76bc865045d 100644 --- a/cmake/llvm-hash.txt +++ b/cmake/llvm-hash.txt @@ -1 +1 @@ -1115dee248e68a155001ac3712a189299d104863 +56152fa377302fd8124e8be2a02dcb927a041f0a diff --git a/include/triton/Analysis/Alias.h b/include/triton/Analysis/Alias.h index a06df5ae2106..199238bea77c 100644 --- a/include/triton/Analysis/Alias.h +++ b/include/triton/Analysis/Alias.h @@ -79,13 +79,13 @@ class SharedMemoryAliasAnalysis ModRefResult getModRef(Operation *op, Value location); void setToEntryState(dataflow::Lattice *lattice) override { - propagateIfChanged( - lattice, lattice->join( - AliasInfo::getPessimisticValueState(lattice->getPoint()))); + propagateIfChanged(lattice, + lattice->join(AliasInfo::getPessimisticValueState( + lattice->getAnchor()))); } /// Computes if the alloc set of the results are changed. - void + LogicalResult visitOperation(Operation *op, ArrayRef *> operands, ArrayRef *> results) override; diff --git a/lib/Analysis/Alias.cpp b/lib/Analysis/Alias.cpp index 52082ddf7021..3840bf4199e5 100644 --- a/lib/Analysis/Alias.cpp +++ b/lib/Analysis/Alias.cpp @@ -21,7 +21,7 @@ AliasInfo AliasInfo::join(const AliasInfo &lhs, const AliasInfo &rhs) { return ret; } -void SharedMemoryAliasAnalysis::visitOperation( +LogicalResult SharedMemoryAliasAnalysis::visitOperation( Operation *op, ArrayRef *> operands, ArrayRef *> results) { AliasInfo aliasInfo; @@ -31,7 +31,7 @@ void SharedMemoryAliasAnalysis::visitOperation( if (auto memdescTy = dyn_cast(result.getType())) { if (!isa_and_nonnull( memdescTy.getMemorySpace())) - return; + return success(); } // Only LocalAllocOp creates a new buffer. @@ -49,11 +49,14 @@ void SharedMemoryAliasAnalysis::visitOperation( } if (pessimistic) { - return setAllToEntryStates(results); + setAllToEntryStates(results); + return success(); } // Join all lattice elements for (auto *result : results) propagateIfChanged(result, result->join(aliasInfo)); + + return success(); } AliasResult SharedMemoryAliasAnalysis::alias(Value lhs, Value rhs) { diff --git a/lib/Analysis/AxisInfo.cpp b/lib/Analysis/AxisInfo.cpp index 1f3368d0d481..b4f1a5dcfd32 100644 --- a/lib/Analysis/AxisInfo.cpp +++ b/lib/Analysis/AxisInfo.cpp @@ -172,8 +172,8 @@ class AxisInfoAnalysis : public dataflow::SparseForwardDataFlowAnalysis< void setToEntryState(dataflow::Lattice *lattice) override { propagateIfChanged( - lattice, - lattice->join(AxisInfo::getPessimisticValueState(lattice->getPoint()))); + lattice, lattice->join( + AxisInfo::getPessimisticValueState(lattice->getAnchor()))); } void visitNonControlFlowArguments( @@ -195,9 +195,10 @@ class AxisInfoAnalysis : public dataflow::SparseForwardDataFlowAnalysis< dataflow::Lattice>::getLatticeElement; using FuncAxisInfoMapT = DenseMap; - void visitOperation(Operation *op, - ArrayRef *> operands, - ArrayRef *> results) override; + LogicalResult + visitOperation(Operation *op, + ArrayRef *> operands, + ArrayRef *> results) override; void visitForOpInductionVar(scf::ForOp op, ArrayRef *> argLattices); @@ -1039,7 +1040,7 @@ AxisInfoAnalysis::AxisInfoAnalysis(DataFlowSolver &solver) visitors.append(); } -void AxisInfoAnalysis::visitOperation( +LogicalResult AxisInfoAnalysis::visitOperation( Operation *op, ArrayRef *> operands, ArrayRef *> results) { // TODO: For sure not the right way to do this @@ -1048,8 +1049,10 @@ void AxisInfoAnalysis::visitOperation( if (op->getValue().getRank() == 0) setToEntryState((dataflow::Lattice *)op); AxisInfo curr = visitors.apply(op, operands); - if (curr.getRank() == 0) - return setAllToEntryStates(results); + if (curr.getRank() == 0) { + setAllToEntryStates(results); + return success(); + } // override with hint auto newContiguity = curr.getContiguity(); auto newDivisibility = curr.getDivisibility(); @@ -1071,6 +1074,7 @@ void AxisInfoAnalysis::visitOperation( // join all lattice elements for (auto *result : results) propagateIfChanged(result, result->join(curr)); + return success(); } void AxisInfoAnalysis::visitForOpInductionVar( diff --git a/lib/Target/LLVMIR/LLVMDIScope.cpp b/lib/Target/LLVMIR/LLVMDIScope.cpp index af7079060085..536b41126935 100644 --- a/lib/Target/LLVMIR/LLVMDIScope.cpp +++ b/lib/Target/LLVMIR/LLVMDIScope.cpp @@ -103,9 +103,8 @@ struct LLVMDIScopePass : public LLVMDIScopeBase { // the column offset auto subprogramAttr = LLVM::DISubprogramAttr::get( context, distinctId, compileUnitAttr, fileAttr, funcNameAttr, - funcNameAttr, fileAttr, - /*line=*/line, - /*scopeline=*/line, subprogramFlags, subroutineTypeAttr); + funcNameAttr, fileAttr, /*line=*/line, /*scopeline=*/line, + subprogramFlags, subroutineTypeAttr, /*retainNodes=*/{}); funcOp->setLoc(FusedLoc::get(context, {loc}, subprogramAttr)); } diff --git a/python/src/ir.cc b/python/src/ir.cc index 34e4feb78c05..701da5876af5 100644 --- a/python/src/ir.cc +++ b/python/src/ir.cc @@ -8,6 +8,7 @@ #include "mlir/Dialect/Index/IR/IndexDialect.h" #include "mlir/Dialect/Index/IR/IndexOps.h" #include "mlir/Dialect/LLVMIR/LLVMDialect.h" +#include "mlir/Dialect/LLVMIR/Transforms/InlinerInterfaceImpl.h" #include "mlir/IR/Builders.h" #include "mlir/IR/BuiltinOps.h" #include "mlir/IR/Diagnostics.h" @@ -226,6 +227,7 @@ void init_triton_ir(py::module &&m) { cf::ControlFlowDialect, LLVM::LLVMDialect>(); registerBuiltinDialectTranslation(registry); registerLLVMDialectTranslation(registry); + mlir::LLVM::registerInlinerInterface(registry); context.appendDialectRegistry(registry); context.loadAllAvailableDialects(); });