From 43ffa9255c412f4ab9d7afc1b254bd44e0b57757 Mon Sep 17 00:00:00 2001 From: tlopex <820958424@qq.com> Date: Mon, 20 Jul 2026 20:58:25 -0400 Subject: [PATCH] [TIRx] Improve BufferStore cast warning context --- src/tirx/script/builder/ir.cc | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/tirx/script/builder/ir.cc b/src/tirx/script/builder/ir.cc index 1f198b4238e5..0e67fd151458 100644 --- a/src/tirx/script/builder/ir.cc +++ b/src/tirx/script/builder/ir.cc @@ -784,18 +784,27 @@ void BufferStore(Buffer buffer, PrimExpr value, ffi::Array indices, << ": LHS is `" << lhs_dtype << "`, RHS is `" << rhs_dtype << "`, indexing lanes: " << index_lanes; } + value = tvm::cast(lhs_dtype, value); + } + tvm::tirx::BufferStore store(buffer, value, indices, predicate); + if (lhs_dtype != rhs_dtype) { if (lhs_dtype.code() != rhs_dtype.code()) { if ((lhs_dtype.MatchesCode(DLDataTypeCode::kDLInt, DLDataTypeCode::kDLUInt)) && (rhs_dtype.code() == DLDataTypeCode::kDLFloat || rhs_dtype.code() == DLDataTypeCode::kDLBfloat)) { + ffi::String kernel_name = ""; + if (ffi::Optional frame = IRBuilder::Current()->FindFrame()) { + kernel_name = frame.value()->name.value_or(""); + } LOG(WARNING) << "Casting in BufferStore may lose precision" << ": LHS is `" << lhs_dtype << "`, RHS is `" << rhs_dtype - << "`, indexing lanes: " << index_lanes; + << "`, indexing lanes: " << index_lanes << ", kernel: `" << kernel_name << "`" + << "\nBufferStore:\n" + << store; } } - value = tvm::cast(lhs_dtype, value); } - AddToParent(tvm::tirx::BufferStore(buffer, value, indices, predicate)); + AddToParent(store); } DeclBufferFrame DeclBuffer(ffi::Array shape, PrimType dtype, ffi::String buffer_name,