CIRCT  20.0.0git
Classes | Namespaces | Macros | Functions
AffineToLoopSchedule.cpp File Reference
#include "circt/Conversion/AffineToLoopSchedule.h"
#include "circt/Analysis/DependenceAnalysis.h"
#include "circt/Analysis/SchedulingAnalysis.h"
#include "circt/Dialect/LoopSchedule/LoopScheduleOps.h"
#include "circt/Scheduling/Algorithms.h"
#include "circt/Scheduling/Problems.h"
#include "mlir/Conversion/AffineToStandard/AffineToStandard.h"
#include "mlir/Dialect/Affine/Analysis/AffineAnalysis.h"
#include "mlir/Dialect/Affine/Analysis/LoopAnalysis.h"
#include "mlir/Dialect/Affine/IR/AffineMemoryOpInterfaces.h"
#include "mlir/Dialect/Affine/IR/AffineOps.h"
#include "mlir/Dialect/Affine/LoopUtils.h"
#include "mlir/Dialect/Affine/Utils.h"
#include "mlir/Dialect/Arith/IR/Arith.h"
#include "mlir/Dialect/ControlFlow/IR/ControlFlow.h"
#include "mlir/Dialect/Func/IR/FuncOps.h"
#include "mlir/Dialect/MemRef/IR/MemRef.h"
#include "mlir/Dialect/SCF/IR/SCF.h"
#include "mlir/IR/BuiltinDialect.h"
#include "mlir/IR/Dominance.h"
#include "mlir/IR/IRMapping.h"
#include "mlir/IR/ImplicitLocOpBuilder.h"
#include "mlir/Pass/Pass.h"
#include "mlir/Transforms/DialectConversion.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/TypeSwitch.h"
#include "llvm/Support/Debug.h"
#include <cassert>
#include <limits>
#include "circt/Conversion/Passes.h.inc"
Include dependency graph for AffineToLoopSchedule.cpp:

Go to the source code of this file.

Classes

class  AffineLoadLowering
 Apply the affine map from an 'affine.load' operation to its operands, and feed the results to a newly created 'memref.load' operation (which replaces the original 'affine.load'). More...
 
class  AffineStoreLowering
 Apply the affine map from an 'affine.store' operation to its operands, and feed the results to a newly created 'memref.store' operation (which replaces the original 'affine.store'). More...
 
struct  IfOpHoisting
 Helper to hoist computation out of scf::IfOp branches, turning it into a mux-like operation, and exposing potentially concurrent execution of its branches. More...
 

Namespaces

 circt
 The InstanceGraph op interface, see InstanceGraphInterface.td for more details.
 

Macros

#define DEBUG_TYPE   "affine-to-loopschedule"
 
#define GEN_PASS_DEF_AFFINETOLOOPSCHEDULE
 

Functions

static bool ifOpLegalityCallback (IfOp op)
 Helper to determine if an scf::IfOp is in mux-like form. More...
 
static bool yieldOpLegalityCallback (AffineYieldOp op)
 Helper to mark AffineYieldOp legal, unless it is inside a partially converted scf::IfOp. More...
 

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "affine-to-loopschedule"

Definition at line 39 of file AffineToLoopSchedule.cpp.

◆ GEN_PASS_DEF_AFFINETOLOOPSCHEDULE

#define GEN_PASS_DEF_AFFINETOLOOPSCHEDULE

Definition at line 42 of file AffineToLoopSchedule.cpp.

Function Documentation

◆ ifOpLegalityCallback()

static bool ifOpLegalityCallback ( IfOp  op)
static

Helper to determine if an scf::IfOp is in mux-like form.

Definition at line 240 of file AffineToLoopSchedule.cpp.

◆ yieldOpLegalityCallback()

static bool yieldOpLegalityCallback ( AffineYieldOp  op)
static

Helper to mark AffineYieldOp legal, unless it is inside a partially converted scf::IfOp.

Definition at line 247 of file AffineToLoopSchedule.cpp.