This is an automated email from the ASF dual-hosted git repository.
mehrdadh 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 4f35b4ded1 [TIR][Hexagon] Async DMA fixups (#13436)
4f35b4ded1 is described below
commit 4f35b4ded106ea850f136c7d990e9a9008b5888b
Author: Chris Sullivan <[email protected]>
AuthorDate: Fri Nov 18 11:51:35 2022 -0800
[TIR][Hexagon] Async DMA fixups (#13436)
* [TIR] Ensure the body of the async_wait attribute is visited.
* [TIR][Runtime] Pass 'bypass_cache' flag during lowering and correctly
extract it from packed API.
---
src/runtime/hexagon/hexagon_device_api.cc | 2 +-
src/tir/transforms/lower_async_dma.cc | 2 +-
src/tir/transforms/lower_tvm_builtin.cc | 6 ++++--
3 files changed, 6 insertions(+), 4 deletions(-)
diff --git a/src/runtime/hexagon/hexagon_device_api.cc
b/src/runtime/hexagon/hexagon_device_api.cc
index 1c3b139d39..51cc976e46 100644
--- a/src/runtime/hexagon/hexagon_device_api.cc
+++ b/src/runtime/hexagon/hexagon_device_api.cc
@@ -229,7 +229,7 @@
TVM_REGISTER_GLOBAL("device_api.hexagon.dma_copy").set_body([](TVMArgs args, TVM
void* src = args[2];
int size = args[3];
ICHECK(size > 0);
- bool bypass_cache = args[3];
+ bool bypass_cache = args[4];
int ret = DMA_RETRY;
do {
diff --git a/src/tir/transforms/lower_async_dma.cc
b/src/tir/transforms/lower_async_dma.cc
index b9ba4d41b7..9a950c10c7 100644
--- a/src/tir/transforms/lower_async_dma.cc
+++ b/src/tir/transforms/lower_async_dma.cc
@@ -71,7 +71,7 @@ class AsyncDMALowerer : public StmtExprMutator {
Evaluate(Call(DataType::Int(32), builtin::dma_wait(), {queue_id,
async_wait->value}));
// concatenate the call with the body and return
- return SeqStmt({call_dma_wait, async_wait->body});
+ return SeqStmt({call_dma_wait,
StmtExprMutator::VisitStmt(async_wait->body)});
// Convert this, for example:
// attr [0] "async_commit_queue_scope" = 0;
diff --git a/src/tir/transforms/lower_tvm_builtin.cc
b/src/tir/transforms/lower_tvm_builtin.cc
index 25d6253972..082a54f9c7 100644
--- a/src/tir/transforms/lower_tvm_builtin.cc
+++ b/src/tir/transforms/lower_tvm_builtin.cc
@@ -329,12 +329,14 @@ class BuiltinLower : public StmtExprMutator {
PrimExpr dst = op->args[1];
PrimExpr src = op->args[2];
PrimExpr size = op->args[3];
+ PrimExpr bypass_cache = op->args[4];
std::string fdevapi_prefix =
"device_api." +
std::string(runtime::DeviceName(device_type_.as<IntImmNode>()->value));
- Call call_packed = Call(DataType::Int(32), builtin::tvm_call_packed(),
- {StringImm(fdevapi_prefix + ".dma_copy"),
queue_id, dst, src, size});
+ Call call_packed =
+ Call(DataType::Int(32), builtin::tvm_call_packed(),
+ {StringImm(fdevapi_prefix + ".dma_copy"), queue_id, dst, src,
size, bypass_cache});
return VisitExpr(call_packed);
}