Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Symbol & Offset Index

Every address on this page is a virtual address (VMA) for neuronx_cc 2.24.5133.0+58f8de22, recovered from the cp310 wheel. cp311/cp312 carry byte-near-identical twins of every binary, but renumber addresses — treat every value as version-pinned. The per-binary VA frame is not uniform: in the .so libraries (libBIR, libwalrus, …) .text/.rodata are loaded at VA == file-offset, so nm/objdump VAs index the file directly; in the standalone hlo-opt/hlo2penguin ELFs the section base is shifted (.text file-off = VA − 0x201000, .rodata file-off = VA − 0x200000). See §0.5. Backing synthesis: D-R09 (the cross-binary type-identity matrix) plus the per-binary nm -DC dynamic-symbol tables and IDA rtti.json typeinfo sets.

Abstract

This appendix is the reverse lookup for the whole wiki: given a symbol name or a hex address cited anywhere in the book, it names the binary that owns the symbol and the page that documents it. The normative pages anchor every claim to a sub_ADDR / 0xNNNN; this index lets a reader go the other way — from an address found in nm, objdump, or a crash backtrace to the page that explains what that code does. It is curated, not exhaustive: it carries the few hundred symbols a reader will actually look up (the dispatch cores, the per-engine encoders, the allocator drivers, the typeinfo anchors), not every one of the 59,466 functions in libwalrus or the 44,794 typeinfos in hlo2penguin.

The index is organized by binary, because which artifact a symbol lives in is the first disambiguator — the backend is split across eight .so plus two standalone ELFs and a galaxy of Cython modules, and the same short name (run, visit*, schedule) recurs in several of them. §0.1 gives the binary roster and its ownership boundaries (from D-R09); §0.5 gives the two VA-framing conventions and the two-VA-frame sidecar artifact that must be understood before any address on this page is unambiguous. §1§8 are the per-binary symbol tables. §9 reproduces the cross-binary class/namespace matrix from D-R09 — who defines each shared type and how it crosses binary boundaries.

This is a reference catalog; its value is being a faithful, navigable index. Every row points at a page that actually exists in SUMMARY.md. Where a symbol's primary page has not been written yet, the row says so rather than inventing a target. The five highest-traffic symbols were adversarially re-verified against the binary symbol tables (§10); each row carries a confidence tag.

Targetneuronx_cc 2.24.5133.0+58f8de22 (cp310 wheel)
Binaries indexedlibBIR.so, libwalrus.so, libBIRSimulator.so + the hlo-opt / hlo2penguin ELFs + the NKI/Penguin Cython .so
Address frame.so: VA == file-offset · hlo-opt/hlo2penguin: .text0x201000, .rodata0x200000
Owner map sourceD-R09 cross-binary type-identity matrix (RTTI typeinfo + RELA + DT_NEEDED)
Symbol sourceper-binary nm -DC dynamic-symbol tables; IDA rtti.json typeinfo sets
Coveragecurated — the notable, cited symbols, not an undifferentiated symbol dump

0.1. The binary roster

The compiler's logic is split across the artifacts below. Ownership is from D-R09 — the canonical definer of each shared C++ namespace (OWN), not merely a binary that references it. Sizes and paths are catalogued on 0.4 Binary Inventory & the .so Map; this table is the per-binary index header.

BinaryPath under neuronxcc/Owns (D-R09)Indexed in
libBIR.sostarfish/lib/bir (371 types) + pelican (29) — the leaf IR-core owner§1
libwalrus.sostarfish/lib/the backend; klr (199), dap (201), birsim::debugger (39), neuroncc::debug_info (producer)§2
libBIRSimulator.sostarfish/lib/birsim::engine (10: Memory/SyncState/TpbEngines/…)§3
hlo-optstarfish/bin/the HLO/MHLO/StableHLO optimizer + the --passes registry§4
hlo2penguinstarfish/bin/the MLIR front-half; hilo Neuron device-model (151), xla::hilo (84)§5
libpwp_sim.sostarfish/lib/PWPSim (4 types) — isolated analog/power sim§6
libBIRParserDumper.sostarfish/lib/parserdumper / bir_roundtrip (BIR-JSON round-trip)§7
KernelBuilder.so / BirCodeGenLoop.so / NkiCodegen.so (Cython)nki/… / starfish/penguin/targets/codegen/the NKI forward builder, the beta3 Penguin→BIR driver, the re-emit printer§8

