include/

Public C/C++ headers for PTO Tile Lib (primarily header-only, template-based). Upper-layer frameworks or operator code can include these headers to emit PTO ISA Tile-level operations.

Quick Start

Include the unified entry header:

#include <pto/pto-inst.hpp>

pto/pto-inst.hpp selects the appropriate backend (CPU simulation/stub or NPU implementation) based on build configuration. See include/pto/README.md for details.

Layout

  • include/pto/: Public PTO ISA API and backend implementations (common / cpu / npu / comm)

PTO Instruction Implementation Status (CPU / Costmodel / A2 / A3 / A5 / Kirin)

This table tracks per-instruction backend availability:

  • CPU: __CPU_SIM (CPU simulation backend). More information about this backend can be found in docs/coding/cpu_sim.md
  • Costmodel: __COSTMODEL (A2 / A3 cost model backend, including stub and fit paths; if either path supports an instruction, it is marked as supported).
  • A2 (Ascend 910B) / A3 (Ascend 910C): share the include/pto/npu/a2a3/ implementation today (so the status is identical for both columns).
  • A5 (Ascend 950): uses the include/pto/npu/a5/ implementation.
  • Kirin: uses the include/pto/npu/kirin9030/ implementation.
Instruction CPU Costmodel A2 A3 A5 Kirin
MGATHER Yes TODO TODO TODO Yes TODO
MSCATTER Yes TODO TODO TODO Yes TODO
TABS Yes Yes Yes Yes Yes Yes
TADD Yes Yes Yes Yes Yes Yes
TADDC Yes TODO TODO TODO TODO TODO
TADDS Yes Yes Yes Yes Yes Yes
TADDSC Yes TODO TODO TODO TODO TODO
TAND Yes TODO Yes Yes Yes Yes
TANDS Yes TODO Yes Yes Yes Yes
TASSIGN Yes TODO Yes Yes Yes Yes
TAXPY TODO TODO Yes Yes Yes TODO
TBROADCAST Yes TODO Yes Yes Yes TODO
TCI Yes TODO Yes Yes Yes Yes
TCMP Yes Yes Yes Yes Yes Yes
TCMPS Yes TODO Yes Yes Yes Yes
TCOLARGMAX TODO TODO Yes Yes Yes Yes
TCOLARGMIN TODO TODO Yes Yes Yes Yes
TCOLEXPAND Yes TODO Yes Yes Yes Yes
TCOLEXPANDADD TODO TODO Yes Yes Yes TODO
TCOLEXPANDDIV TODO TODO Yes Yes Yes TODO
TCOLEXPANDEXPDIF TODO TODO Yes Yes Yes TODO
TCOLEXPANDMAX TODO TODO Yes Yes Yes TODO
TCOLEXPANDMIN TODO TODO Yes Yes Yes TODO
TCOLEXPANDMUL TODO TODO Yes Yes Yes TODO
TCOLEXPANDSUB TODO TODO Yes Yes Yes TODO
TCOLMAX Yes Yes Yes Yes Yes Yes
TCOLMIN Yes Yes Yes Yes Yes Yes
TCOLPROD TODO TODO Yes Yes Yes TODO
TCOLSUM Yes Yes Yes Yes Yes TODO
TConcat TODO TODO TODO TODO Yes TODO
TCVT Yes Yes Yes Yes Yes TODO
TDIV Yes Yes Yes Yes Yes Yes
TDIVS Yes Yes Yes Yes Yes Yes
TEXP Yes Yes Yes Yes Yes Yes
TEXPANDS Yes TODO Yes Yes Yes Yes
TEXTRACT Yes Yes Yes Yes Yes Yes
TEXTRACT_FP TODO TODO Yes Yes Yes Yes
TFILLPAD Yes TODO Yes Yes Yes Yes
TFILLPAD_EXPAND TODO TODO Yes Yes Yes Yes
TFILLPAD_INPLACE TODO TODO Yes Yes Yes Yes
TFMOD TODO TODO Yes Yes Yes TODO
TFMODS TODO TODO Yes Yes Yes TODO
TGATHER Yes Yes Yes Yes Yes Yes
TGATHERB Yes TODO Yes Yes Yes Yes
TGEMV TODO TODO Yes Yes Yes Yes
TGEMV_ACC TODO TODO Yes Yes Yes Yes
TGEMV_BIAS TODO TODO Yes Yes Yes Yes
TGEMV_MX TODO TODO TODO TODO Yes TODO
TGET Yes TODO Yes Yes Yes TODO
TGET_ASYNC Yes TODO Yes Yes Yes TODO
TGET_SCALE_ADDR TODO TODO TODO TODO Yes TODO
TIMG2COL TODO TODO Yes Yes Yes TODO
TINSERT TODO TODO TODO TODO Yes TODO
TINSERT_FP TODO TODO Yes Yes Yes Yes
TLOAD Yes Yes Yes Yes Yes Yes
TLOG Yes TODO Yes Yes Yes Yes
TLRELU Yes TODO Yes Yes Yes Yes
TMATMUL Yes Yes Yes Yes Yes Yes
TMATMUL_ACC Yes TODO Yes Yes Yes Yes
TMATMUL_BIAS Yes TODO Yes Yes Yes Yes
TMATMUL_MX Yes TODO TODO TODO Yes Yes
TMAX Yes Yes Yes Yes Yes Yes
TMAXS Yes Yes Yes Yes Yes Yes
TMIN Yes Yes Yes Yes Yes Yes
TMINS Yes Yes Yes Yes Yes Yes
TMOV Yes Yes Yes Yes Yes Yes
TMOV_FP Yes TODO Yes Yes Yes Yes
TMRGSORT Yes Yes Yes Yes Yes Yes
TMUL Yes Yes Yes Yes Yes Yes
TMULS Yes Yes Yes Yes Yes Yes
TNEG Yes Yes Yes Yes Yes Yes
TNOT Yes TODO Yes Yes Yes Yes
TNOTIFY Yes TODO Yes Yes Yes TODO
TOR Yes TODO Yes Yes Yes Yes
TORS Yes TODO Yes Yes Yes Yes
TPARTADD Yes TODO Yes Yes Yes Yes
TPARTARGMAX TODO TODO TODO TODO Yes TODO
TPARTARGMIN TODO TODO TODO TODO Yes TODO
TPARTMAX Yes TODO Yes Yes Yes Yes
TPARTMIN Yes TODO Yes Yes Yes Yes
TPARTMUL No TODO Yes Yes Yes Yes
TPREFETCH Yes TODO Yes Yes Yes Yes
TPREFETCH_ASYNC Yes TODO Yes Yes Yes TODO
TPRELU Yes TODO Yes Yes Yes Yes
TPRINT TODO TODO Yes Yes Yes TODO
TPOW Yes TODO Yes Yes Yes TODO
TPUT Yes TODO Yes Yes Yes TODO
TPUT_ASYNC Yes TODO Yes Yes Yes TODO
TPOWS Yes TODO Yes Yes Yes TODO
TQUANT TODO TODO TODO TODO Yes TODO
TRANDOM No TODO TODO TODO Yes TODO
TRECIP Yes Yes Yes Yes Yes Yes
TREDUCE Yes TODO Yes Yes Yes TODO
TRELU Yes TODO Yes Yes Yes Yes
TREM Yes TODO Yes Yes Yes Yes
TREMS Yes TODO Yes Yes Yes Yes
TRESHAPE Yes TODO Yes Yes Yes TODO
TROWARGMAX TODO TODO Yes Yes Yes TODO
TROWARGMIN TODO TODO Yes Yes Yes TODO
TROWEXPAND Yes Yes Yes Yes Yes Yes
TROWEXPANDADD TODO TODO Yes Yes Yes TODO
TROWEXPANDDIV Yes TODO Yes Yes Yes TODO
TROWEXPANDEXPDIF TODO TODO Yes Yes Yes TODO
TROWEXPANDMAX Yes TODO Yes Yes Yes TODO
TROWEXPANDMIN TODO TODO Yes Yes Yes TODO
TROWEXPANDMUL TODO TODO Yes Yes Yes TODO
TROWEXPANDSUB Yes TODO Yes Yes Yes TODO
TROWMAX Yes Yes Yes Yes Yes Yes
TROWMIN Yes Yes Yes Yes Yes Yes
TROWPROD TODO TODO Yes Yes Yes TODO
TROWSUM Yes Yes Yes Yes Yes Yes
TRSQRT Yes Yes Yes Yes Yes Yes
TSCATTER Yes Yes Yes Yes Yes Yes
TSEL Yes Yes Yes Yes Yes Yes
TSELS Yes Yes Yes Yes Yes Yes
SETFMATRIX TODO TODO Yes Yes Yes TODO
SET_IMG2COL_PADDING TODO TODO Yes Yes Yes TODO
SET_IMG2COL_RPT TODO TODO Yes Yes Yes TODO
TSHL Yes TODO Yes Yes Yes Yes
TSHLS Yes TODO Yes Yes Yes Yes
TSHR Yes TODO Yes Yes Yes Yes
TSHRS Yes TODO Yes Yes Yes Yes
TSORT32 Yes Yes Yes Yes Yes Yes
TSQRT Yes Yes Yes Yes Yes Yes
TSTORE Yes Yes Yes Yes Yes TODO
TSTORE_FP Yes TODO Yes Yes Yes Yes
TSUB Yes Yes Yes Yes Yes Yes
TSUBC Yes TODO TODO TODO TODO TODO
TSUBS Yes Yes Yes Yes Yes Yes
TSUBSC Yes TODO TODO TODO TODO TODO
TSUBVIEW TODO TODO Yes Yes TODO TODO
TSYNC TODO TODO Yes Yes Yes Yes
TTEST Yes TODO Yes Yes Yes TODO
TTRANS Yes Yes Yes Yes Yes Yes
TTRI TODO TODO Yes Yes Yes Yes
TWAIT Yes TODO Yes Yes Yes TODO
TXOR Yes TODO Yes Yes Yes Yes
TXORS Yes TODO Yes Yes Yes Yes

Notes:

  • Yes: the backend has an available implementation.
  • TODO: the instruction is already part of the public API or documented ISA surface, but the backend implementation is not available yet or has not been integrated for that backend.
  • No: explicitly unsupported, or not planned for that backend at the moment.
  • Blank: the status has not been finalized yet, or the entry is still being reviewed.