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