Go to the documentation of this file.
30 return &
F.getEntryBlock();
34 return &
F.getEntryBlock();
39 for (
auto &
instr :
block.instructionsWithoutDebug(
true)) {
40 if (
instr.isTerminator())
42 if (
instr.getType()->isVoidTy())
52 if (
instr.isTerminator())
54 defs.push_back(&
instr);
60 terms.push_back(
block.getTerminator());
65 terms.push_back(
block.getTerminator());
69 if (
const auto *
instruction = dyn_cast<Instruction>(value))
79 if (
auto *Phi = dyn_cast<PHINode>(&Instr))
80 return Phi->hasConstantValue();
89 return print(cast<Value>(Inst));
100 MST.incorporateFunction(*
BB->getParent());
101 Out << MST.getLocalSlot(
BB);
we get the following basic block
This is an optimization pass for GlobalISel generic memory operations.
Printable print(const BasicBlock *Block) const
bool comesBefore(const Instruction *Other) const
Given an instruction Other in the same basic block as this instruction, return true if this instructi...
Manage lifetime of a slot tracker for printing IR.
LLVM Basic Block Representation.
This class implements an extremely fast bulk output stream that can only output to a stream.
static BasicBlock * getEntryBlock(Function &F)
const BasicBlock * getDefBlock(const Value *value) const
static void appendBlockDefs(SmallVectorImpl< Value * > &defs, BasicBlock &block)
void print(raw_ostream &O, bool IsForDebug=false) const
Implement operator<< on Value.
Printable print(const GCNRegPressure &RP, const GCNSubtarget *ST=nullptr)
static const Function * getParent(const Value *V)
Since we know that Vector is byte aligned and we know the element offset of we should change the load into a lve *x instruction
static Value * ValueRefNull
static void appendBlockTerms(SmallVectorImpl< Instruction * > &terms, BasicBlock &block)
Simple wrapper around std::function<void(raw_ostream&)>.
Common register allocation spilling lr str ldr sxth r3 ldr mla r4 can lr mov lr str ldr sxth r3 mla r4 and then merge mul and lr str ldr sxth r3 mla r4 It also increase the likelihood the store may become dead bb27 Successors according to LLVM BB
static bool comesBefore(const Instruction *lhs, const Instruction *rhs)
void setFunction(Function &Fn)
LLVM Value Representation.
static bool isConstantValuePhi(const Instruction &Instr)