This is an automated email from the ASF dual-hosted git repository.
ruihangl 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 eb4eb3e88d [FFI] bump to latest version (#18654)
eb4eb3e88d is described below
commit eb4eb3e88df4a43aa66bb500c61445fc98f5789a
Author: Tianqi Chen <[email protected]>
AuthorDate: Wed Jan 14 09:38:15 2026 -0500
[FFI] bump to latest version (#18654)
This PR bumps tvm-ffi to latest version
---
3rdparty/tvm-ffi | 2 +-
apps/hexagon_api/CMakeLists.txt | 6 ++++++
apps/hexagon_launcher/cmake/android/CMakeLists.txt | 2 ++
apps/hexagon_launcher/cmake/hexagon/CMakeLists.txt | 2 ++
include/tvm/ir/expr.h | 3 +--
include/tvm/ir/module.h | 4 ++--
include/tvm/relax/expr.h | 8 +++-----
src/ir/module.cc | 9 +++++----
src/relax/ir/expr.cc | 6 +++---
tests/python/ir/test_ir_container.py | 1 -
10 files changed, 25 insertions(+), 18 deletions(-)
diff --git a/3rdparty/tvm-ffi b/3rdparty/tvm-ffi
index ae346ec92a..c78e8b4eef 160000
--- a/3rdparty/tvm-ffi
+++ b/3rdparty/tvm-ffi
@@ -1 +1 @@
-Subproject commit ae346ec92a3c386f1376064ae086aae72947c329
+Subproject commit c78e8b4eefa076c457af97bd3930dd664aec71c3
diff --git a/apps/hexagon_api/CMakeLists.txt b/apps/hexagon_api/CMakeLists.txt
index 4dfba8669b..b310227baf 100644
--- a/apps/hexagon_api/CMakeLists.txt
+++ b/apps/hexagon_api/CMakeLists.txt
@@ -47,6 +47,8 @@ ExternalProject_Add(x86_tvm_runtime_rpc
"-DUSE_HEXAGON_TOOLCHAIN=${USE_HEXAGON_TOOLCHAIN}"
"-DCMAKE_CXX_STANDARD=17"
"-DTVM_FFI_USE_LIBBACKTRACE=OFF"
+ "-DTVM_FFI_USE_THREADS=OFF"
+ "-DTVM_FFI_USE_DL_LIBS=OFF"
"-DUSE_RPC=ON"
"-DUSE_CPP_RPC=ON"
"-DUSE_HEXAGON=ON"
@@ -81,6 +83,8 @@ ExternalProject_Add(android_tvm_runtime_rpc
"-DUSE_HEXAGON_ARCH=${USE_HEXAGON_ARCH}"
"-DCMAKE_CXX_STANDARD=17"
"-DTVM_FFI_USE_LIBBACKTRACE=OFF"
+ "-DTVM_FFI_USE_THREADS=OFF"
+ "-DTVM_FFI_USE_DL_LIBS=OFF"
"-DUSE_RPC=ON"
"-DUSE_CPP_RPC=ON"
"-DUSE_HEXAGON=ON"
@@ -133,6 +137,8 @@ ExternalProject_Add(hexagon_tvm_runtime_rpc
"-DHEXAGON_EXTERNAL_LIBS_SHA=${HEXAGON_EXTERNAL_LIBS_SHA}"
"-DCMAKE_CXX_STANDARD=17"
"-DTVM_FFI_USE_LIBBACKTRACE=OFF"
+ "-DTVM_FFI_USE_THREADS=OFF"
+ "-DTVM_FFI_USE_DL_LIBS=OFF"
"-DUSE_RPC=OFF"
"-DUSE_HEXAGON=ON"
"-DUSE_HEXAGON_RPC=ON"
diff --git a/apps/hexagon_launcher/cmake/android/CMakeLists.txt
b/apps/hexagon_launcher/cmake/android/CMakeLists.txt
index 42b5feb03a..ea02efd144 100644
--- a/apps/hexagon_launcher/cmake/android/CMakeLists.txt
+++ b/apps/hexagon_launcher/cmake/android/CMakeLists.txt
@@ -79,6 +79,8 @@ ExternalProject_Add(android_tvm_runtime
"-DUSE_HEXAGON_ARCH=${USE_HEXAGON_ARCH}"
"-DUSE_HEXAGON_SDK=${USE_HEXAGON_SDK}"
"-DTVM_FFI_USE_LIBBACKTRACE=OFF"
+ "-DTVM_FFI_USE_THREADS=OFF"
+ "-DTVM_FFI_USE_DL_LIBS=OFF"
"-DUSE_LLVM=OFF"
"-DUSE_RPC=OFF"
INSTALL_COMMAND ""
diff --git a/apps/hexagon_launcher/cmake/hexagon/CMakeLists.txt
b/apps/hexagon_launcher/cmake/hexagon/CMakeLists.txt
index d17b5186aa..e250f5a3cc 100644
--- a/apps/hexagon_launcher/cmake/hexagon/CMakeLists.txt
+++ b/apps/hexagon_launcher/cmake/hexagon/CMakeLists.txt
@@ -90,6 +90,8 @@ ExternalProject_Add(static_hexagon_tvm_runtime
"-DUSE_HEXAGON_ARCH=${USE_HEXAGON_ARCH}"
"-DUSE_HEXAGON_SDK=${USE_HEXAGON_SDK}"
"-DTVM_FFI_USE_LIBBACKTRACE=OFF"
+ "-DTVM_FFI_USE_THREADS=OFF"
+ "-DTVM_FFI_USE_DL_LIBS=OFF"
"-DUSE_LLVM=OFF"
"-DUSE_RPC=OFF"
"-DUSE_CUSTOM_LOGGING=ON"
diff --git a/include/tvm/ir/expr.h b/include/tvm/ir/expr.h
index 09c0363986..fd2e0e6a51 100644
--- a/include/tvm/ir/expr.h
+++ b/include/tvm/ir/expr.h
@@ -465,8 +465,7 @@ class GlobalVarNode : public RelaxExprNode {
return equal(name_hint, other->name_hint, false, "name_hint");
}
- uint64_t SHash(uint64_t init_hash,
- ffi::TypedFunction<uint64_t(AnyView, uint64_t, bool)> hash)
const {
+ int64_t SHash(int64_t init_hash, ffi::TypedFunction<int64_t(AnyView,
int64_t, bool)> hash) const {
return hash(name_hint, init_hash, false);
}
diff --git a/include/tvm/ir/module.h b/include/tvm/ir/module.h
index 3f70b2e255..2ccddc85dc 100644
--- a/include/tvm/ir/module.h
+++ b/include/tvm/ir/module.h
@@ -146,8 +146,8 @@ class IRModuleNode : public Object {
TVM_DLL bool SEqual(const IRModuleNode* other,
ffi::TypedFunction<bool(AnyView, AnyView, bool,
AnyView)> equal) const;
- TVM_DLL uint64_t SHash(uint64_t init_hash,
- ffi::TypedFunction<uint64_t(AnyView, uint64_t, bool)>
hash) const;
+ TVM_DLL int64_t SHash(int64_t init_hash,
+ ffi::TypedFunction<int64_t(AnyView, int64_t, bool)>
hash) const;
/*!
* \brief Add a function to the global environment.
diff --git a/include/tvm/relax/expr.h b/include/tvm/relax/expr.h
index 9b5a3176f4..9b4fa91379 100644
--- a/include/tvm/relax/expr.h
+++ b/include/tvm/relax/expr.h
@@ -365,9 +365,8 @@ class VarNode : public LeafExprNode {
equal(struct_info_, other->struct_info_, false, "struct_info_");
}
- uint64_t SHash(uint64_t init_hash,
- ffi::TypedFunction<uint64_t(AnyView, uint64_t, bool)> hash)
const {
- uint64_t hash_value = init_hash;
+ int64_t SHash(int64_t init_hash, ffi::TypedFunction<int64_t(AnyView,
int64_t, bool)> hash) const {
+ int64_t hash_value = init_hash;
hash_value = hash(vid, hash_value, false);
hash_value = hash(struct_info_, hash_value, false);
return hash_value;
@@ -647,8 +646,7 @@ class VarBindingNode : public BindingNode {
bool SEqual(const VarBindingNode* other,
ffi::TypedFunction<bool(AnyView, AnyView, bool, AnyView)> equal)
const;
- uint64_t SHash(uint64_t init_hash,
- ffi::TypedFunction<uint64_t(AnyView, uint64_t, bool)> hash)
const;
+ int64_t SHash(int64_t init_hash, ffi::TypedFunction<int64_t(AnyView,
int64_t, bool)> hash) const;
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("relax.expr.VarBinding", VarBindingNode,
BindingNode);
};
diff --git a/src/ir/module.cc b/src/ir/module.cc
index b0104ba14d..e7f2511038 100644
--- a/src/ir/module.cc
+++ b/src/ir/module.cc
@@ -81,9 +81,9 @@ bool IRModuleNode::SEqual(const IRModuleNode* other,
return true;
}
-uint64_t IRModuleNode::SHash(uint64_t init_hash,
- ffi::TypedFunction<uint64_t(AnyView, uint64_t,
bool)> hash) const {
- uint64_t hash_value = init_hash;
+int64_t IRModuleNode::SHash(int64_t init_hash,
+ ffi::TypedFunction<int64_t(AnyView, int64_t,
bool)> hash) const {
+ int64_t hash_value = init_hash;
hash_value = hash(this->attrs, hash_value, false);
hash_value = hash(this->global_infos, hash_value, false);
@@ -96,7 +96,8 @@ uint64_t IRModuleNode::SHash(uint64_t init_hash,
// sort by the hash key of the keys.
std::sort(temp.begin(), temp.end(),
[](const KV& lhs, const KV& rhs) { return std::get<0>(lhs) <
std::get<0>(rhs); });
- hash_value = hash(static_cast<uint64_t>(temp.size()), hash_value, false);
+ uint64_t temp_size = static_cast<uint64_t>(temp.size());
+ hash_value = hash(static_cast<int64_t>(temp_size), hash_value, false);
// first need to define the GlobalVar in the order of the keys
for (size_t i = 0; i < temp.size(); ++i) {
hash_value = hash(std::get<1>(temp[i]), hash_value, true);
diff --git a/src/relax/ir/expr.cc b/src/relax/ir/expr.cc
index 2c681b00bc..1d5b715cfb 100644
--- a/src/relax/ir/expr.cc
+++ b/src/relax/ir/expr.cc
@@ -459,9 +459,9 @@ bool VarBindingNode::SEqual(const VarBindingNode* other,
}
}
-uint64_t VarBindingNode::SHash(uint64_t init_hash,
- ffi::TypedFunction<uint64_t(AnyView, uint64_t,
bool)> hash) const {
- uint64_t hash_value = init_hash;
+int64_t VarBindingNode::SHash(int64_t init_hash,
+ ffi::TypedFunction<int64_t(AnyView, int64_t,
bool)> hash) const {
+ int64_t hash_value = init_hash;
if (value->IsInstance<FunctionNode>()) {
hash_value = hash(var, hash_value, true);
hash_value = hash(value, hash_value, false);
diff --git a/tests/python/ir/test_ir_container.py
b/tests/python/ir/test_ir_container.py
index 12502b6e6c..cd47766159 100644
--- a/tests/python/ir/test_ir_container.py
+++ b/tests/python/ir/test_ir_container.py
@@ -97,7 +97,6 @@ def test_getattr_map():
def test_in_container():
arr = tvm.runtime.convert(["a", "b", "c"])
assert "a" in arr
- assert tvm.tir.StringImm("a") in arr
assert "d" not in arr