31 Header->getParent(), Exit);
33 Header->getParent(), Exit);
40 IV->addIncoming(ConstantInt::get(I32Ty, 0), Preheader);
42 B.SetInsertPoint(Latch);
46 IV->addIncoming(Inc, Latch);
60 L->addBasicBlockToLoop(Header, LI);
61 L->addBasicBlockToLoop(Body, LI);
62 L->addBasicBlockToLoop(Latch, LI);
79 ParentL->addChildLoop(ColumnLoopInfo);
85 "cols",
B, DTU, ColumnLoopInfo, LI);
89 B.getInt64(
TileSize),
"rows",
B, DTU, RowLoopInfo, LI);
94 B.getInt64(
TileSize),
"inner",
B, DTU, KLoopInfo, LI);
static GCRegistry::Add< OcamlGC > B("ocaml", "ocaml 3.10-compatible GC")
const SmallVectorImpl< MachineOperand > & Cond
static const uint32_t IV[8]
LLVM Basic Block Representation.
iterator begin()
Instruction iterator methods.
static BasicBlock * Create(LLVMContext &Context, const Twine &Name="", Function *Parent=nullptr, BasicBlock *InsertBefore=nullptr)
Creates a new BasicBlock.
const BasicBlock * getSinglePredecessor() const
Return the predecessor of this block if it has a single predecessor block.
const BasicBlock * getSingleSuccessor() const
Return the successor of this block if it has a single successor.
const Function * getParent() const
Return the enclosing method, or null if none.
LLVMContext & getContext() const
Get the context in which this basic block lives.
const Instruction * getTerminator() const LLVM_READONLY
Returns the terminator instruction if the block is well formed or null if the block is not well forme...
Conditional or Unconditional Branch instruction.
static BranchInst * Create(BasicBlock *IfTrue, InsertPosition InsertBefore=nullptr)
BasicBlock * getSuccessor(unsigned i) const
void setSuccessor(unsigned idx, BasicBlock *NewSucc)
static constexpr UpdateKind Delete
static constexpr UpdateKind Insert
void applyUpdatesPermissive(ArrayRef< typename DomTreeT::UpdateType > Updates)
Submit updates to all available trees.
Common base class shared among various IRBuilders.
This is an important class for using LLVM in a threaded context.
void addChildLoop(LoopT *NewChild)
Add the specified loop to be a child of this loop.
void addTopLevelLoop(LoopT *New)
This adds the specified loop to the collection of top-level loops.
LoopT * AllocateLoop(ArgsTy &&...Args)
LoopT * getLoopFor(const BlockT *BB) const
Return the inner most loop that BB lives in.
Represents a single loop in the control flow graph.
static PHINode * Create(Type *Ty, unsigned NumReservedValues, const Twine &NameStr="", InsertPosition InsertBefore=nullptr)
Constructors - NumReservedValues is a hint for the number of incoming edges that this phi node will h...
StringRef - Represent a constant reference to a string, i.e.
The instances of the Type class are immutable: once they are created, they are never changed.
static IntegerType * getInt64Ty(LLVMContext &C)
LLVM Value Representation.
This is an optimization pass for GlobalISel generic memory operations.
BasicBlock * Header
The header and latch of the loop.
Value * Index
The index updated on every iteration.
unsigned NumInner
Number of columns of the first matrix of a multiply / number of rows of the second matrix of a multip...
MatrixLoop ColumnLoop
The loop iterating on the columns.
MatrixLoop RowLoop
The loop iterating on the rows.
unsigned NumRows
Number of rows of the matrix.
BasicBlock * CreateTiledLoops(BasicBlock *Start, BasicBlock *End, IRBuilderBase &B, DomTreeUpdater &DTU, LoopInfo &LI)
Creates an IR loop nests for tiling of the form below.
unsigned NumColumns
Number of columns of the matrix.
unsigned TileSize
Number of rows/columns in a tile.
MatrixLoop KLoop
The loop iterating on k (inner dimension).