NOTE — libBIR.so is the leaf / owner: its DT_NEEDED lists only system/util libraries, and it exports bir/pelican typeinfos as weak (V) symbols. Every other backend binary reaches bir/pelican by dynamic link to libBIR (DT_NEEDED + weak-symbol coalescing), not by carrying a static copy — so a bir::* typeinfo address in those binaries' rtti.json resolves to libBIR's definition at load (D-R09 §4d-i). When this index lists a bir/pelican address it is libBIR's, the definitional one.


0.5. The two VA-framing conventions

Two distinct conventions decide whether an nm/objdump VA can be used as a file offset, and a third artifact (the two-VA-frame sidecar) can make one function appear at two addresses. Resolve all three before reading any address below as authoritative.

(A) the .so libraries  (libBIR, libwalrus, libBIRSimulator, …)
      .text VA == file offset      .rodata VA == file offset
      ⇒ an nm/objdump VA indexes the file directly; jump tables read by VA.
      e.g. setupHeader @ 0x143f440 IS at file offset 0x143f440 in libwalrus.

(B) the standalone ELFs  (hlo-opt, hlo2penguin)
      .text  file_off = VA − 0x201000
      .rodata file_off = VA − 0x200000
      ⇒ a .text VA must have 0x201000 subtracted before xxd/objdump --start-offset.
      e.g. NextChannelId @ 0x8ab1ac0 (VA) is at file_off 0x8aaa0c0 (.text) in hlo-opt.

(C) the two-VA-frame sidecar artifact  (any binary with per-symbol decompile)
      The ELF symbol-table VA (cited HERE) is the authoritative frame.
      The per-symbol IDA/Hex-Rays sidecar may carry a SECOND internal frame
      (a thunk wrapper) — e.g. is_valid_s3_lw @ 0x14ac170 (symtab) vs 0x5fbd40
      (sidecar thunk). BOTH denote the same function; a sidecar's 0x5fbd40 is
      NOT a wrong address. The .plt thunk band (libwalrus 0x5e9020–0x62d650) is
      this same effect: each thunk tail-jumps to a real body > 0xf00000.

GOTCHA — the convention is per binary, not global. Over-generalising "VA == file offset" onto an hlo-opt/hlo2penguin address is off by 0x201000/0x200000, and onto a .data-resident struct is off by the .data VMA/file-offset delta (a separate 0x400000-class shift not used by any .text/.rodata symbol below). Every address in this index is the symbol-table VA in frame (A)/(B); when a page cites a smaller sidecar number for the same symbol, that is frame (C), not a contradiction.


1. libBIR.so — the BIR core

The definitional root: bir::Instruction and the 110-opcode hierarchy, the pelican symbolic algebra, the Dtype tables, the cast engine, and the BIR-JSON SerDe. .text/.rodata VA == file offset.

Core IR & opcode enum

SymbolAddressPage
typeinfo for bir::Instruction (_ZTIN3bir11InstructionE)0x8fcd78 (weak V)7.1 instruction-base
vtable for bir::Instruction (_ZTVN3bir11InstructionE; vptr = sym +0x10 = 0x8fcee8)0x8fced87.1 instruction-base
bir::Instruction::Instruction(string&, BasicBlock*, InstructionType) base ctor0x2dafb07.1 instruction-base
bir::Instruction::sameInst(Instruction*)0x2db7b07.2 instruction-type
bir::InstructionType2string[abi:cxx11]0x2d5bf07.2 instruction-type · 14.1 master-opcode
bir::string2InstructionType0x2da0b07.2 instruction-type
per-leaf bir::Inst*::sameInst (weak W, e.g. InstActivation 0x2f3ff0, InstTensorScalar 0x2f41a0)0x2f3ff0+7.2 instruction-type
bir::Module::getArch[abi:cxx11]()0x354ef01.1 arch-object-model
bir::Module::getHwm()0x3555a01.1 arch-object-model
getArchModel (libBIR twin of the libwalrus door)0x478f901.1 arch-object-model

pelican symbolic algebra

SymbolAddressPage
typeinfo for pelican::Expr (_ZTIN7pelican4ExprE)0x90a9087.16 pelican-hierarchy
pelican::AffineExpr vtable (39-slot concrete leaf)0x90abe0 (ti-ptr 0x90abe8 → 0x90aa80)7.16 pelican-hierarchy
pelican::ModuloExpr vtable0x90ba107.21 pelican-moduleexpr
pelican::Expr::getIndicesSet (slot-14, the un-stripped vtable symbol)(vtable slot)7.16 pelican-hierarchy

