| /arkcompiler/runtime_core/static_core/compiler/optimizer/ |
| D | pipeline.cpp | 2 * Copyright (c) 2021-2024 Huawei Device Co., Ltd. 7 * http://www.apache.org/licenses/LICENSE-2.0 25 #include "optimizer/ir/graph.h" 71 std::unique_ptr<Pipeline> Pipeline::Create(Graph *graph) in Create() argument 73 switch (graph->GetLanguage()) { in Create() 76 return std::make_unique<Pipeline>(graph); in Create() 80 static inline bool RunCodegenPass(Graph *graph) in RunCodegenPass() argument 82 if (graph->GetMethodProperties().GetRequireFrameSetup()) { in RunCodegenPass() 83 return graph->RunPass<Codegen>(); in RunCodegenPass() 85 return graph->RunPass<CodegenNative>(); in RunCodegenPass() [all …]
|
| /arkcompiler/runtime_core/static_core/compiler/optimizer/optimizations/regalloc/ |
| D | reg_alloc.cpp | 2 * Copyright (c) 2021-2024 Huawei Device Co., Ltd. 7 * http://www.apache.org/licenses/LICENSE-2.0 29 bool IsGraphColoringEnable(Graph *graph) in IsGraphColoringEnable() argument 31 if (graph->GetArch() == Arch::AARCH32 || !graph->IsAotMode() || !g_options.IsCompilerAotRa()) { in IsGraphColoringEnable() 36 for (auto bb : graph->GetBlocksRPO()) { in IsGraphColoringEnable() 37 instCount += bb->CountInsts(); in IsGraphColoringEnable() 42 bool ShouldSkipAllocation(Graph *graph) in ShouldSkipAllocation() argument 45 // Parameters spill-fills are empty in ShouldSkipAllocation() 46 return graph->GetCallingConvention() == nullptr && !graph->IsBytecodeOptimizer(); in ShouldSkipAllocation() 48 return !graph->IsBytecodeOptimizer(); in ShouldSkipAllocation() [all …]
|
| /arkcompiler/runtime_core/compiler/tests/ |
| D | unit_test.h | 2 * Copyright (c) 2021-2022 Huawei Device Co., Ltd. 7 * http://www.apache.org/licenses/LICENSE-2.0 39 if (arg_types == nullptr || index >= arg_types->size()) { in GetMethodTotalArgumentType() 42 return arg_types->at(index); in GetMethodTotalArgumentType() 50 return arg_types->size(); in GetMethodTotalArgumentsCount() 73 // We have issue with QEMU - so reduce memory heap in CommonTest() 106 Graph *CreateEmptyGraph(bool is_osr = false) const 108 return GetAllocator()->New<Graph>(GetAllocator(), GetLocalAllocator(), arch_, is_osr); 111 Graph *CreateEmptyGraph(Arch arch) const in CreateEmptyGraph() 113 return GetAllocator()->New<Graph>(GetAllocator(), GetLocalAllocator(), arch, false); in CreateEmptyGraph() [all …]
|
| D | compiler_graph_test.cpp | 7 * http://www.apache.org/licenses/LICENSE-2.0 34 #include "graph.h" 35 #include "graph.cpp" 68 …graph_test_.TestBuildGraphFromFile(pfile, [&test_method_name, &status](Graph* graph, std::string &… in __anon696e89750102() argument 73 EXPECT_NE(graph, nullptr); in __anon696e89750102() 74 auto start_block = graph->GetStartBlock(); in __anon696e89750102() 77 EXPECT_TRUE(start_block->IsMarked(mrk)); in __anon696e89750102() 93 …graph_test_.TestBuildGraphFromFile(pfile, [&test_method_name, &status](Graph* graph, std::string &… in __anon696e89750202() argument 98 EXPECT_NE(graph, nullptr); in __anon696e89750202() 101 for (const auto &block : graph->GetVectorBlocks()) { in __anon696e89750202() [all …]
|
| D | compiler_basicblock_test.cpp | 7 * http://www.apache.org/licenses/LICENSE-2.0 25 #include "graph.h" 53 graph_test_.TestBuildGraphFromFile(pfile, [&](Graph* graph, std::string &method_name) { in __anon0e716f500102() argument 55 auto start_block = graph->GetStartBlock(); in __anon0e716f500102() 56 auto end_block = graph->GetEndBlock(); in __anon0e716f500102() 59 for (auto bb : graph->GetBlocksRPO()) { in __anon0e716f500102() 60 if (!bb->IsCatchBegin()) { in __anon0e716f500102() 64 EXPECT_TRUE(BlocksPathDfsSearch(mrk, start_block, end_block, bb->GetSuccessor(0))); in __anon0e716f500102() 65 EXPECT_FALSE(BlocksPathDfsSearch(mrk, start_block, bb->GetSuccessor(0), end_block)); in __anon0e716f500102() 66 EXPECT_FALSE(BlocksPathDfsSearch(mrk, end_block, start_block, bb->GetSuccessor(0))); in __anon0e716f500102() [all …]
|
| D | loop_analyzer_new_test.cpp | 7 * http://www.apache.org/licenses/LICENSE-2.0 19 #include "graph.h" 50 …graph_test_.TestBuildGraphFromFile(pfile, [test_method_name, &status](Graph* graph, std::string &m… in __anon1625ceb10102() argument 55 EXPECT_NE(graph, nullptr); in __anon1625ceb10102() 56 EXPECT_TRUE(graph->RunPass<LoopAnalyzer>()); in __anon1625ceb10102() 73 …graph_test_.TestBuildGraphFromFile(pfile, [test_method_name, &status](Graph* graph, std::string &m… in __anon1625ceb10202() argument 78 EXPECT_NE(graph, nullptr); in __anon1625ceb10202() 79 for (auto bb : graph->GetBlocksRPO()) { in __anon1625ceb10202() 81 if (!bb->IsTryBegin()) { in __anon1625ceb10202() 84 Loop loop(graph->GetAllocator(), bb->GetSuccessor(0), 1); in __anon1625ceb10202() [all …]
|
| D | compiler_inst_test.cpp | 7 * http://www.apache.org/licenses/LICENSE-2.0 27 #include "graph.h" 91 …graph_test_.TestBuildGraphFromFile(pfile, [&test_method_name, &status](Graph* graph, std::string &… in __anonaa205d010102() argument 96 EXPECT_NE(graph, nullptr); in __anonaa205d010102() 98 for (auto bb : graph->GetBlocksRPO()) { in __anonaa205d010102() 99 for (auto inst : bb->AllInsts()) { in __anonaa205d010102() 100 if (!inst->IsSaveState()) { in __anonaa205d010102() 104 auto save_state_inst = inst->CastToSaveState(); in __anonaa205d010102() 105 save_state_inst->AllocateImmediates(graph->GetAllocator(), size); in __anonaa205d010102() 106 EXPECT_EQ(save_state_inst->GetImmediatesCount(), size); in __anonaa205d010102() [all …]
|
| D | ir_builder_test.cpp | 2 * Copyright (c) 2021-2022 Huawei Device Co., Ltd. 7 * http://www.apache.org/licenses/LICENSE-2.0 67 auto graph = CreateGraphWithDefaultRuntime(); in CheckSimple() local 68 GRAPH(graph) in CheckSimple() 73 BASIC_BLOCK(2, -1) in CheckSimple() 79 ASSERT_TRUE(GraphComparator().Compare(GetGraph(), graph)); in CheckSimple() 107 auto graph = CreateGraphWithDefaultRuntime(); in CheckSimpleWithImm() local 109 GRAPH(graph) in CheckSimpleWithImm() 114 BASIC_BLOCK(2, -1) in CheckSimpleWithImm() 120 ASSERT_TRUE(GraphComparator().Compare(GetGraph(), graph)); in CheckSimpleWithImm() [all …]
|
| D | dump_test.cpp | 7 * http://www.apache.org/licenses/LICENSE-2.0 27 #include "graph.h" 62 …graph_test_.TestBuildGraphFromFile(pfile, [&test_method_name, &status](Graph* graph, std::string &… in __anonb6b7089f0102() argument 67 EXPECT_NE(graph, nullptr); in __anonb6b7089f0102() 68 for (auto bb : graph->GetBlocksRPO()) { in __anonb6b7089f0102() 69 for (auto inst : bb->AllInsts()) { in __anonb6b7089f0102() 70 if (inst->GetOpcode() != Opcode::SaveState) { in __anonb6b7089f0102() 71 auto value1 = InstId(inst, graph->GetAllocator()); in __anonb6b7089f0102() 76 auto value = InstId(inst, graph->GetAllocator()); in __anonb6b7089f0102() 95 …graph_test_.TestBuildGraphFromFile(pfile, [&test_method_name, &status](Graph* graph, std::string &… in __anonb6b7089f0202() argument [all …]
|
| D | liveness_analyzer_new_test.cpp | 7 * http://www.apache.org/licenses/LICENSE-2.0 19 #include "graph.h" 50 …graph_test_.TestBuildGraphFromFile(pfile, [test_method_name, &status](Graph* graph, std::string &m… in __anon1c4086600102() argument 55 EXPECT_NE(graph, nullptr); in __anon1c4086600102() 56 LivenessAnalyzer liveness_analyzer(graph); in __anon1c4086600102() 59 std::string str = "\nRegisters intervals\n-\n\n" in __anon1c4086600102() 60 "Vector registers intervals\n-\n\n" in __anon1c4086600102() 61 "Stack slots intervals\n-\n"; in __anon1c4086600102() 80 …graph_test_.TestBuildGraphFromFile(pfile, [test_method_name, &status](Graph* graph, std::string &m… in __anon1c4086600202() argument 85 EXPECT_NE(graph, nullptr); in __anon1c4086600202() [all …]
|
| /arkcompiler/runtime_core/static_core/compiler/tests/ |
| D | unit_test.h | 2 * Copyright (c) 2021-2024 Huawei Device Co., Ltd. 7 * http://www.apache.org/licenses/LICENSE-2.0 69 if (argTypes_ == nullptr || index >= argTypes_->size()) { in GetMethodTotalArgumentType() 72 return argTypes_->at(index); in GetMethodTotalArgumentType() 80 return argTypes_->size(); in GetMethodTotalArgumentsCount() 125 // We have issue with QEMU - so reduce memory heap in CommonTest() 126 …em::MemConfig::Initialize(32_MB, 64_MB, 200_MB, 32_MB, 0, 0); // NOLINT(readability-magic-numbers) in CommonTest() 128 …em::MemConfig::Initialize(32_MB, 64_MB, 256_MB, 32_MB, 0, 0); // NOLINT(readability-magic-numbers) in CommonTest() 161 Graph *CreateEmptyGraph(bool isOsr = false) const 163 return GetAllocator()->New<Graph>(GetAllocator(), GetLocalAllocator(), arch_, isOsr); [all …]
|
| D | inst_generator.cpp | 2 * Copyright (c) 2021-2024 Huawei Device Co., Ltd. 7 * http://www.apache.org/licenses/LICENSE-2.0 19 Graph *GraphCreator::GenerateGraph(Inst *inst) in GenerateGraph() 21 Graph *graph; in GenerateGraph() local 23 switch (inst->GetOpcode()) { in GenerateGraph() 38 // -1 means special processing in GenerateGraph() 39 graph = GenerateOperation(inst, -1L); in GenerateGraph() 47 graph = GenerateOperation(inst, 0U); in GenerateGraph() 74 graph = GenerateOperation(inst, 1U); in GenerateGraph() 106 graph = GenerateOperation(inst, 2U); in GenerateGraph() [all …]
|
| D | adjust_arefs_test.cpp | 2 * Copyright (c) 2023-2024 Huawei Device Co., Ltd. 7 * http://www.apache.org/licenses/LICENSE-2.0 25 Graph *BuildGraphOneBlockContinuousChain(); 26 Graph *BuildGraphOneBlockBrokenChain(); 27 Graph *BuildGraphMultipleBlockContinuousChain(); 28 Graph *BuildGraphMultipleBlockBrokenChain(); 29 Graph *BuildGraphProcessIndex(uint64_t offset1, uint64_t offset2, uint64_t offset3); 32 // NOLINTBEGIN(readability-magic-numbers) 34 Graph *AdjustRefsTest::BuildGraphOneBlockContinuousChain() in BuildGraphOneBlockContinuousChain() 36 auto graph = CreateEmptyFastpathGraph(RUNTIME_ARCH); in BuildGraphOneBlockContinuousChain() local [all …]
|
| D | graph_creation_test.cpp | 2 * Copyright (c) 2021-2024 Huawei Device Co., Ltd. 7 * http://www.apache.org/licenses/LICENSE-2.0 24 // NOLINTBEGIN(readability-magic-numbers) 27 Graph *graph = CreateEmptyGraph(); in TEST_F() local 28 EXPECT_NE(graph, nullptr); in TEST_F() 33 Graph *graph = CreateGraphStartEndBlocks(); in TEST_F() local 34 EXPECT_NE(graph, nullptr); in TEST_F() 35 EXPECT_NE(graph->GetStartBlock(), nullptr); in TEST_F() 36 EXPECT_NE(graph->GetEndBlock(), nullptr); in TEST_F() 37 EXPECT_EQ(graph->GetAliveBlocksCount(), 2U); in TEST_F() [all …]
|
| D | ir_builder_test.cpp | 2 * Copyright (c) 2021-2024 Huawei Device Co., Ltd. 7 * http://www.apache.org/licenses/LICENSE-2.0 29 // NOLINTNEXTLINE(fuchsia-multiple-inheritance) 78 auto graph = CreateGraphWithDefaultRuntime(); in CheckSimple() local 79 GRAPH(graph) in CheckSimple() 84 BASIC_BLOCK(2U, -1L) in CheckSimple() 90 ASSERT_TRUE(GraphComparator().Compare(GetGraph(), graph)); in CheckSimple() 118 auto graph = CreateGraphWithDefaultRuntime(); in CheckSimpleWithImm() local 120 GRAPH(graph) in CheckSimpleWithImm() 125 BASIC_BLOCK(2U, -1L) in CheckSimpleWithImm() [all …]
|
| D | inst_generator.h | 2 * Copyright (c) 2021-2024 Huawei Device Co., Ltd. 7 * http://www.apache.org/licenses/LICENSE-2.0 31 Graph *GenerateGraph(Inst *inst); 59 Graph *CreateGraph(); 61 Inst *PopulateLoadArrayPair(Graph *graph, BasicBlock *block, Inst *inst, Opcode opc); 62 void PopulateStoreArrayPair(Graph *graph, Inst *inst, Opcode opc); 63 void PopulateReturnInlined(Graph *graph, BasicBlock *block, Inst *inst, int32_t n); 64 void PopulateCall(Graph *graph, BasicBlock *block, Inst *inst, DataType::Type type, int32_t n); 65 void PopulateLoadStoreArray(Graph *graph, Inst *inst, DataType::Type type, int32_t n); 66 void PopulateLoadStoreArrayI(Graph *graph, Inst *inst, DataType::Type type, int32_t n); [all …]
|
| D | reg_alloc_common_test.cpp | 2 * Copyright (c) 2023-2024 Huawei Device Co., Ltd. 7 * http://www.apache.org/licenses/LICENSE-2.0 25 void RunRegAllocatorsAndCheck(Graph *graph, Checker checker) const in RunRegAllocatorsAndCheck() argument 27 RunRegAllocatorsAndCheck(graph, graph->GetArchUsedRegs(), checker); in RunRegAllocatorsAndCheck() 31 void RunRegAllocatorsAndCheck(Graph *graph, RegMask mask, Checker checker) const in RunRegAllocatorsAndCheck() argument 33 if (graph->GetCallingConvention() == nullptr) { in RunRegAllocatorsAndCheck() 36 … auto graphLs = GraphCloner(graph, graph->GetAllocator(), graph->GetLocalAllocator()).CloneGraph(); in RunRegAllocatorsAndCheck() 43 if (GetGraph()->GetArch() == Arch::AARCH32) { in RunRegAllocatorsAndCheck() 46 … auto graphGc = GraphCloner(graph, graph->GetAllocator(), graph->GetLocalAllocator()).CloneGraph(); in RunRegAllocatorsAndCheck() 58 // NOLINTBEGIN(readability-magic-numbers) [all …]
|
| /arkcompiler/runtime_core/static_core/bytecode_optimizer/tests/ |
| D | codegen_test.cpp | 2 * Copyright (c) 2023-2024 Huawei Device Co., Ltd. 7 * http://www.apache.org/licenses/LICENSE-2.0 19 #include "assembler/assembly-emitter.h" 20 #include "assembler/assembly-function.h" 21 #include "assembler/assembly-literals.h" 22 #include "assembler/assembly-parser.h" 23 #include "assembler/assembly-program.h" 35 // NOLINTBEGIN(readability-magic-numbers) 75 map->insert({0U, &ins}); in TEST() 91 auto graph = CreateEmptyGraph(); in TEST_F() local [all …]
|
| /arkcompiler/runtime_core/static_core/irtoc/backend/ |
| D | function.cpp | 2 * Copyright (c) 2021-2024 Huawei Device Co., Ltd. 7 * http://www.apache.org/licenses/LICENSE-2.0 50 using compiler::Graph; 52 static bool RunIrtocOptimizations(Graph *graph); 53 static bool RunIrtocInterpreterOptimizations(Graph *graph); 58 graph_ = allocator->New<Graph>(allocator, localAllocator, arch, this, &runtime, false); in Compile() 63 if (GetGraph()->GetMode().IsNative()) { in Compile() 83 auto code = GetGraph()->GetCode(); in Compile() 93 …bool interpreter = GetGraph()->GetMode().IsInterpreter() || GetGraph()->GetMode().IsInterpreterEnt… in RunOptimizations() 121 ASSERT(GetGraph()->GetCode().Empty()); in RunOptimizations() [all …]
|
| /arkcompiler/runtime_core/static_core/compiler/tests/codegen/ |
| D | codegen_test_1.cpp | 7 * http://www.apache.org/licenses/LICENSE-2.0 18 #include "optimizer/ir/graph.h" 31 // NOLINTNEXTLINE(fuchsia-statically-constructed-objects,cert-msc51-cpp) 34 // NOLINTBEGIN(readability-magic-numbers,modernize-avoid-c-arrays,cppcoreguidelines-pro-bounds-poin… 39 movi.64 v0, 100000000 ## 0 -> 3 ## bb0 in TEST_F() 40 movi.64 v1, 4294967296 ## 1 -> 4 ## bb0 in TEST_F() 41 ldai 0 ## 2 -> 5 ## bb0 in TEST_F() 57 GRAPH(GetGraph()) in TEST_F() 61 CONSTANT(2U, 0UL); // r3 -> acc(3) in TEST_F() 62 CONSTANT(3U, 0x1UL); // r20 -> 0x1 (for inc constant) in TEST_F() [all …]
|
| /arkcompiler/runtime_core/static_core/compiler/optimizer/ir/ |
| D | graph.cpp | 2 * Copyright (c) 2021-2024 Huawei Device Co., Ltd. 7 * http://www.apache.org/licenses/LICENSE-2.0 16 #include "graph.h" 37 if (block->SetMarker(mrk)) { in MarkBlocksRec() 40 for (auto succ : block->GetSuccsBlocks()) { in MarkBlocksRec() 45 Graph::~Graph() in ~Graph() 48 encoder_->~Encoder(); in ~Graph() 52 void Graph::RemoveUnreachableBlocks() in RemoveUnreachableBlocks() 61 if (bb->IsMarked(mrk)) { in RemoveUnreachableBlocks() 66 if (bb->IsTryBegin()) { in RemoveUnreachableBlocks() [all …]
|
| /arkcompiler/runtime_core/static_core/compiler/optimizer/optimizations/ |
| D | optimize_string_concat.cpp | 7 * http://www.apache.org/licenses/LICENSE-2.0 25 #include "optimizer/ir/graph.h" 34 OptimizeStringConcat::OptimizeStringConcat(Graph *graph) : Optimization(graph) {} in OptimizeStringConcat() argument 36 RuntimeInterface::IdType GetStringBuilderClassId(Graph *graph) in GetStringBuilderClassId() argument 38 auto runtime = graph->GetRuntime(); in GetStringBuilderClassId() 39 auto klass = runtime->GetStringBuilderClass(); in GetStringBuilderClassId() 40 return klass == nullptr ? 0 : runtime->GetClassIdWithinFile(graph->GetMethod(), klass); in GetStringBuilderClassId() 52 if (GetGraph()->IsAotMode()) { in RunImpl() 57 for (auto block : GetGraph()->GetBlocksRPO()) { in RunImpl() 58 for (auto inst : block->Insts()) { in RunImpl() [all …]
|
| /arkcompiler/runtime_core/static_core/libllvmbackend/tests/ |
| D | inst_generator_test.cpp | 2 * Copyright (c) 2023-2024 Huawei Device Co., Ltd. 7 * http://www.apache.org/licenses/LICENSE-2.0 41 if ((*(it.begin()))->IsLowLevel()) { in GenerateOp() 46 auto graph = graphCreator_.GenerateGraph(i); in GenerateOp() local 48 graph->SetRuntime(graphCreator_.GetRuntime()); in GenerateOp() 49 aotBuilder.SetArch(graph->GetArch()); in GenerateOp() 50 aotBuilder.SetRuntime(graph->GetRuntime()); in GenerateOp() 52 …LLVMAotCompiler llvm(graph->GetRuntime(), graphCreator_.GetAllocator(), &aotBuilder, "", "inst-gen… in GenerateOp() 54 if (graph->GetAotData() == nullptr) { in GenerateOp() 56 auto aotData = graph->GetAllocator()->New<compiler::AotData>( in GenerateOp() [all …]
|
| /arkcompiler/runtime_core/static_core/compiler/optimizer/ir_builder/ |
| D | ir_builder.h | 2 * Copyright (c) 2021-2024 Huawei Device Co., Ltd. 7 * http://www.apache.org/licenses/LICENSE-2.0 20 #include "optimizer/ir/graph.h" 52 …aries boundaries {}; // NOLINT(misc-non-private-member-variables-in-class… 53 …Block *beginBb {nullptr}; // NOLINT(misc-non-private-member-variables-in-class… 54 …Block *endBb {nullptr}; // NOLINT(misc-non-private-member-variables-in-class… 55 …Vector<CatchCodeBlock> *catches {nullptr}; // NOLINT(misc-non-private-member-variables-in-class… 56 …Vector<BasicBlock *> *basicBlocks {nullptr}; // NOLINT(misc-non-private-member-variables-in-class… 57 …2_t id {INVALID_ID}; // NOLINT(misc-non-private-member-variables-in-class… 58 …containsThrowableInst {false}; // NOLINT(misc-non-private-member-variables-in-class… [all …]
|
| /arkcompiler/runtime_core/compiler/optimizer/ir_builder/ |
| D | ir_builder.h | 2 * Copyright (c) 2021-2022 Huawei Device Co., Ltd. 7 * http://www.apache.org/licenses/LICENSE-2.0 19 #include "optimizer/ir/graph.h" 46 …ries boundaries {}; // NOLINT(misc-non-private-member-variables-in-class… 47 …lock *begin_bb {nullptr}; // NOLINT(misc-non-private-member-variables-in-class… 48 …lock *end_bb {nullptr}; // NOLINT(misc-non-private-member-variables-in-class… 49 …ector<CatchCodeBlock> *catches {nullptr}; // NOLINT(misc-non-private-member-variables-in-class… 50 …ector<BasicBlock *> *basic_blocks {nullptr}; // NOLINT(misc-non-private-member-variables-in-class… 51 …_t id {INVALID_ID}; // NOLINT(misc-non-private-member-variables-in-class… 52 …ontains_throwable_inst {false}; // NOLINT(misc-non-private-member-variables-in-class… [all …]
|