Home
last modified time | relevance | path

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

1234567891011

/arkcompiler/runtime_core/compiler/optimizer/ir/
Dgraph_checker.h64 void CheckPhiInputs(Inst *phi_inst);
71 bool CheckInstHasInput(Inst *inst, Inst *input);
72 bool CheckInstHasUser(Inst *inst, Inst *user);
75 void CheckSpillFillHolder(Inst *inst);
76 bool CheckInstRegUsageSaved(const Inst *inst, Register reg) const;
90 …void CheckObjectRec(const Inst *object, const Inst *user, const BasicBlock *block, Inst *start_fro…
92 void FindObjectInSaveState(const Inst *object, Inst *ss) const;
94 … void CheckSaveStateOsrRec(const Inst *inst, const Inst *user, BasicBlock *block, Marker visited);
119 static void VisitMov([[maybe_unused]] GraphVisitor *v, Inst *inst);
120 static void VisitNeg([[maybe_unused]] GraphVisitor *v, Inst *inst);
[all …]
Dgraph_checker.cpp48 for (auto inst : block->AllInsts()) { in UserInputCheck() local
49 auto u = inst->GetFirstUser(); in UserInputCheck()
55 for (auto &user : inst->GetUsers()) { in UserInputCheck()
58 …ASSERT_DO(CheckInstHasInput(user_inst, inst), std::cerr << "Instruction is not an input to its use… in UserInputCheck()
59 … << "input: " << *inst << std::endl in UserInputCheck()
62 for (auto &input : inst->GetInputs()) { in UserInputCheck()
65 …ASSERT_DO(CheckInstHasUser(input_inst, inst), std::cerr << "Instruction is not a user to its input… in UserInputCheck()
66 … << "user: " << *inst << std::endl in UserInputCheck()
70 auto it = std::find_if(inst->GetInputs().begin(), inst->GetInputs().end(), in UserInputCheck()
72 [[maybe_unused]] bool has_save_state = (it != inst->GetInputs().end()); in UserInputCheck()
[all …]
Dir_constructor.h33 * INST(0, Opcode::IntConstant).Constant(12);
34 * INST(1, Opcode::IntConstant).Constant(12);
35 * INST(2, Opcode::Add).Inputs(0, 1);
36 * INST(6, Opcode::Compare).Inputs(2).CC(ConditionCode::CC_AE);
37 * INST(7, Opcode::If).Inputs(6);
40 * INST(3, Opcode::Not).Inputs(0);
43 * INST(4, Opcode::Phi).Inputs(2, 3);
44 * INST(5, Opcode::Not).Inputs(4);
57 * INST creates new instruction and append it to the current basic block.
120 auto inst = graph_->CreateInst(std::forward<Args>(args)...); in NewInst() local
[all …]
Danalysis.cpp42 bool HasOsrEntryBetween(Inst *dominate_inst, Inst *inst) in HasOsrEntryBetween() argument
44 auto bb = inst->GetBasicBlock(); in HasOsrEntryBetween()
59 Inst *InstStoredValue(Inst *inst, Inst **second_value) in InstStoredValue() argument
61 ASSERT_PRINT(inst->IsStore(), "Attempt to take a stored value on non-store instruction"); in InstStoredValue()
62 Inst *val = nullptr; in InstStoredValue()
64 switch (inst->GetOpcode()) { in InstStoredValue()
72 val = inst->GetInput(inst->GetInputsCount() - 1).GetInst(); in InstStoredValue()
75 val = inst->GetInput(1).GetInst(); in InstStoredValue()
78 val = inst->GetInput(0).GetInst(); in InstStoredValue()
82 val = inst->GetInput(inst->GetInputsCount() - 2U).GetInst(); in InstStoredValue()
[all …]
/arkcompiler/runtime_core/compiler/optimizer/code_generator/
Dcodegen.h171 void CreateStackMap(Inst *inst, Inst *user = nullptr);
173 void CreateStackMapRec(SaveStateInst *save_state, bool require_vreg_map, Inst *target_site);
174 void CreateVRegMap(SaveStateInst *save_state, size_t vregs_count, Inst *target_site);
175 void CreateVreg(const Location &location, Inst *inst, const VirtualRegister &vreg);
180 void CreateVRegForRegister(const Location &location, Inst *inst, const VirtualRegister &vreg);
183 * 'live_inputs' shows that inst's source registers should be added the the mask
186 std::pair<RegMask, VRegMask> GetLiveRegisters(Inst *inst) in GetLiveRegisters() argument
190 if (!options.IsCompilerSaveOnlyLiveRegisters() || inst == nullptr) { in GetLiveRegisters()
200 // Add registers from intervals that are live at inst's definition in GetLiveRegisters()
202 …lr.VisitIntervalsWithLiveRegisters<live_inputs>(inst, [&live_regs, &live_fp_regs, this](const auto… in GetLiveRegisters()
[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 …]
Dmemory_barriers.cpp30 for (auto inst : barriers_insts_) { 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(barriers_insts_.begin(), barriers_insts_.end(), inst) != barriers_insts_.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 …]
Dmemory_barriers.h57 void VisitDefault([[maybe_unused]] Inst *inst) override in VisitDefault() argument
59 ASSERT_DO(!inst->IsCall() && !inst->IsStore(), in VisitDefault()
60 … (std::cerr << "need to make a visitor for the instruction: " << *inst << std::endl)); in VisitDefault()
63 void CheckAllInputs(Inst *inst);
64 void CheckInput(Inst *input);
65 void CheckTwoInputs(Inst *input1, Inst *input2);
67 static void VisitCallStatic(GraphVisitor *v, Inst *inst);
68 static void VisitCallIndirect(GraphVisitor *v, Inst *inst);
69 static void VisitCall(GraphVisitor *v, Inst *inst);
70 static void VisitUnresolvedCallStatic(GraphVisitor *v, Inst *inst);
[all …]
Dvn.cpp26 static void AddSpecialTraits(Inst *inst, VnObject *obj) in AddSpecialTraits() argument
28 switch (inst->GetOpcode()) { in AddSpecialTraits()
30 if (inst->GetFlagsMask() == 0) { in AddSpecialTraits()
32 obj->Add(static_cast<uint32_t>(inst->CastToIntrinsic()->GetIntrinsicId())); in AddSpecialTraits()
36 obj->Add(static_cast<uint32_t>(inst->CastToCompareAnyType()->GetAnyType())); in AddSpecialTraits()
39 obj->Add(static_cast<uint32_t>(inst->CastToCastAnyTypeValue()->GetAnyType())); in AddSpecialTraits()
46 void VnObject::Add(Inst *inst) in Add() argument
48 Add(static_cast<uint32_t>(inst->GetOpcode())); in Add()
49 Add(static_cast<uint32_t>(inst->GetType())); in Add()
51 AddSpecialTraits(inst, this); in Add()
[all …]
Dscheduler.cpp49 void Scheduler::AddDep(uint32_t *prio, Inst *from, Inst *to, uint32_t latency, Inst *barrier) in AddDep()
90 Inst *last_barrier = nullptr; in BuildAllDeps()
91 for (auto inst : bb->InstsSafeReverse()) { in BuildAllDeps() local
92 ProcessInst(inst, mrk, &num_inst, &num_between, &num_special, &last_barrier); in BuildAllDeps()
104 void Scheduler::ProcessInst(Inst *inst, Marker mrk, uint32_t *num_inst, uint32_t *num_between, uint… in ProcessInst() argument
105 Inst **last_barrier) in ProcessInst()
108 uint32_t inst_latency = inst->Latency(); in ProcessInst()
109 bool barrier = inst->IsBarrier(); in ProcessInst()
112 old_.insert({inst, (*num_inst)++}); in ProcessInst()
113 ocycle_.insert({inst, ++oprev_}); in ProcessInst()
[all …]
Ddeoptimize_elimination.cpp38 for (auto &inst : deoptimize_must_throw_) { in ReplaceDeoptimizeIfByUnconditionalDeoptimize() local
39 auto block = inst->GetBasicBlock(); in ReplaceDeoptimizeIfByUnconditionalDeoptimize()
41 block->ReplaceInstByDeoptimize(inst); in ReplaceDeoptimizeIfByUnconditionalDeoptimize()
62 bool DeoptimizeElimination::RequireRegMap(Inst *inst) in RequireRegMap() argument
64 for (auto &user : inst->GetUsers()) { in RequireRegMap()
79 void DeoptimizeElimination::VisitDefault(Inst *inst) in VisitDefault() argument
81 if (inst->GetType() != DataType::REFERENCE) { in VisitDefault()
84 for (auto &user : inst->GetUsers()) { in VisitDefault()
97 inst->RemoveUsers<true>(); in VisitDefault()
100 …COMPILER_LOG(DEBUG, DEOPTIMIZE_ELIM) << "All users the instructions " << inst->GetId() << " are Sa… in VisitDefault()
[all …]
/arkcompiler/runtime_core/libpandafile/tests/
Dbytecode_instruction_tests.cpp32 BytecodeInstruction inst(bytecode); in TEST() local
33 EXPECT_EQ(static_cast<uint8_t>(inst.GetOpcode()), 0x00); in TEST()
34 EXPECT_EQ((inst.GetVReg<BytecodeInstruction::Format::V4_IMM4, 0>()), 1); in TEST()
35 EXPECT_EQ((inst.GetImm<BytecodeInstruction::Format::V4_IMM4, 0>()), -6); in TEST()
40 BytecodeInstruction inst(bytecode); in TEST() local
41 EXPECT_EQ(static_cast<uint8_t>(inst.GetOpcode()), 0x00); in TEST()
42 EXPECT_EQ((inst.GetVReg<BytecodeInstruction::Format::V4_IMM4, 0>()), 0xf); in TEST()
43 EXPECT_EQ((inst.GetImm<BytecodeInstruction::Format::V4_IMM4, 0>()), 0x2); in TEST()
49 BytecodeInstruction inst(bytecode); in TEST() local
50 EXPECT_EQ(static_cast<uint8_t>(inst.GetOpcode()), 0x00); in TEST()
[all …]
/arkcompiler/runtime_core/compiler/tests/
Ddeoptimize_elimination_test.cpp45 INST(2, Opcode::SaveStateDeoptimize).Inputs(1).SrcVregs({1}); in TEST_F()
47 INST(10, Opcode::SaveState).Inputs(1).SrcVregs({1}); in TEST_F()
49 INST(3, Opcode::SaveStateDeoptimize).Inputs(1).SrcVregs({1}); in TEST_F()
50 INST(4, Opcode::Compare).b().Inputs(0, 1).CC(CC_GT); in TEST_F()
51 INST(5, Opcode::DeoptimizeIf).Inputs(4, 3); in TEST_F()
53 INST(6, Opcode::SaveStateDeoptimize).Inputs(1).SrcVregs({1}); in TEST_F()
54 INST(7, Opcode::DeoptimizeIf).Inputs(4, 6); in TEST_F()
57 INST(8, Opcode::DeoptimizeIf).Inputs(1, 6); in TEST_F()
59 INST(9, Opcode::ReturnVoid).v0id(); in TEST_F()
71 INST(3, Opcode::SaveStateDeoptimize).Inputs(1).SrcVregs({1}); in TEST_F()
[all …]
Diterators_test.cpp26 void Check(std::vector<Inst *> &tested_instructions) in Check()
33 std::vector<Inst *> result; in Check()
34 for (auto inst : block->PhiInsts()) { in Check() local
35 result.push_back(inst); in Check()
40 for (auto inst : block->Insts()) { in Check() local
41 result.push_back(inst); in Check()
46 for (auto inst : block->AllInsts()) { in Check() local
47 result.push_back(inst); in Check()
53 for (auto inst : block->PhiInstsSafe()) { in Check() local
54 result.push_back(inst); in Check()
[all …]
Dvn_test.cpp49 INST(6, Opcode::Add).u64().Inputs(0, 1); in TEST_F()
50 INST(7, Opcode::Sub).u32().Inputs(1, 0); in TEST_F()
51 INST(8, Opcode::Mul).f32().Inputs(4, 5); in TEST_F()
52 INST(9, Opcode::Div).f64().Inputs(3, 2); in TEST_F()
53 INST(10, Opcode::Sub).u32().Inputs(1, 0); in TEST_F()
54 INST(11, Opcode::Div).f64().Inputs(3, 2); in TEST_F()
55 INST(12, Opcode::Mul).f32().Inputs(4, 5); in TEST_F()
56 INST(13, Opcode::Add).u64().Inputs(0, 1); in TEST_F()
57 INST(20, Opcode::SaveState).NoVregs(); in TEST_F()
58 INST(14, Opcode::CallStatic).b().InputsAutoType(6, 7, 8, 9, 10, 11, 12, 13, 20); in TEST_F()
[all …]
Dscheduler_test.cpp39 INST(8, Opcode::Add).u64().Inputs(0, 1); in TEST_F()
40 INST(9, Opcode::Add).u64().Inputs(2, 3); in TEST_F()
42 INST(10, Opcode::Add).u64().Inputs(8, 9); in TEST_F()
44 INST(11, Opcode::Add).u64().Inputs(4, 5); in TEST_F()
45 INST(12, Opcode::Add).u64().Inputs(6, 7); in TEST_F()
46 INST(13, Opcode::Add).u64().Inputs(11, 12); in TEST_F()
48 INST(14, Opcode::Add).u64().Inputs(10, 13); in TEST_F()
49 INST(15, Opcode::Return).u64().Inputs(14); in TEST_F()
81 INST(10, Opcode::Add).u64().Inputs(2, 3); in TEST_F()
82 INST(11, Opcode::Add).u64().Inputs(4, 5); in TEST_F()
[all …]
Dmove_constants_test.cpp33 INST(2, Opcode::IfImm).CC(CC_GE).Imm(5).Inputs(0); in TEST_F()
38 INST(3, Opcode::ReturnI).u64().Imm(0); in TEST_F()
43 INST(4, Opcode::IfImm).CC(CC_LE).Imm(10).Inputs(0); in TEST_F()
48 INST(6, Opcode::Return).ref().Inputs(1); in TEST_F()
53 INST(8, Opcode::Return).ref().Inputs(1); in TEST_F()
63 INST(2, Opcode::IfImm).CC(CC_GE).Imm(5).Inputs(0); in TEST_F()
68 INST(3, Opcode::ReturnI).u64().Imm(0); in TEST_F()
74 INST(4, Opcode::IfImm).CC(CC_LE).Imm(10).Inputs(0); in TEST_F()
79 INST(6, Opcode::Return).ref().Inputs(1); in TEST_F()
84 INST(8, Opcode::Return).ref().Inputs(1); in TEST_F()
[all …]
Dgraph_cloner_test.cpp42 INST(44, Opcode::LoadAndInitClass).ref().Inputs().TypeId(68); in TEST_F()
43 INST(3, Opcode::NewArray).ref().Inputs(44, 2); in TEST_F()
44 INST(14, Opcode::Compare).CC(ConditionCode::CC_LT).b().Inputs(0, 13); // i < X in TEST_F()
45 INST(15, Opcode::IfImm).SrcType(DataType::BOOL).CC(CC_NE).Imm(0).Inputs(14); in TEST_F()
49 INST(4, Opcode::Phi).s32().Inputs(0, 10); in TEST_F()
50 INST(7, Opcode::SaveState).Inputs(0, 1, 2, 3).SrcVregs({0, 1, 2, 3}); in TEST_F()
51 INST(8, Opcode::BoundsCheck).s32().Inputs(2, 4, 7); in TEST_F()
52 INST(9, Opcode::StoreArray).s32().Inputs(3, 8, 0); // a[i] = 0 in TEST_F()
53 INST(10, Opcode::Add).s32().Inputs(4, 1); // i++ in TEST_F()
54 INST(5, Opcode::Compare).CC(ConditionCode::CC_LT).b().Inputs(10, 13); // i < X in TEST_F()
[all …]
Dmemory_coalescing_test.cpp45 INST(44, Opcode::LoadAndInitClass).ref().Inputs().TypeId(68); in TEST_F()
46 INST(3, Opcode::NewArray).ref().Inputs(44, 0).TypeId(77); in TEST_F()
47 INST(41, Opcode::SaveState).Inputs(3).SrcVregs({7}); in TEST_F()
48 INST(42, Opcode::NullCheck).ref().Inputs(3, 41); in TEST_F()
49 INST(225, Opcode::LoadArrayI).s64().Inputs(42).Imm(0x0); in TEST_F()
50 INST(227, Opcode::LoadArrayI).s64().Inputs(42).Imm(0x1); in TEST_F()
52 INST(51, Opcode::Add).s64().Inputs(225, 227); in TEST_F()
53 INST(229, Opcode::StoreArrayI).s64().Inputs(42, 51).Imm(0x0); in TEST_F()
54 INST(230, Opcode::StoreArrayI).s64().Inputs(42, 51).Imm(0x1); in TEST_F()
55 INST(40, Opcode::Return).s64().Inputs(51); in TEST_F()
[all …]
Dadjust_arefs_test.cpp41 INST(10, Opcode::Phi).s32().Inputs(1, 40); in TEST_F()
42 INST(11, Opcode::LoadArray).u64().Inputs(0, 1); in TEST_F()
43 INST(12, Opcode::LoadArray).u64().Inputs(0, 1); in TEST_F()
44 INST(13, Opcode::StoreArray).u64().Inputs(0, 1, 2); in TEST_F()
45 INST(14, Opcode::StoreArray).u64().Inputs(0, 1, 2); in TEST_F()
46 INST(15, Opcode::Compare).b().Inputs(10, 1); in TEST_F()
47 INST(19, Opcode::IfImm).CC(CC_NE).Inputs(15).Imm(0); in TEST_F()
51 INST(40, Opcode::Add).s32().Inputs(10, 3); in TEST_F()
55 INST(50, Opcode::ReturnVoid); in TEST_F()
69 INST(10, Opcode::Phi).s32().Inputs(1, 40); in TEST_F()
[all …]
Dif_conversion_test.cpp52 INST(3, Opcode::Compare).b().CC(CC_B).Inputs(0, 1); in TEST_F()
53 INST(4, Opcode::IfImm).SrcType(DataType::BOOL).CC(CC_NE).Imm(0).Inputs(3); in TEST_F()
57 INST(5, Opcode::Mul).u64().Inputs(0, 2); in TEST_F()
61 INST(6, Opcode::Phi).u64().Inputs({{2, 0}, {3, 5}}); in TEST_F()
62 INST(7, Opcode::Return).u64().Inputs(6); in TEST_F()
76 INST(3, Opcode::Compare).b().CC(CC_B).Inputs(0, 1); in TEST_F()
77 INST(5, Opcode::Mul).u64().Inputs(0, 2); in TEST_F()
78INST(4, Opcode::SelectImm).u64().SrcType(DataType::BOOL).CC(CC_NE).Imm(0).Inputs(5, 0, 3); in TEST_F()
79 INST(7, Opcode::Return).u64().Inputs(4); in TEST_F()
94 INST(3, Opcode::If).SrcType(DataType::UINT64).CC(CC_NE).Inputs(0, 1); in TEST_F()
[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/bytecode_optimizer/
Dreg_acc_alloc.cpp19 #include "compiler/optimizer/ir/inst.h"
26 bool IsAccWriteBetween(compiler::Inst *src_inst, compiler::Inst *dst_inst) in IsAccWriteBetween()
31 compiler::Inst *inst = src_inst->GetNext(); in IsAccWriteBetween() local
33 while (inst != dst_inst) { in IsAccWriteBetween()
34 if (UNLIKELY(inst == nullptr)) { in IsAccWriteBetween()
53 inst = *(block->AllInsts()); in IsAccWriteBetween()
55 if (inst->IsAccWrite()) { in IsAccWriteBetween()
59 if (inst->IsAccRead()) { in IsAccWriteBetween()
60 compiler::Inst *input = inst->GetInput(AccReadIndex(inst)).GetInst(); in IsAccWriteBetween()
67 inst = inst->GetNext(); in IsAccWriteBetween()
[all …]
/arkcompiler/runtime_core/irtoc/lang/
Dir_generator.rb28 Output.scoped_puts "inline bool #{func.name}(Inst* source_inst) {" do
34 Output << "Inst* p_#{index} = source_inst->GetInput(#{index}).GetInst();"
37 func.constants.each { |_, inst| generate_instruction(inst) }
84 bb.instructions.each { |inst| generate_instruction(inst) }
87 def generate_instruction(inst) argument
88 … raise 'No LiveIn/LiveOut are allowed in IR Builder generator' if inst.IsLiveIn? || inst.IsLiveOut?
89 var_name = inst.local_var_name
90 Output << "// Inst #{inst}"
91 if inst.IsReturnVoid?
93 elsif inst.IsReturn?
[all …]
/arkcompiler/runtime_core/compiler/optimizer/optimizations/regalloc/
Dreg_alloc_resolver.cpp19 #include "compiler/optimizer/ir/inst.h"
35 for (auto inst : block->AllInstsSafe()) { in Resolve() local
36 if (inst->IsSaveState()) { in Resolve()
37 ResolveSaveState(inst); in Resolve()
40 ResolveInputs(inst); in Resolve()
41 ResolveOutput(inst); in Resolve()
42 if (GetGraph()->IsInstThrowable(inst)) { in Resolve()
43 AddCatchPhiMoves(inst); in Resolve()
49 void RegAllocResolver::AddCatchPhiMoves(Inst *inst) in AddCatchPhiMoves() argument
53 auto handlers = GetGraph()->GetThrowableInstHandlers(inst); in AddCatchPhiMoves()
[all …]

1234567891011