Cast engine & BIR-JSON

SymbolAddressPage
bir::CastToNewDType family (cast/saturate)0x716f0+ region (0x782ca0, 0x781928)9.3 cast-to-new-dtype
adl_serializer<bir::InstructionType>::to_json0x484db07.12 json-writer
adl_serializer<bir::InstructionType>::from_json0x4840707.11 json-loader

2. libwalrus.so — the backend

The 65 MB backend: ~150 passes, the dependence graph, the three schedulers, the SB/PSUM/DRAM/Reg allocators, loop optimization, the LNC splitter, lower_dma, the CoreV{2,3,4}Gen per-engine code generators, the BIR linker, NeffPackager, the DebugInfoWriter, the legality cascade, and getArchModel. .text (0xf00000+) / .rodata (0x1c72000+) VA == file offset. Retains its full dynamic symbol table (nm -DC is authoritative).

Arch model & pass registry

SymbolAddressPage
getArchModel(string) — the only door into the Board/Device/Core tree0x17344c01.1 arch-object-model
Pacific() deprecated default-arch stub0x17345d01.1 arch-object-model
arch-model .bss singletons (_inferentia 0x3e05800, _sunda 0x3e05980, _cayman 0x3e05b00, _core_v4 0x3e05c80)0x3e05800+1.1 arch-object-model
BackendPass vtable0x3d985488.1 backendpass-registry
BackendPass::run(vector<unique_ptr<Module>>&)0x1736d408.1 backendpass-registry
GeneratorRegistration::getInstance()0x17356e08.1 backendpass-registry
registerGenerator / getGenerator / hasGenerator0x1735910 / 0x1735740 / 0x17356308.1 backendpass-registry

Per-engine code generators (the L3 wire path)

SymbolAddressPage
CoreV2GenImpl::setupHeader(void*, void*)0x11721208.39 opcode-master · 14.1 master-opcode
CoreV3GenImpl::setupHeader(void*, void*)0x13692808.39 opcode-master
CoreV4GenImpl::setupHeader(void*, void*)0x143f4408.39 opcode-master
core_v4::enum_variant_string_opcode(int, char*, int)0x143fd802.24 isa-enum-ordinals
core_v2 / core_v3 enum_variant_string_opcode twins0x127aea0 / 0x1369a402.24 isa-enum-ordinals
CoreV2GenImpl::visitInstCustomOp(InstCustomOp&) — the 0x85/0x86 emitter0x12613c011.8 customop-codegen

Schedulers & allocators

SymbolAddressPage
PostSched::run(Module&) (LNC=1)0xc3fc908.11 post-sched-schedulers
PostSched::run(vector<unique_ptr<Module>>&) (LNC dispatch)0xc41c108.11 post-sched-schedulers
post_scheduler::schedule_block(BasicBlock&) (greedy list)0xc2b3b08.11 post-sched-schedulers
TimeAwareScheduler ctor (cycle-accurate)0xc549b08.11 post-sched-schedulers
ColoringAllocator ctor0x9870c08.16 allocator-drivers
ColoringAllocatorWithLoop ctor (optlevel-6 only)0xa84fc08.16 allocator-drivers
flattern_loop (loop-flattening linearize)0xa89a608.16 allocator-drivers

Legality cascade

SymbolAddressPage
birverifier::InstVisitor::visitInstCustomOp(InstCustomOp&)0xfa7bd08.41 birverifier-per-op
is_valid_s3_lw (L2 wire validator entry; sidecar frame 0x5fbd40)0x14ac1708.42 l2-wire-validator

KLR→BIR codegen (beta2) & NEFF packaging

SymbolAddressPage
TranslateNKIASTToBIR::run(Module&) (driving pass)0xf0dbc07.27 klir-codegen-dispatch
KlirToBirCodegen::codegenStmt (dispatch core)0xf335207.27 klir-codegen-dispatch
KlirToBirCodegen::codegenOperator0xf30db07.27 klir-codegen-dispatch
KlirToBirCodegen master switch jump table (jpt, 77 cases)0x1de95f8 (.rodata)7.27 klir-codegen-dispatch
KlirToBirCodegen(bir::Function*) ctor0xf0faa07.27 klir-codegen-dispatch
NeffFileWriter::initializeNeffHeader0x1540a0012.2 neff-header-bom-writer
NeffFileWriter::writeArchiveFile (PAX write loop)0x153e03012.2 neff-header-bom-writer
addToBom (BOM upsert)0x153fb8012.2 neff-header-bom-writer
NeffPackager::runwritePackageFilewriteFile0x15307e00x15200e00x154104012.2 neff-header-bom-writer

