Home
last modified time | relevance | path

Searched full:inst (Results 1 – 25 of 899) sorted by relevance

12345678910>>...36

/arkcompiler/runtime_core/static_core/compiler/optimizer/code_generator/
Dencode_visitor.h75 static void VisitMov(GraphVisitor *visitor, Inst *inst);
76 static void VisitNeg(GraphVisitor *visitor, Inst *inst);
77 static void VisitAbs(GraphVisitor *visitor, Inst *inst);
78 static void VisitNot(GraphVisitor *visitor, Inst *inst);
79 static void VisitSqrt(GraphVisitor *visitor, Inst *inst);
82 static void VisitAdd(GraphVisitor *visitor, Inst *inst);
83 static void VisitSub(GraphVisitor *visitor, Inst *inst);
84 static void VisitMul(GraphVisitor *visitor, Inst *inst);
85 static void VisitShl(GraphVisitor *visitor, Inst *inst);
86 static void VisitAShr(GraphVisitor *visitor, Inst *inst);
[all …]
/arkcompiler/runtime_core/static_core/libllvmbackend/lowering/
Dllvm_ir_constructor.h21 #include "optimizer/ir/inst.h"
32 bool IsSafeCast(Inst *inst, unsigned int index);
33 bool TryEmitIntrinsic(Inst *inst, RuntimeInterface::IntrinsicId arkId);
37 bool EmitFastPath(Inst *inst, RuntimeInterface::EntrypointId eid, uint32_t numArgs);
38 bool EmitStringEquals(Inst *inst);
39 bool EmitStringBuilderBool(Inst *inst);
40 bool EmitStringBuilderChar(Inst *inst);
41 bool EmitStringBuilderString(Inst *inst);
42 bool EmitStringConcat2(Inst *inst);
43 bool EmitStringConcat3(Inst *inst);
[all …]
/arkcompiler/runtime_core/static_core/plugins/ets/libllvmbackend/
Dets_llvm_ir_constructor_h_gen.inl16 bool EmitArrayCopyTo(Inst *inst);
17 bool EmitStdStringSubstring(Inst *inst);
18 bool EmitStringBuilderAppendBool(Inst *inst);
19 bool EmitStringBuilderAppendChar(Inst *inst);
20 bool EmitStringBuilderAppendByte(Inst *inst);
21 bool EmitStringBuilderAppendShort(Inst *inst);
22 bool EmitStringBuilderAppendInt(Inst *inst);
23 bool EmitStringBuilderAppendLong(Inst *inst);
24 bool EmitStringBuilderAppendString(Inst *inst);
25 bool EmitStringBuilderAppendStrings(Inst *inst);
[all …]
/arkcompiler/runtime_core/static_core/compiler/optimizer/optimizations/
Dpeepholes.h30 #define PEEPHOLE_IS_APPLIED(visitor, inst) (visitor)->SetIsApplied((inst), true, __FILE__, __LINE__) argument
68 static void VisitSafePoint([[maybe_unused]] GraphVisitor *v, Inst *inst);
69 static void VisitNeg([[maybe_unused]] GraphVisitor *v, Inst *inst);
70 static void VisitAbs([[maybe_unused]] GraphVisitor *v, Inst *inst);
71 static void VisitNot([[maybe_unused]] GraphVisitor *v, Inst *inst);
72 static void VisitAdd([[maybe_unused]] GraphVisitor *v, Inst *inst);
73 …static void VisitAddFinalize([[maybe_unused]] GraphVisitor *v, Inst *inst, Inst *input0, Inst *inp…
74 static void VisitSub([[maybe_unused]] GraphVisitor *v, Inst *inst);
75 …static void VisitSubFinalize([[maybe_unused]] GraphVisitor *v, Inst *inst, Inst *input0, Inst *inp…
76 …static void VisitMulOneConst([[maybe_unused]] GraphVisitor *v, Inst *inst, Inst *input0, Inst *inp…
[all …]
Dconst_folding.h21 bool ConstFoldingCast(Inst *inst);
22 bool ConstFoldingNeg(Inst *inst);
23 bool ConstFoldingAbs(Inst *inst);
24 bool ConstFoldingNot(Inst *inst);
25 bool ConstFoldingAdd(Inst *inst);
26 bool ConstFoldingSub(Inst *inst);
27 bool ConstFoldingMul(Inst *inst);
28 bool ConstFoldingBinaryMathWithNan(Inst *inst);
29 bool ConstFoldingDiv(Inst *inst);
30 bool ConstFoldingDivWithNan(Inst *inst);
[all …]
Dstring_builder_utils.h23 #include "optimizer/ir/inst.h"
28 bool IsStringBuilderInstance(Inst *inst);
29 bool IsMethodStringConcat(const Inst *inst);
30 bool IsMethodStringBuilderConstructorWithStringArg(const Inst *inst);
31 bool IsMethodStringBuilderConstructorWithCharArrayArg(const Inst *inst);
32 bool IsStringBuilderToString(const Inst *inst);
33 bool IsMethodStringBuilderDefaultConstructor(const Inst *inst);
35 bool IsStringBuilderCtorCall(const Inst *inst, const Inst *self = nullptr);
36 bool IsStringBuilderMethod(const Inst *inst, const Inst *self = nullptr);
37 bool IsNullCheck(const Inst *inst, const Inst *self = nullptr);
[all …]
Dchecks_elimination.h33 using GroupedBoundsChecks = ArenaVector<std::tuple<Inst *, InstVector, int64_t, int64_t>>;
35 using LoopNotFullyRedundantBoundsCheck = ArenaVector<std::pair<Inst *, GroupedBoundsChecks>>;
38 using InstPair = std::pair<Inst *, Inst *>;
39 using InstTriple = std::tuple<Inst *, Inst *, Inst *>;
43 using LoopInfo = std::tuple<CountableLoopInfo, Inst *, Inst *, Inst *, ConditionCode, bool, bool>;
100 static void VisitNullCheck(GraphVisitor *v, Inst *inst);
101 static void VisitNegativeCheck(GraphVisitor *v, Inst *inst);
102 static void VisitNotPositiveCheck(GraphVisitor *v, Inst *inst);
103 static void VisitZeroCheck(GraphVisitor *v, Inst *inst);
104 static void VisitRefTypeCheck(GraphVisitor *v, Inst *inst);
[all …]
Dmemory_barriers.h62 void VisitDefault([[maybe_unused]] Inst *inst) override in VisitDefault() argument
64 ASSERT_DO(!inst->IsCall() && !inst->IsStore(), in VisitDefault()
65 … (std::cerr << "need to make a visitor for the instruction: " << *inst << std::endl)); in VisitDefault()
68 void CheckAllInputs(Inst *inst);
69 void CheckInput(Inst *input);
70 void CheckTwoInputs(Inst *input1, Inst *input2);
72 static void VisitCallStatic(GraphVisitor *v, Inst *inst);
73 static void VisitCallIndirect(GraphVisitor *v, Inst *inst);
74 static void VisitCall(GraphVisitor *v, Inst *inst);
75 static void VisitCallResolvedStatic(GraphVisitor *v, Inst *inst);
[all …]
Dmemory_barriers.cpp30 for (auto inst : barriersInsts_) { in MergeBarriers() local
31 inst->ClearFlag(inst_flags::MEM_BARRIER); in MergeBarriers()
37 bool OptimizeMemoryBarriers::CheckInst(Inst *inst) in CheckInst() argument
39 return (std::find(barriersInsts_.begin(), barriersInsts_.end(), inst) != barriersInsts_.end()); in CheckInst()
42 void OptimizeMemoryBarriers::CheckAllInputs(Inst *inst) in CheckAllInputs() argument
44 for (auto input : inst->GetInputs()) { in CheckAllInputs()
52 void OptimizeMemoryBarriers::CheckInput(Inst *input) in CheckInput()
59 void OptimizeMemoryBarriers::CheckTwoInputs(Inst *input1, Inst *input2) in CheckTwoInputs()
66 void OptimizeMemoryBarriers::VisitCallStatic(GraphVisitor *v, Inst *inst) in VisitCallStatic() argument
68 if (inst->CastToCallStatic()->IsInlined()) { in VisitCallStatic()
[all …]
Dcleanup.h66 void MarkInlinedCaller(Marker liveMrk, Inst *saveState);
67 bool IsRemovableCall(Inst *inst);
69 void MarkLiveRec(Marker liveMrk, Inst *inst);
73 void MarkOneLiveInst(Marker deadMrk, Marker liveMrk, Inst *inst);
77 …bool TryToRemoveNonLiveInst(Inst *inst, BasicBlock *bb, ArenaSet<BasicBlock *> *newEmptyBlocks, Ma…
79 void SetLiveRec(Inst *inst, Marker mrk, Marker liveMrk);
80 void LiveUserSearchRec(Inst *inst, Marker mrk, Marker liveMrk, Marker deadMrk);
83 void TryMarkInstIsDead(Inst *inst, Marker deadMrk, Marker mrk, Marker liveMrk);
91 void BuildDominatorsVisitPhi(Inst *inst, size_t &amount);
106 ArenaUnorderedMap<Inst *, uint32_t> map_;
[all …]
Dlowering.h58 …* For example, suppose that we want to test if IR-subtree rooted by some Inst matches add or sub i…
61 * Inst* inst = ...;
65 * bool is_add_or_sub = Predicate::Capture(inst, capture);
67 * If inst is a binary instruction with opcode Add or Sub then Capture will return `true`,
68 … * capture.Get(0) will return left inst's input and capture.Get(1) will return right inst's input.
93 Inst *Get(size_t i) in Get()
99 void Set(size_t i, Inst *inst) in Set() argument
105 operands_[i] = inst; in Set()
137 std::array<Inst *, MAX_OPERANDS> operands_;
143 void Add(Inst *inst) in Add() argument
[all …]
Dlocations_builder.h52 static Location GetLocationForReturn(Inst *inst);
54 static void VisitResolveStatic(GraphVisitor *visitor, Inst *inst);
55 static void VisitCallResolvedStatic(GraphVisitor *visitor, Inst *inst);
56 static void VisitCallStatic(GraphVisitor *visitor, Inst *inst);
57 static void VisitCallVirtual(GraphVisitor *visitor, Inst *inst);
58 static void VisitResolveVirtual(GraphVisitor *visitor, Inst *inst);
59 static void VisitCallResolvedVirtual(GraphVisitor *visitor, Inst *inst);
60 static void VisitCallIndirect(GraphVisitor *visitor, Inst *inst);
61 static void VisitCall(GraphVisitor *visitor, Inst *inst);
62 static void VisitCallDynamic(GraphVisitor *visitor, Inst *inst);
[all …]
Descape.h49 using StateOwner = std::variant<Inst *, PhiState *, const ZeroInst *>;
50 using MaterializationSite = std::variant<Inst *, BasicBlock *>;
124 static void Visit##InstName(GraphVisitor *v, Inst *inst) \
126 static_cast<EscapeAnalysis *>(v)->Visit##InstName(inst); \
131 static void Visit##InstName(GraphVisitor *v, Inst *inst) \
133 static_cast<EscapeAnalysis *>(v)->Callback(inst); \
159 static void VisitCallStatic([[maybe_unused]] GraphVisitor *v, [[maybe_unused]] Inst *inst) in VisitCallStatic() argument
161 static_cast<EscapeAnalysis *>(v)->VisitCall(inst->CastToCallStatic()); in VisitCallStatic()
163 static void VisitCallVirtual([[maybe_unused]] GraphVisitor *v, [[maybe_unused]] Inst *inst) in VisitCallVirtual() argument
165 static_cast<EscapeAnalysis *>(v)->VisitCall(inst->CastToCallVirtual()); in VisitCallVirtual()
[all …]
Dstring_builder_utils.cpp20 bool IsStringBuilderInstance(Inst *inst) in IsStringBuilderInstance() argument
22 if (inst->GetOpcode() != Opcode::NewObject) { in IsStringBuilderInstance()
26 auto klass = GetObjectClass(inst->CastToNewObject()); in IsStringBuilderInstance()
31 auto runtime = inst->GetBasicBlock()->GetGraph()->GetRuntime(); in IsStringBuilderInstance()
35 bool IsMethodStringConcat(const Inst *inst) in IsMethodStringConcat() argument
37 if (inst->GetOpcode() != Opcode::CallStatic && inst->GetOpcode() != Opcode::CallVirtual) { in IsMethodStringConcat()
41 auto call = static_cast<const CallInst *>(inst); in IsMethodStringConcat()
46 auto runtime = inst->GetBasicBlock()->GetGraph()->GetRuntime(); in IsMethodStringConcat()
50 bool IsMethodStringBuilderConstructorWithStringArg(const Inst *inst) in IsMethodStringBuilderConstructorWithStringArg() argument
52 if (inst->GetOpcode() != Opcode::CallStatic) { in IsMethodStringBuilderConstructorWithStringArg()
[all …]
Dlower_boxed_boolean.h23 #include "optimizer/ir/inst.h"
64 static void VisitCompare(GraphVisitor *v, Inst *inst);
65 static void VisitLoadObject(GraphVisitor *v, Inst *inst);
70 static void ProcessInput(GraphVisitor *v, Inst *inst);
71 static void ProcessLoadStatic(GraphVisitor *v, Inst *inst);
72 static void ProcessPhi(GraphVisitor *v, Inst *inst);
73 static bool IsValidLoadObjectInput(Inst *input);
74 static bool IsCompareWithNullPtr(Inst *inst);
75 static bool HasOnlyKnownUsers(Inst *inst);
76 static bool ProcessSaveState(Inst *saveState, Inst *inst);
[all …]
Dlower_boxed_boolean.cpp25 #include "optimizer/ir/inst.h"
43 void LowerBoxedBoolean::VisitCompare(GraphVisitor *v, Inst *inst) in VisitCompare() argument
45 COMPILER_LOG(DEBUG, LOWER_BOXED_BOOLEAN) << "Start visit Compare with id = " << inst->GetId(); in VisitCompare()
47 auto input = inst->GetInput(0).GetInst(); in VisitCompare()
49 if (!IsCompareWithNullPtr(inst)) { in VisitCompare()
60 << "Applied LowerBoxedBoolean optimization to Compare with id = " << inst->GetId(); in VisitCompare()
62 auto graph = inst->GetBasicBlock()->GetGraph(); in VisitCompare()
63 inst->ReplaceUsers(graph->FindOrCreateConstant(0)); in VisitCompare()
67 void LowerBoxedBoolean::VisitLoadObject(GraphVisitor *v, Inst *inst) in VisitLoadObject() argument
69 … COMPILER_LOG(DEBUG, LOWER_BOXED_BOOLEAN) << "Start visit LoadObject with id = " << inst->GetId(); in VisitLoadObject()
[all …]
Dvn.cpp26 inline bool IsNotCommutativeInst(Inst *inst) in IsNotCommutativeInst() argument
28 return !inst->IsCommutative() || DataType::IsFloatType(inst->GetType()); in IsNotCommutativeInst()
31 inline bool IsAddressArithmeticInst(Inst *inst) in IsAddressArithmeticInst() argument
33 return inst->GetType() == DataType::POINTER && in IsAddressArithmeticInst()
34 (inst->GetOpcode() == Opcode::AddI || inst->GetOpcode() == Opcode::SubI); in IsAddressArithmeticInst()
37 static bool AddClassInst(Inst *inst, VnObject *obj) in AddClassInst() argument
39 if (inst->GetOpcode() != Opcode::LoadAndInitClass && inst->GetOpcode() != Opcode::InitClass && in AddClassInst()
40 inst->GetOpcode() != Opcode::LoadClass) { in AddClassInst()
45 auto classInst = static_cast<ClassInst *>(inst); in AddClassInst()
52 inst->SetVnObject(obj); in AddClassInst()
[all …]
/arkcompiler/runtime_core/static_core/compiler/optimizer/ir/
Danalysis.h26 class Inst; variable
29 Inst *InstStoredValue(Inst *inst, Inst **secondValue);
30 Inst *InstStoredValue(Inst *inst);
32 template <typename T = Inst>
34 bool HasTryBlockBetween(Inst *dominateInst, Inst *inst);
35 bool IsSuitableForImplicitNullCheck(const Inst *inst);
36 bool IsInstNotNull(const Inst *inst);
37 bool CheckFcmpInputs(Inst *input0, Inst *input1);
38 bool CheckFcmpWithConstInput(Inst *input0, Inst *input1);
40 bool CanRemoveOverflowCheck(Inst *inst, Marker marker);
[all …]
Dgraph_checker.h82 void CheckUserOfInt32(BasicBlock *block, Inst *inst, User &user);
83 void CheckInstUsers(Inst *inst, [[maybe_unused]] BasicBlock *block);
84 void CheckPhiInputs(Inst *phiInst);
91 bool CheckInstHasInput(Inst *inst, Inst *input);
92 bool CheckInstHasUser(Inst *inst, Inst *user);
95 bool FindCaller(Inst *caller, BasicBlock *domBlock, ArenaStack<Inst *> *inlinedCalls);
96 void CheckSpillFillHolder(Inst *inst);
97 bool CheckInstRegUsageSaved(const Inst *inst, Register reg) const;
107 void CheckInputType(Inst *inst);
110 void PrepareUsers(Inst *inst, ArenaVector<User *> *users);
[all …]
/arkcompiler/runtime_core/static_core/compiler/optimizer/analysis/
Dalias_visitor.h125 Pointer(PointerType type, const Inst *base, const Inst *idx, uint64_t imm, const void *typePtr) in Pointer()
129 Pointer(const Inst *base, const PointerOffset &offset) : PointerOffset(offset), base_(base) {} in Pointer()
136 static Pointer CreateObject(const Inst *base) in CreateObject()
154 … static Pointer CreateObjectField(const Inst *base, uint32_t typeId, const void *typePtr = nullptr)
160 static Pointer CreateArrayElement(const Inst *array, const Inst *idx, uint64_t imm = 0)
166 static Pointer CreateRawOffset(const Inst *obj, const Inst *idx, uint64_t imm = 0)
172 static Pointer CreateDictionaryElement(const Inst *array, const Inst *idx, uint64_t imm = 0)
178 static Pointer CreateUnknownOffset(const Inst *obj) in CreateUnknownOffset()
183 const Inst *GetBase() const in GetBase()
188 const Inst *GetIdx() const in GetIdx()
[all …]
Dalias_visitor.cpp156 bool Pointer::IsEscapingAlias(const Inst *inst) in IsEscapingAlias() argument
158 if (!inst->IsReferenceOrAny()) { in IsEscapingAlias()
161 for (auto &user : inst->GetUsers()) { in IsEscapingAlias()
215 if (inst->IsRuntimeCall()) { in IsEscapingAlias()
222 if (!inst->IsNotRemovable() && !inst->IsReferenceOrAny()) { in IsEscapingAlias()
262 inst->GetBasicBlock()->GetGraph()->Dump(&std::cerr))); in IsEscapingAlias()
268 static Pointer GetDynamicAccessPointer(Inst *inst, Inst *base, DynObjectAccessType type, DynObjectA… in GetDynamicAccessPointer() argument
274 Inst *idx = inst->GetDataFlowInput(1); in GetDynamicAccessPointer()
278 … (std::cerr << "Unexpected access type BY_NAME for access mode ARRAY: ", inst->Dump(&std::cerr))); in GetDynamicAccessPointer()
282 … (std::cerr << "Unsupported dynamic access type in alias analysis: ", inst->Dump(&std::cerr))); in GetDynamicAccessPointer()
[all …]
/arkcompiler/runtime_core/compiler/optimizer/optimizations/
Dcleanup.h62 void MarkLiveRec(Marker live_mrk, Inst *inst);
65 void SetLiveRec(Inst *inst, Marker mrk, Marker live_mrk);
66 void LiveUserSearchRec(Inst *inst, Marker mrk, Marker live_mrk, Marker dead_mrk);
87 ArenaUnorderedMap<Inst *, uint32_t> map_;
89 Inst *fake_root_ {nullptr};
91 // number of the inst according to the order it is reached during the DFS
94 inline uint32_t GetInstId(Inst *inst) const in GetInstId() argument
96 ASSERT(map_.count(inst) > 0); in GetInstId()
97 return map_.at(inst); in GetInstId()
101 * The immediate dominator of 'inst'
[all …]
/arkcompiler/runtime_core/static_core/compiler/optimizer/ir_builder/
Dinst_templates.yaml17 % opc = inst.stripped_mnemonic.match regex_arithm
20 …auto inst = graph_->CreateInst<%= opc %>(<%= get_type(inst.dtype) %>, GetPc(instruction->GetAddres…
21 <%=template('operands', inst, '')-%>
22 AddInstruction(inst);
24 % opc = inst.stripped_mnemonic =~ /^div/ ? 'Div' : 'Mod'
26 …auto inst_check = graph_->CreateInstZeroCheck(<%= get_type(inst.dtype) %>, GetPc(instruction->GetA…
27 % if inst.acc_and_operands.last.imm?
29 …inst_check->SetInput(0, FindOrCreate32BitConstant(instruction->GetImm<<%= inst.get_format %>, 0>()…
31 inst_check->SetInput(0, <%= inst.get_input_string(1) %>);
34 % if (!inst.acc_and_operands[1].acc? && !inst.acc_write?)
[all …]
/arkcompiler/runtime_core/compiler/optimizer/ir_builder/
Dinst_templates.yaml17 % opc = inst.stripped_mnemonic.match regex_arithm
20 …auto inst = graph_->CreateInst<%= opc %>(<%= get_type(inst.dtype) %>, GetPc(instruction->GetAddres…
21 <%=template('operands', inst, '')-%>
22 AddInstruction(inst);
24 % opc = inst.stripped_mnemonic =~ /div/ ? 'Div' : 'Mod'
26 …auto inst_check = graph_->CreateInstZeroCheck(<%= get_type(inst.dtype) %>, GetPc(instruction->GetA…
27 % if inst.acc_and_operands.last.imm?
29 …inst_check->SetInput(0, FindOrCreate32BitConstant(instruction->GetImm<<%= inst.get_format %>, 0>()…
31 inst_check->SetInput(0, <%= inst.get_input_string(1) %>);
34 inst_check->SetInput(0, <%= inst.get_input_string(1) %>);
[all …]
/arkcompiler/runtime_core/static_core/compiler/tests/
Diterators_test.cpp26 void CheckInstForwardIterator(BasicBlock *block, std::vector<Inst *> &result) in CheckInstForwardIterator()
29 for (auto inst : block->PhiInsts()) { in CheckInstForwardIterator() local
30 result.push_back(inst); in CheckInstForwardIterator()
35 for (auto inst : block->Insts()) { in CheckInstForwardIterator() local
36 result.push_back(inst); in CheckInstForwardIterator()
41 for (auto inst : block->AllInsts()) { in CheckInstForwardIterator() local
42 result.push_back(inst); in CheckInstForwardIterator()
47 void CheckInstForwardValidIterator(BasicBlock *block, std::vector<Inst *> &result) in CheckInstForwardValidIterator()
50 for (auto inst : block->PhiInstsSafe()) { in CheckInstForwardValidIterator() local
51 result.push_back(inst); in CheckInstForwardValidIterator()
[all …]

12345678910>>...36