非 ISA 运算

1. 范围

本页给出 ~/pto-isa.txt 中非 ISA 指令条目的 PTO AS 运算规范。

  • Level-1:SSA 形态,由编译器管理分配与同步。
  • Level-2:DPS 形态,支持显式缓冲复用与同步原语。

2. View 运算

2.1 make_tensor_view

// L1
%dst = pto.make_tensor_view %ptr, shape = [sh1,sh2,sh3,sh4,sh5] strides = [st1,st2,st3,st4,st5] : !pto.tensor_view<sh1xsh2xsh3xsh4xsh5xdtype>

2.2 partition_view

// L1
%dst = pto.partition_view %src, offsets = [of1,of2,of3,of4,of5], sizes = [sh1,sh2,sh3,sh4,sh5] : !pto.tensor_view<sh1xsh2xsh3xsh4xsh5xdtype> -> !pto.partition_tensor_view<sh1xsh2xsh3xsh4xsh5xdtype>

3. Tile 分配

3.1 alloc_tile(静态参数)

// L2
%dst = pto.alloc_tile : !pto.tile_buf<loc, dtype, rows, cols, v_row, v_col, blayout, slayou, fractal, pad>

3.2 alloc_tile(动态有效域)

// L2
%dst = pto.alloc_tile valid_row = %vr valid_col = %vc : !pto.tile_buf<loc, dtype, rows, cols, v_row=?, v_col=?, blayout, slayou, fractal, pad>

4. 核参数查询

4.1 get_block_idx

// L1 / L2
%idx = pto.get_block_idx

4.2 get_subblock_idx

// L1 / L2
%idx = pto.get_subblock_idx

4.3 get_block_num

// L1 / L2
%num = pto.get_block_num

4.4 get_subblock_num

// L1 / L2
%num = pto.get_subblock_num

5. 指针与标量访问

5.1 addptr

// L2
%ptr_new = pto.addptr %ptr, %offset

5.2 tgetval

// L2
pto.tgetval ins(%src, %index : !pto.tile_buf<...>, dtype) outs(%val : dtype)

5.3 tsetval

// L2
pto.tsetval ins(%index, %val : dtype, dtype) outs(%dst : !pto.tile_buf<...>)

6. 同步原语(Level-2)

6.1 record_event

pto.record_event[src_op, dst_op, eventID]

当前表格支持 op:TLOADTSTORE_ACCTSTORE_VECTMOV_M2LTMOV_M2STMOV_M2BTMOV_M2VTMOV_V2MTMATMULTVEC

6.2 wait_event

pto.wait_event[src_op, dst_op, eventID]

当前表格支持 op:TLOADTSTORE_ACCTSTORE_VECTMOV_M2LTMOV_M2STMOV_M2BTMOV_M2VTMOV_V2MTMATMULTVEC

6.3 barrier

pto.barrier(op)

当前表格支持 op:TVECTMATMUL

7. 一致性说明

  • 这些非 ISA PTO AS 运算统一收敛到本节文档,不进入 docs/isa/ 的 manifest 驱动指令索引。
  • docs/isa/TSYNC.md / docs/isa/TSYNC_zh.md 仍是 ISA 层同步语义权威来源。
  • ~/pto-isa.txt 变更时,本页应在同一变更集中同步更新。