This update implements the usage of AllocationOpInterface in the buffer hoisting/promotion passes. Two interface methods, namely getHoistingKind and buildPromotedAlloc, have been added. The former indicates which kind of hoisting (loop, block) an allocation operation supports, while the latter builds a stack allocation operation for promotable allocations used by the promote-buffers-to-stack pass.
This update makes these passes be functional for user customized allocation operation.
I think we usually don't have this in the enum and instead write Loop | Block where HoistingKind is used.