You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tvm.apache.org by ar...@apache.org on 2022/06/22 23:03:36 UTC
[tvm] branch main updated: Sort functions (#11814)
This is an automated email from the ASF dual-hosted git repository.
areusch pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tvm.git
The following commit(s) were added to refs/heads/main by this push:
new f53f70cb93 Sort functions (#11814)
f53f70cb93 is described below
commit f53f70cb93d589beaf55e443d0383f9e495cccd1
Author: Mehrdad Hessar <mh...@octoml.ai>
AuthorDate: Wed Jun 22 16:03:30 2022 -0700
Sort functions (#11814)
---
src/relay/backend/contrib/cmsisnn/tir_to_runtime.cc | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/src/relay/backend/contrib/cmsisnn/tir_to_runtime.cc b/src/relay/backend/contrib/cmsisnn/tir_to_runtime.cc
index 2d34cebb15..d5fb2ac97e 100644
--- a/src/relay/backend/contrib/cmsisnn/tir_to_runtime.cc
+++ b/src/relay/backend/contrib/cmsisnn/tir_to_runtime.cc
@@ -490,7 +490,25 @@ runtime::Module TIRToRuntime(IRModule mod, Target target) {
CodeGenCMSISNN codegen;
Array<String> function_names;
codegen.Init(output_ssa, emit_asserts, target->str());
+
+ std::vector<std::pair<tvm::GlobalVar, tvm::BaseFunc>> funcs;
for (auto kv : mod->functions) {
+ funcs.push_back(kv);
+ }
+
+ std::sort(funcs.begin(), funcs.end(),
+ [](std::pair<tvm::GlobalVar, tvm::BaseFunc> kv_a,
+ std::pair<tvm::GlobalVar, tvm::BaseFunc> kv_b) {
+ std::string name_hint_a = kv_a.first->name_hint;
+ std::string name_hint_b = kv_b.first->name_hint;
+ size_t name_a_length = name_hint_a.length();
+ size_t name_b_length = name_hint_b.length();
+ if (name_a_length < name_b_length) return true;
+ if (name_a_length > name_b_length) return false;
+ return name_hint_a < name_hint_b;
+ });
+
+ for (auto kv : funcs) {
auto prim_func = Downcast<PrimFunc>(kv.second);
auto global_symbol = prim_func->GetAttr<String>(tvm::attr::kGlobalSymbol);
function_names.push_back(global_symbol.value());