背景
pto-spec 的 sorting 模块定义了两条 SFU 排序指令,规范链接:
- TSORT(稳定排序,输出重排后的值与组内原始 U32 下标)
- TMRGSORT(稳定归并两条已排序单行流)
现状(已确认)
当前仓库中这两条指令缺少可端到端使用的编译接口,具体如下:
1. dev-llvm15_56(LinxV5 后端)
- AsmParser / InstPrinter 仅有
tsort32 / tmrgsort 到 TEPL selector 常量(108/109)的映射:
llvm/lib/Target/LinxV5/AsmParser/LinxV5AsmParser.cpp:2900-2901
llvm/lib/Target/LinxV5/MCTargetDesc/LinxV5InstPrinter.cpp:1026-1027
- 缺失:LLVM IR intrinsic、Clang builtin、MLIR PTO op、
LinxV5InstrInfo.td 指令定义 / 合法化 / 指令选择(ISel),因此从 C/MLIR 无法生成这两条指令,也无法表达 sort_width、ascending/descending、index 输出等语义。
2. main(LinxISA 后端 + MLIR PTO)
- MLIR PTO dialect 已有
tsort32 / tmrgsort 的 op 定义与 verifier(含 DPS 与 tilebuf 变体),但 DPS 变体的 lowering 仅生成 EmitC CallOpaqueOp(C 函数调用 TSORT32 / TMRGSORT),tilebuf 变体没有 lowering;
- LLVM LinxISA 后端仅有 tile engine 枚举
TSORT(0x06C)/ TMRGSORT(0x06D)(llvm/lib/Target/LinxISA/LinxISATileEnginesV058.h),AsmParser 无对应助记符,LinxISAInstrInfo.td 无指令定义。
期望
按 pto-spec 语义补齐接口,使这两条指令可以端到端生成:
- 提供可用的 MLIR PTO op / LLVM intrinsic / builtin,覆盖
sort_width、ascending/descending、original-index 输出等操作数语义;
- 补齐 LinxV5 / LinxISA 后端的指令定义、合法化与指令选择(ISel),让
tsort32 / tmrgsort 能由编译器直接生成。
背景
pto-spec 的 sorting 模块定义了两条 SFU 排序指令,规范链接:
0x06C、Function 12、Mode 3、HandlerTSORTdestination0(sorted values)、destination1(original U32 indices)、source0、sort_width(LB0,缺省 32)、flag0(ascending/descending)0x06D、Function 13、Mode 3、HandlerTMRGSORTdestination0、source0(left)、source1(right)、flag0(ascending/descending)现状(已确认)
当前仓库中这两条指令缺少可端到端使用的编译接口,具体如下:
1.
dev-llvm15_56(LinxV5 后端)tsort32/tmrgsort到 TEPL selector 常量(108/109)的映射:llvm/lib/Target/LinxV5/AsmParser/LinxV5AsmParser.cpp:2900-2901llvm/lib/Target/LinxV5/MCTargetDesc/LinxV5InstPrinter.cpp:1026-1027LinxV5InstrInfo.td指令定义 / 合法化 / 指令选择(ISel),因此从 C/MLIR 无法生成这两条指令,也无法表达sort_width、ascending/descending、index 输出等语义。2.
main(LinxISA 后端 + MLIR PTO)tsort32/tmrgsort的 op 定义与 verifier(含 DPS 与 tilebuf 变体),但 DPS 变体的 lowering 仅生成 EmitCCallOpaqueOp(C 函数调用TSORT32/TMRGSORT),tilebuf 变体没有 lowering;TSORT(0x06C)/TMRGSORT(0x06D)(llvm/lib/Target/LinxISA/LinxISATileEnginesV058.h),AsmParser 无对应助记符,LinxISAInstrInfo.td无指令定义。期望
按 pto-spec 语义补齐接口,使这两条指令可以端到端生成:
sort_width、ascending/descending、original-index 输出等操作数语义;tsort32/tmrgsort能由编译器直接生成。