@@ -629,6 +629,30 @@ BlockRV ConcreteScheduleNode::ReIndex(const BlockRV& block_rv, int buffer_index,
629629 return CreateRV<BlockRV>(result);
630630}
631631
632+ /* ******* Schedule: Data movement ********/
633+
634+ BlockRV ConcreteScheduleNode::ReadAt (const LoopRV& loop_rv, const BlockRV& block_rv,
635+ int read_buffer_index, const String& storage_scope) {
636+ StmtSRef result{nullptr };
637+ TVM_TIR_SCHEDULE_BEGIN ();
638+ result = tir::ReadAt (state_, this ->GetSRef (loop_rv), this ->GetSRef (block_rv), read_buffer_index,
639+ storage_scope);
640+ TVM_TIR_SCHEDULE_END (" read-at" , this ->error_render_level_ );
641+ this ->state_ ->DebugVerify ();
642+ return CreateRV<BlockRV>(result);
643+ }
644+
645+ BlockRV ConcreteScheduleNode::WriteAt (const LoopRV& loop_rv, const BlockRV& block_rv,
646+ int write_buffer_index, const String& storage_scope) {
647+ StmtSRef result{nullptr };
648+ TVM_TIR_SCHEDULE_BEGIN ();
649+ result = tir::WriteAt (state_, this ->GetSRef (loop_rv), this ->GetSRef (block_rv), write_buffer_index,
650+ storage_scope);
651+ TVM_TIR_SCHEDULE_END (" write-at" , this ->error_render_level_ );
652+ this ->state_ ->DebugVerify ();
653+ return CreateRV<BlockRV>(result);
654+ }
655+
632656/* ******* Schedule: Compute location ********/
633657
634658void ConcreteScheduleNode::ComputeAt (const BlockRV& block_rv, const LoopRV& loop_rv,
0 commit comments