#include ">

MLIR: lib/Conversion/PDLToPDLInterp/RootOrdering.cpp File Reference (original) (raw)

#include "[RootOrdering.h](RootOrdering%5F8h%5Fsource.html)"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/DenseSet.h"
#include "llvm/ADT/SmallVector.h"
#include <queue>
#include <utility>

Go to the source code of this file.

Functions
static SmallVector< Value > getCycle (const DenseMap< Value, Value > &parents, Value rep)
Returns the cycle implied by the specified parent relation, starting at the given node. More...
static void contract (RootOrderingGraph &graph, ArrayRef< Value > cycle, const DenseMap< Value, unsigned > &parentDepths, DenseMap< Value, Value > &actualSource, DenseMap< Value, Value > &actualTarget)
Contracts the specified cycle in the given graph in-place. More...

contract()

Contracts the specified cycle in the given graph in-place.

The parentsCost map specifies, for each node in the cycle, the lowest cost among the edges entering that node. Then, the nodes in the cycle C are replaced with a single node v_C (the first node in the cycle). All edges (u, v) entering the cycle, v \in C, are replaced with a single edge (u, v_C) with an appropriately chosen cost, and the selected node v is marked in the output map actualTarget[u]. All edges (u, v) leaving the cycle, u \in C, are replaced with a single edge (v_C, v), and the selected node u is marked in the ouptut map actualSource[v].

Definition at line 48 of file RootOrdering.cpp.

Referenced by mlir::arith::convertArithFastMathFlagsToLLVM(), getFastmathFlags(), getOpToConvert(), gpuMmaUnrollOrder(), inferFragType(), isValidForFMA(), CanonicalizeContractAdd< AddOpType >::matchAndRewrite(), mlir::arith::populateEmulateUnsupportedFloatsConversions(), mlir::math::populateExtendToSupportedTypesTypeConverter(), mlir::LLVM::ModuleImport::setFastmathFlagsAttr(), mlir::pdl_to_pdl_interp::OptimalBranching::solve(), and supportsMMaMatrixType().

getCycle()