Skip to content

feat(vmi): enumerate layout support facts - #1417

Draft
mouliangyu wants to merge 4 commits into
hw-native-sys:mainfrom
mouliangyu:codex/vmi-layout-support-enumeration
Draft

feat(vmi): enumerate layout support facts#1417
mouliangyu wants to merge 4 commits into
hw-native-sys:mainfrom
mouliangyu:codex/vmi-layout-support-enumeration

Conversation

@mouliangyu

Copy link
Copy Markdown
Collaborator

背景

layout cost solver 需要从同一份 VMILayoutSupport contract 获取 operation relation 和显式 layout conversion 的完整合法性事实,不能复用旧 propagator 的 request/run 决策,也不能把未注册关系视为默认支持或零成本。

修改

  • 增加有限域驱动的 operation relation visitor,使用 raw MLIR operand/result 编号返回完整 relation fact,并覆盖 table-backed、same-layout、free-result、固定 contiguous、cast、group、interleave、histogram、gather 和 vexpdif 等已注册规则。
  • 增加显式 conversion fact visitor,仅枚举 identity 或 ensure_layout / ensure_mask_layout 已注册行;未注册 endpoint pair 返回零个 fact,参数化 identity 在缺少有限锚点时明确失败。
  • 将 support table 的约束感知遍历集中到 VMILayoutSupportVisitors.inc,现有单点查询复用同一遍历实现,避免 solver 与旧查询形成两套合法性规则。
  • 对非法/重复/非 layout 端口域、未知 operation relation 和结构 transport 返回明确失败;结构边仍由 solver 的 hard equality 建模,不在这里生成 conversion。
  • 新增独立 contract 测试工具和 lit 用例,覆盖合法/非法 relation、raw 非 layout 端口空槽、same/free 参数化边界、结构 operation 拒绝、同宽 numeric cast、vexpdif、identity/注册/未注册 conversion。

范围

本 PR 只提供 cost solver 所需的 support enumeration contract,不实现完整 cost solver,不改变 plan validator/applier 边界,也不修改旧 propagator 的 request/run 流程。

验证

  • ninja -C "$PTO_BUILD_DIR" PTOTransforms
  • ninja -C "$PTO_BUILD_DIR" pto-vmi-layout-support-test pto-test-opt
  • "$PTO_BUILD_DIR/tools/pto-test-opt/pto-vmi-layout-support-test"
  • llvm-lit -v "$PTO_BUILD_DIR/test/lit" --filter vmi_layout_support_enumeration
  • ninja -C "$PTO_BUILD_DIR" check-pto(1848 项:1847 passed,1 unsupported,0 failed)
  • check_changed_code.py --repo . --base origin/main(交付文件集合:7 files,0 errors,0 warnings)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant