问题概述
TileOP API linx@05662833bd7bf71420b15b8f7ba8727a4569e897 的矩阵公共头
PTO_MATMUL_HEADER 无条件发出:
B.DATR <DataTypeB>, byte0, Zero, RNE, NOSAT
当 B.FPATR.PreQuantMode=None(0) 时,这违反 PTO ISA 0.58.6 的 must-default
规则,导致 TMATMUL/TGEMV 及 FIXP float-output 路径在合规模型中被 fail-closed 拒绝。
当前代码证据
include/jcore/template_asm.hpp:
#define PTO_MATMUL_HEADER(...)
B.DATR %D[DataTypeB], byte0, Zero, RNE, NOSAT
该宏被 TMATMUL、TMATMUL.ACC/BIAS/MX、TGEMV 及多种 FIXP overload 共用,
上层调用无法覆盖这里的字面量 RNE。
规范依据
PTO-SPEC main@dea0b75e803cffa873982c90f9aa0cd17c6d243b:
https://github.com/PTO-ISA/pto-spec/blob/dea0b75e803cffa873982c90f9aa0cd17c6d243b/asl/block/attributes/B.FPATR.asl#L215-L234
其中 BundleFPATRDATRFieldsLegal 明确规定:
PreQuantMode == 0 => RMode == NONE && Sat == 0
因此模型断言不是应当放宽的实现限制;首个错误边界在 API lowering。
复现
完整复现及受影响算子见:
https://github.com/LinxISA/SuperScalarModel/issues/560#gfrun-1--bfpatr-nonecube-matmul-%E5%85%A8%E6%97%8F--fixp-float-%E8%BE%93%E5%87%BA%E6%97%8F%E5%B4%A9
典型命令:
bash microbenchmark/tileop-guard/run_guard.sh cube tmatmul
bash microbenchmark/tileop-guard/run_guard.sh fixp chain
模型拒绝:
B.FPATR None requires B.DATR RMode=NONE and Sat=0
建议 owner
include/jcore/template_asm.hpp 矩阵/FIXP lowering 维护者
- 对应 LLVM B.DATR alias 维护者参与验证
最小修复方向
按 FixpAttr.PreQuant 生成 B.DATR:
PreQuant=None:发 RMode=NONE, Sat=0;
- shift/fixed-rounding/可选 rounding 模式:严格按
BundleFPATRDATRFieldsLegal 分支;
- 不要通过放宽 gfrun/ASL 检查接受非法组合。
验收条件
- 覆盖 plain/ACC/BIAS/MX、TGEMV 和 FIXP keep-acc 的最小编译测试。
- 反汇编逐位确认 PreQuant=0 时 RMode/Sat 为零。
- 至少一个 TMATMUL 与一个 FIXP case 在 gfrun/gfsim 上使用同一 ELF 运行并比对 golden。
- 增加 negative test,确保 PreQuant=0 + RNE 被拒绝。
- 完整
make check 通过。
关联汇总 issue:
https://github.com/LinxISA/SuperScalarModel/issues/560
问题概述
TileOP API
linx@05662833bd7bf71420b15b8f7ba8727a4569e897的矩阵公共头PTO_MATMUL_HEADER无条件发出:当
B.FPATR.PreQuantMode=None(0)时,这违反 PTO ISA 0.58.6 的 must-default规则,导致 TMATMUL/TGEMV 及 FIXP float-output 路径在合规模型中被 fail-closed 拒绝。
当前代码证据
include/jcore/template_asm.hpp:该宏被 TMATMUL、TMATMUL.ACC/BIAS/MX、TGEMV 及多种 FIXP overload 共用,
上层调用无法覆盖这里的字面量
RNE。规范依据
PTO-SPEC
main@dea0b75e803cffa873982c90f9aa0cd17c6d243b:https://github.com/PTO-ISA/pto-spec/blob/dea0b75e803cffa873982c90f9aa0cd17c6d243b/asl/block/attributes/B.FPATR.asl#L215-L234
其中
BundleFPATRDATRFieldsLegal明确规定:因此模型断言不是应当放宽的实现限制;首个错误边界在 API lowering。
复现
完整复现及受影响算子见:
https://github.com/LinxISA/SuperScalarModel/issues/560#gfrun-1--bfpatr-nonecube-matmul-%E5%85%A8%E6%97%8F--fixp-float-%E8%BE%93%E5%87%BA%E6%97%8F%E5%B4%A9
典型命令:
模型拒绝:
建议 owner
include/jcore/template_asm.hpp矩阵/FIXP lowering 维护者最小修复方向
按
FixpAttr.PreQuant生成 B.DATR:PreQuant=None:发RMode=NONE, Sat=0;BundleFPATRDATRFieldsLegal分支;验收条件
make check通过。关联汇总 issue:
https://github.com/LinxISA/SuperScalarModel/issues/560