custom-allocators
Custom allocator skill for memory allocation strategies. Use when implementing…
LLVM IR and passes skill for reading compiler IR. Use when analyzing LLVM IR, understanding SSA, pass pipeline order, or running opt on bitcode. Activates on queries about LLVM IR, SSA form, opt passes, llvm-dis, pass pipeline, or reading .ll files.
$ npx -y skills add mohitmishra786/low-level-dev-skills --skill llvm-ir-and-passes --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/llvm-ir-and-passesContext preview
The summary Claude sees to decide when to auto-load this skill.
LLVM IR and passes skill for reading compiler IR. Use when analyzing LLVM IR, understanding SSA, pass pipeline order, or running opt on bitcode. Activates on queries about LLVM IR, SSA form, opt passes, llvm-dis, pass pipeline, or reading .ll files.
name: llvm-ir-and-passes description: LLVM IR and passes skill for reading compiler IR. Use when analyzing LLVM IR, understanding SSA, pass pipeline order, or running opt on bitcode. Activates on queries about LLVM IR, SSA form, opt passes, llvm-dis, pass pipeline, or reading .ll files.
Teach agents to read and reason about LLVM IR (SSA, types, terminators), navigate the standard pass pipeline, and use `opt`/`llvm-dis` for inspection. Complements `skills/compilers/llvm` (toolchain) and `skills/compiler-internals/llvm-passes` (writing plugins) — not merged.
; Function in SSA form
define i32 @add(i32 %a, i32 %b) {
entry:
%sum = add i32 %a, %b
ret i32 %sum
}Key concepts: basic blocks, PHI nodes at merges, typed values (`i32`, `ptr`, vectors).
clang -S -emit-llvm -O0 -o foo.ll foo.c clang -c -emit-llvm -O2 -o foo.bc foo.c llvm-dis foo.bc -o foo.ll
Clang `-O2` roughly runs:
SimplifyCFG → InstCombine → GVN → LICM → LoopVectorize → ...
Inspect with:
opt -passes='default<O2>' -S foo.ll -o foo-opt.ll opt -passes='default<O2>' -print-passes foo.ll 2>&1 | head
| Pass | Shows | |------|-------| | `-passes=print<domtree>` | Dominator tree | | `-passes=print<loops>` | Loop nests | | `-passes=print-alias-sets` | Alias sets |
opt -passes='print<domtree>' -disable-output foo.ll
merge: %v = phi i32 [ %a, %then ], [ %b, %else ]
`undef` and `poison` in IR model LLVM poison semantics — distinct from C UB but related.
opt -passes='instcombine,simplifycfg' -S foo.ll -o - | diff -u foo.ll -
/llvm-ir-and-passes Explain this PHI node and which pass likely created it
| Symptom | Cause | Fix | |---------|-------|-----| | Pass not found | LLVM version rename | `opt --print-passes` for your build | | IR mismatch | Different LLVM major | Match clang/opt versions | | "optnone" blocks opts | `-O0` attribute | Compile with `-O1+` | | Huge IR | Inlined headers | `-fno-discard-value-names` off; filter function | | Wrong pipeline | Legacy vs NPM | Use `-passes=` syntax |
A curated suite of AI agent skills for systems and low-level programming — C/C++, Rust, Zig, GPU, bare-metal firmware, Linux kernel/driver development, computer architecture, compiler internals, HPC, and more.
Repo: mohitmishra786/low-level-dev-skills
Custom allocator skill for memory allocation strategies. Use when implementing…
NUMA programming skill for multi-socket memory locality. Use when detecting NUMA topology,…
AF_XDP skill for high-performance XDP sockets. Use when creating AF_XDP sockets, configuring…
DPDK skill for userspace packet I/O. Use when initializing EAL, configuring PMD drivers,…
io_uring skill for Linux async I/O. Use when building high-performance servers with liburing,…
Bare-metal ADC and DAC skill. Use when configuring analog sampling, DMA-driven ADC,…