DebugInfoWriter (the provenance producer)

SymbolAddressPage
DebugInfoWriter::createDebugInfoForInstruction(Instruction&)0x11fa6a08.40 debuginfo-writer
IRVisitor<DebugInfoWriter>::visit<…BasicBlock…>0x11d64a08.40 debuginfo-writer
DebugInfoWriter::leaveModule(Module&)0x11d58508.40 debuginfo-writer
writeDebugInfoToDisk(Module&, EngineType, IRLayer)0x11f9b808.40 debuginfo-writer

NOTE — DebugInfoWriter is the sole producer of the neuroncc::debug_info protobuf (D-R09 §2c). Its six core classes are byte-identical in libBIR, libwalrus, and hlo2penguin, but they cross the frontend↔backend cut by independent compilation of the same generated .proto, not by a link — hlo2penguin links none of the backend .so. This is the single cross-cut domain type (§9 row neuroncc::debug_info).


3. libBIRSimulator.so — the functional simulator

The BIR functional simulator (birsim), the whole-machine state model, and the DAP debugger half. Owns the engine half of the birsim namespace (10 disjoint classes: Memory, SyncState, TpbEngines, NeuronCoresManager, PhysicalMemory, BaseLogger) — disjoint (shared=0) from libwalrus's birsim::debugger half (D-R09 §2e/§5-C2). Links libBIR (dynamic) + libpwp_sim. .text/.rodata VA == file offset.

Symbol classOwner notePage
birsim::engine::{Memory, SyncState, TpbEngines, …}LOCAL(10) — engine state, defined here7.34 sim-dispatch-state
BIR sim dispatch + whole-machine state modelthe sim driver7.34 sim-dispatch-state
Sim core arithmetic (Cast / Accumulate / RNE / MemoryReductionOp)per-op evaluators7.35 sim-core-arithmetic
birsim::InstVisitor::visitInstCustomOp (sim-side custom-op)(undefined U in libwalrus; defined here)7.39 sim-control-sync-customop
birsim::debugger DAP host (in libwalrus, not here)OWN(39) libwalrus7.41 birsim-dap-debugger

QUIRK — birsim is a split namespace. The debugger/driver half (39 classes, DebuggerCallbacks @ 0x1109430) lives in libwalrus; the engine half (10 classes) lives here. A reimplementer looking for birsim::Memory in libwalrus will not find it, and vice-versa for birsim::debugger. The two share zero typeinfos (D-R09 §5-C2 corrects the earlier "libwalrus-only" framing).


4. hlo-opt — the HLO optimizer

The standalone HLO/MHLO/StableHLO optimizer ELF and its --passes registry. Frame (B): .text file_off = VA − 0x201000, .rodata file_off = VA − 0x200000. Statically links upstream OpenXLA/MLIR/LLVM (D-R09 §3) — the Neuron-authored passes are a thin layer over that bulk.

Collective stream/channel-id family

