先给判断：static-kernel.*.json 足够作为“未绑定 LLVM 程序”的可执行静态 IR，用于后续代入 ABI、rank、block、内存并恢复通信行为；但它单独不足以直接生成 STARS 请求，因为缺少参数语义、具体值、地址归属和跨 rank 同步。

实际文件：out/ns3-inputs/c220-e128/static-kernel.launch.alltoall.aiv.json

顶层字段

字段                   提供的信息                              主要用途
━━━━━━━━━━━━━━━━━━━━━  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━  ━━━━━━━━━━━━━━━━━━━━━━━
schema                 static-kernel-ir/v1                     版本兼容
─────────────────────  ──────────────────────────────────────  ───────────────────────
artifact_sha256        输入 bitcode 摘要                       确认分析对象没有变化
─────────────────────  ──────────────────────────────────────  ───────────────────────
artifact_format        bc 或 ll                                输入格式
─────────────────────  ──────────────────────────────────────  ───────────────────────
artifact_llvm_major    bitcode producer LLVM 版本              analyzer 兼容性
─────────────────────  ──────────────────────────────────────  ───────────────────────
analyzer               analyzer 名称、协议、LLVM 版本          结果复现
─────────────────────  ──────────────────────────────────────  ───────────────────────
module                 target triple、data layout、模块规模    芯片和类型布局校验
─────────────────────  ──────────────────────────────────────  ───────────────────────
entry_symbol           本次分析入口                            选择 Kernel
─────────────────────  ──────────────────────────────────────  ───────────────────────
globals                全局变量及 initializer                  执行初始状态
─────────────────────  ──────────────────────────────────────  ───────────────────────
function_summaries     函数 ABI 和 CFG 摘要                    参数绑定、版本检查
─────────────────────  ──────────────────────────────────────  ───────────────────────
reachable_functions    入口可达函数的 CFG 和指令               核心执行输入
─────────────────────  ──────────────────────────────────────  ───────────────────────
call_edges             调用关系                                调用和 intrinsic 分析
─────────────────────  ──────────────────────────────────────  ───────────────────────
intrinsic_histogram    intrinsic 类型及静态次数                快速判断器件操作能力
─────────────────────  ──────────────────────────────────────  ───────────────────────
normalizations         analyzer 做过的规范化                   审计语义变换
─────────────────────  ──────────────────────────────────────  ───────────────────────
diagnostics            静态分析错误/警告                       判断产物是否可信

最应该看的字段

1. 身份和兼容性：

schema
artifact_sha256
artifact_llvm_major
analyzer.protocol_version
module.target_triple
module.data_layout
entry_symbol

当前值包括：

entry:          aiv_all_to_all_half
target triple:  hiipu64-hisilicon-cce
artifact LLVM:  15
analyzer LLVM:  18.1.3

2. ABI：

function_summaries[].parameters[]
function_summaries[].calling_convention
function_summaries[].function_attributes
function_summaries[].abi_sha256
function_summaries[].cfg_sha256

每个 parameter 提供：

{
"parameter_id": "function:aiv_all_to_all_half/argument:34",
"index": 34,
"type": "i32",
"address_space": null,
"attributes": ["noundef"]
}

但当前 LLVM 参数名基本为空。仅看这个文件，不知道参数 34 是 rank、40 是 tag；这些语义来自外部 profiles/abis/hcomm-c220-aiv-v1.yaml:25。

3. CFG：

reachable_functions[].basic_blocks[].block_id
predecessors
successors
instructions

分支指令还保存：

br:     conditional、true_target、false_target
switch: cases、default_target
phi:    incoming_blocks
icmp:   predicate

这些足够重建并解释具体控制流。

4. 指令和 SSA：

instruction_id
opcode
result_type
operands[].kind/type/ref/value
callee
predicate
attributes
ir

operand.ref 可以指向：

argument
instruction
basic_block
function
global

因此 SSA 数据依赖是可追踪的，循环中同一个 instruction 也有稳定 ID。

5. 地址和内存操作：

opcode           关键 attributes
━━━━━━━━━━━━━━━  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
getelementptr    source_element_type、constant_offset、dynamic_offsets、inbounds
───────────────  ─────────────────────────────────────────────────────────────────
load/store       access_size、alignment、volatile、atomic_ordering
───────────────  ─────────────────────────────────────────────────────────────────
alloca           allocated_type、allocated_element_size
───────────────  ─────────────────────────────────────────────────────────────────
通用             may_read_memory、may_write_memory、may_have_side_effects

