tqchen opened a new pull request, #18865:
URL: https://github.com/apache/tvm/pull/18865

   ## Summary
   
   This PR introduces `AllocBufferNode`/`AllocBuffer` as a single TIR statement 
that both allocates memory and declares a buffer into scope. This replaces the 
previous pattern of `Allocate(var, dtype, shape, cond, DeclBuffer(buf, body))` 
with the simpler `AllocBuffer(buf, body)`.
   
   ### Main changes
   
   - **New IR node** `AllocBufferNode` with fields `{buffer, annotations, 
body}` — same semantics as `DeclBuffer` but also allocates memory
   - **TVMScript**: `T.alloc_buffer(shape, dtype, scope)` now emits 
`AllocBuffer` directly (statement-level allocation). 
`T.sblock_alloc_buffer(...)` for SBlock-level buffer allocation (full parameter 
set)
   - **All codegen backends** (C, CUDA, Metal, OpenCL, WebGPU, LLVM, NVPTX, 
AMDGPU, SPIR-V) updated to handle `AllocBufferNode`
   - **All TIR transforms** (storage_rewrite, flatten_buffer, vectorize_loop, 
lower_warp_memory, etc.) updated
   - **All S-TIR transforms** (compact_buffer_region, merge_shared_memory, 
inject_double_buffer, etc.) updated
   - **Removed `AllocateNode`** entirely — `AllocBuffer` is now the sole 
allocation primitive
   - **Removed `AllocDescriptor`** from merge_shared_memory_allocations — uses 
`Buffer` objects directly
   - **Added `AllocBuffer::ConstantAllocationSize()`** inline helper method
   
   ### Design rationale
   
   The old `Allocate + DeclBuffer` pair was a historical artifact: 
`AllocateNode` stored raw fields (`buffer_var`, `dtype`, `extents`, 
`condition`) separate from the `Buffer` object, requiring pattern matching 
(`IsAllocateDeclBufferPattern`) to reconstruct the buffer association. 
`AllocBuffer` unifies this into a single node with a proper `Buffer` reference, 
simplifying codegen backends and transform passes.
   
   225 files changed, ~3500 insertions/deletions (net near-zero, mostly 
mechanical migration).
   
   ## Test plan
   
   - [x] All TIR base tests pass
   - [x] All TIR transform tests pass
   - [x] TVMScript roundtrip tests pass
   - [x] S-TIR transform tests pass
   - [x] Codegen tests pass
   - [x] All-platform minimal tests pass
   - [x] C++ functor tests pass
   - [x] Pre-commit clean (clang-format, ruff, etc.)


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to