SymbolAddress (VA)Page
xla::hlo_query::NextChannelId(module)0x8ab1ac04.4 collective-stream-channel-id
NeuronCollectiveStreamIdInjector::Run (stamps stream_id — a 2-way '0'/'1' replica-group partition, not a NextStreamId counter)0x1f951a04.4 collective-stream-channel-id
NeuronUniqueChannelIdEnforcer::Run0x1fecb404.4 collective-stream-channel-id
CollectiveStreamIdChecker::Run (registration #58, read-only)0x1e8c8004.4 collective-stream-channel-id
neuron::IsCollective (masks 0x20000410 / 0x80011, high rebase −0x53)0x1f7e0104.4 collective-stream-channel-id
ReplicaGroupsEqual0x9163ca04.4 collective-stream-channel-id

CORRECTION (audit #820) — the masks 0x650 / 0x810000000000001 belong to NextChannelId @ 0x8ab1ac0 and the inlined checker #58, not to IsCollective @ 0x1f7e010. IsCollective uses 0x20000410 / 0x80011 (high band indexed by op − 0x53) plus op == 7, selecting opcodes {0x4, 0x7, 0xa, 0x1d, 0x53, 0x57, 0x66}. The three predicates are separate; their masks must not be cross-applied. (Carried verbatim from 4.4 collective-stream-channel-id.)

Pass registry

Symbol classNotePage
the --passes pass-registry tablethe hlo-opt dispatch surface4.1 pass-registry
HLO/mhlo/stablehlo ingestion (stock-vs-Neuron boundary)the ingestion cut4.2 hlo-ingestion-boundary

5. hlo2penguin — the MLIR front-half

The standalone MLIR front-half ELF: mhlo/stablehlo → Penguin Python IR. Frame (B) (same −0x201000 / −0x200000 shift). 44,794 unique typeinfos, of which ~0.5 % are Neuron-authored — the rest is statically-linked upstream MLIR/XLA/LLVM/oneDNN, with oneDNN present but dead on the Trainium path (D-R09 §2g/§4a/§5-C6). Links none of the backend .so (D-R09 §3-B1).

Symbol classOwner note (D-R09)Page
hilo Neuron device model (Mariana/Tonga/Sunda/Cayman cost tables)LOCAL(151)4.42 mhlo-to-python-printer-driver
xla::hilolink(84) upstream4.42 mhlo-to-python-printer-driver
MhloToPythonPrinter Penguin emission driverthe emitter front4.42 mhlo-to-python-printer-driver
MhloToPythonPrinter heavy/collective/fusion emittersthe heavy-emitter half4.43 mhlo-to-python-printer-heavy
hlo2penguin MLIR pipeline order & entry flowthe pipeline driver4.34 hlo2penguin-mlir-pipeline
neuroncc::debug_info (6 protobuf classes)dyn(6) — independent-compile bridge8.40 debuginfo-writer

NOTE — mlir (10,328), xla (4,634), dnnl (13,786 substring / 2,100 _ZTI), absl (1,899), and llvm (7,033) typeinfos are upstream, statically linked — not a Neuron domain boundary. They are deliberately not indexed per-symbol here: a reimplementer wanting mlir::* reads upstream MLIR, not this wiki. The oneDNN bulk is dead code on the Trainium path (D-R09 §5-C6).


6. libpwp_sim.so — the PWP simulator

A fully isolated domain (D-R09 §2h/§5-C5): PWPSim::Simulator + PWPSim::AFTable, 4 types total. NEEDED by libwalrus/libBIRSimulator/nki_klr_sim for the numeric activation model, but exposes no shared bir/pelican/klr type. .text/.rodata VA == file offset.

Symbol classNotePage
PWPSim::Simulator / evaluate_genericthe piecewise-polynomial activation evaluator7.40 sim-activation-pwp · 10.1 pwp-model
PWPSim::AFTablethe activation-function table10.6 loadactfuncset

7. libBIRParserDumper.so — the BIR-JSON round-trip

parserdumper / bir_roundtrip — the BIR-JSON read-write round-trip serializers. Links libBIR (dynamic). 557 typeinfos. Carries 26/29 of the pelican classes and a bir subset + its own bir::IRVisitor<DumperPass> instantiations (D-R09 §1).

Symbol classNotePage
parserdumper / bir_roundtrip round-trip serializerBIR-JSON debug + round-trip8.44 parserdumper

8. The Cython codegen modules

The NKI forward builder, the beta3 Penguin→BIR driver, and the re-emit printer ship as per-Python-version Cython extension .so. Frame (A) (VA == file offset for .text/.rodata); the __pyx_pw_* / __pyx_pf_* symbols are the Cython-mangled method labels. KernelBuilder.so ships unstripped with DWARF — the most readable binary in the NKI stack.

SymbolAddressBinaryPage
NeuronCodegen.matmult arg-parse wrapper (largest single method, 64,948 B)0x266520KernelBuilder.so6.5.1 neuroncodegen-forward-builder
NeuronCodegen.matmult_mx (106,470 B)0x279fe0KernelBuilder.so6.5.1 neuroncodegen-forward-builder
BirCodeGenLoop matmul codegen / driver entry0x975f0 (driver), 0xc0840 (codegenCustomOp, _215)BirCodeGenLoop.so6.5.10 bircodegenloop
BirCodeGenLoop.codegenSundaCustomOp (_259, IMPL Sunda override, 12,192 B)0x652d0BirCodeGenLoop.so11.8 customop-codegen
BirCodeGenLoopGen.codegenSundaCustomOp (_69, GEN allocator)0x46d00BirCodeGenLoopGen.so11.8 customop-codegen
NkiCodegen re-emit printer (penguin.ir → NKI text)(Cython __pyx_pf_*)NkiCodegen.so6.5.9 nkicodegen-printer

QUIRK — KernelBuilder.so/NeuronCodegen (the forward builder, NKI Python → Penguin IR) and NkiCodegen.so/NkiCodegen (the reverse printer, Penguin IR → NKI text) are different classes in different files. They are not the two ends of one pass — NkiCodegen is the inverse direction. Confusing them is the most common NKI-layer error; see 0.4 binary-inventory.


9. Cross-binary class/symbol matrix (D-R09)

The ownership matrix from D-R09 §1 — namespace (row) × binary (col). OWN = canonical definer (weak V typeinfo); dyn = present by dynamic link to the owner (DT_NEEDED + weak coalescing); LOCAL = binary-local, not shared; · = absent (CONFIRMED zero hits). Numbers in () are distinct-type counts measured in that binary's rtti.json. This is what disambiguates which binary's copy a typeinfo address refers to.

NamespacelibBIRlibwalruslibBIRSimnki_klr_simhlo2penguin
birOWN(371)dyn(95)dyn(21)dyn(14)·
pelicanOWN(29)dyn(29)dyn(26)dyn(29)·
klr·OWN(199)·link(199)·
dap·LOCAL(201)···
birsim::debugger·OWN(39)···
birsim::engine··LOCAL(10)··
neuroncc::debug_infodyn(6)OWN(6)··dyn(6)*
hilo (Neuron device model)····LOCAL(151)
xla::hilo····link(84)
mlir / xla / dnnl····link (upstream)
llvmlinklinklinklinklink
PWPSim·NEEDEDNEEDEDvia sim·

*neuroncc::debug_info in hlo2penguin is not reached by a link (it links no backend .so); the 6 classes are the same generated protobuf compiled independently into each binary. The 8 _ZTI names are byte-identical across libBIR ∩ libwalrus ∩ hlo2penguin — the only frontend↔backend crossing type.

The domain boundaries (D-R09 §3): frontend ↔ backend is a clean cuthlo2penguin has bir=0, pelican=0, klr=0, dap=0, birsim=0 (absolute zero), and the backend .so have xla=0, mlir=0, dnnl=0. The single exception is the six neuroncc::debug_info classes. The DT_NEEDED DAG is rooted at libBIR (leaf) → libBIRParserDumper/libBIRSimulatorlibwalrus (top), with libpwp_sim isolated and hlo2penguin linking only {libm, libstdc++, libgcc_s, libc}.


10. Adversarial verification — five highest-traffic symbols

Each was re-read from the binary's own dynamic symbol table (nm -DC) and the cited page re-checked for existence. All five resolved exactly.

SymbolAddressBinaryPage exists?nm -DC confirms?Conf
getArchModel(string)0x17344c0libwalrusyes — 1.1yes — T getArchModel(std::__cxx11::basic_string…) @ 0x17344c0CONFIRMED
KlirToBirCodegen::codegenStmt (dispatch core)0xf33520libwalrusyes — 7.27yes — page roster nm -DC … rg KlirToBirCodegen = 176 rows; dispatch core 0xf33520, jpt 0x1de95f8CONFIRMED
NextChannelId(module)0x8ab1ac0hlo-optyes — 4.4STRONG — VA frame (B); mask provenance fixed by audit #820STRONG
visitInstCustomOp (CoreV2GenImpl)0x12613c0libwalrusyes — 11.8yes — T …CoreV2GenImpl::visitInstCustomOp(bir::InstCustomOp&) @ 0x12613c0 (distinct from birverifier 0xfa7bd0)CONFIRMED
setupHeader (CoreV4GenImpl)0x143f440libwalrusyes — 8.39yes — W …CoreV4GenImpl::setupHeader(void*, void*) @ 0x143f440; V2 0x1172120, V3 0x1369280CONFIRMED

NOTE — visitInstCustomOp is the canonical example of why this index is per binary: the name appears at 0xfa7bd0 (birverifier::InstVisitor, the verifier — 8.41), at 0x12613c0 (CoreV2GenImpl, the encoder — 11.8), and as an undefined U (birsim::InstVisitor, defined in libBIRSimulator7.39). A bare "visitInstCustomOp @ …" is ambiguous until the binary and the address fix which one.


Cross-References