这部分足够在绑定具体 pointer 后计算结构体字段、WQE 字段和 doorbell 地址。

6. Device intrinsic：

instruction.opcode == "call"
instruction.callee
instruction.operands
instruction.attributes.inline_asm_*
intrinsic_histogram

当前包含 28 类 intrinsic，例如：

GET.BLOCK.IDX
MOV.OUT.TO.UB.*
MOV.UB.TO.OUT.*
BARRIER
DCCI.DST
SET.FLAG.REG
WAIT.FLAG.REG
GET/SET.CTRL

但 static-kernel 只给出 intrinsic 名称和参数。MOV.* 的方向、descriptor 解码和数据块大小等语义来自外部 dialects/dav-c220-vec/v1.yaml:22。

当前文件的覆盖情况

内容                              数量
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━  ━━━━━━━━━
整个 LLVM module 函数               88
─────────────────────────────  ─────────
Module 总指令                  176,212
─────────────────────────────  ─────────
序列化的 reachable function          1
─────────────────────────────  ─────────
reachable 基本块                 1,440
─────────────────────────────  ─────────
reachable 指令                  14,695
─────────────────────────────  ─────────
全局变量                            39
─────────────────────────────  ─────────
调用边                           1,724
─────────────────────────────  ─────────
intrinsic 类型                      28
─────────────────────────────  ─────────
diagnostic                           0
─────────────────────────────  ─────────
带 debug location 的指令             0

module 中的 176,212 是整个 bitcode 的统计；真正保存在 reachable_functions 并可供 executor 执行的是入口函数的 14,695 条指令。当前代码大量内联，因此只有一个函数体。

能力判断

目标                                             StaticKernel 单独是否足够
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
校验 artifact、入口和 ABI 类型                   足够
───────────────────────────────────────────────  ──────────────────────────────────────────────
重建 CFG、SSA 和所有候选分支                     足够
───────────────────────────────────────────────  ──────────────────────────────────────────────
查找潜在 DMA、barrier、polling、doorbell 代码    基本足够
───────────────────────────────────────────────  ──────────────────────────────────────────────
解释普通整数、指针、load/store 和分支            IR 信息足够
───────────────────────────────────────────────  ──────────────────────────────────────────────
知道参数 34 是 rank、40 是 tag                   不足，需要 ABI profile
───────────────────────────────────────────────  ──────────────────────────────────────────────
知道 MOV.* 的器件语义                            不足，需要 dialect profile
───────────────────────────────────────────────  ──────────────────────────────────────────────
知道当前 rank/block 走哪条路径                   不足，需要 bound-case
───────────────────────────────────────────────  ──────────────────────────────────────────────
得到具体地址、bytes、peer rank                   不足，需要内存/RMA 绑定和执行
───────────────────────────────────────────────  ──────────────────────────────────────────────
恢复 WQE + doorbell 为 URMA 请求                 不足，需要 protocol recognizer
───────────────────────────────────────────────  ──────────────────────────────────────────────
建立跨 rank flag producer/waiter                 不足，需要所有 core execution 和 lowering
───────────────────────────────────────────────  ──────────────────────────────────────────────
估算 Kernel 周期或计算耗时                       不足，没有机器指令和 latency 模型
───────────────────────────────────────────────  ──────────────────────────────────────────────
回溯到 C++ 源码行                                当前较弱，14,695 条指令都没有 debug location

主要风险

- 参数语义不自描述，必须固定 ABI profile。
- Device intrinsic 语义不自描述，必须固定 dialect profile。
- 外部未内联函数若只有 declaration，只能看到 call edge，看不到函数体。
- 没有通用 LLVM metadata/TBAA 表，复杂 alias 分析能力有限。
- debug_location 当前全部为空，只能通过 instruction_id 和原始 ir 回查。
- 新 Kernel 如果触达未支持的 side-effect opcode、外部调用或 inline asm，executor 会产生 unsupported_side_effecting_opcode、unknown_side_effecting_call 等错误。
- 它是 LLVM IR，不是最终机器指令，无法提供真实 instruction latency。

所以对当前项目的通信恢复链路，真正可复现的最小组合是：

StaticKernelIR
+ ABI profile
+ dialect profile
+ concrete launch/rank/block
+ memory/RMA state
+ protocol recognizer

这套组合对当前 C220 AllToAll 已经足够，因为四个 core 都能 completed，并成功恢复出 6 条 URMA 请求和 4 个 polling 同步。若目标是让外部工具只读取一份文件完成相同工作，当前 static-kernel.json 不够，需要把 ABI、dialect 和 concrete
case 一并作为版本化输入。
