L

llvm

by @mohitmishra786v1.0.0
4.0(19)

引导代理使用 LLVM 工具链:生成 IR、运行优化、降低到汇编,并检查 IR 以进行调试或性能优化

backend-developmentpythondistributed-systemsGitHub
安装方式
npx skills add mohitmishra786/low-level-dev-skills --skill llvm
compare_arrows

Before / After 效果对比

1
使用前

手动编写 clang 命令生成 LLVM IR,使用 opt 工具运行优化passes,用 llc 降低到汇编,每个步骤需要管理临时文件和参数

使用后

自动执行完整的 LLVM 工具链流程,从源代码到 IR 到优化再到汇编,自动管理中间文件和参数,提供 IR 检查和调试支持

description SKILL.md

llvm

LLVM IR and Tooling

Purpose

Guide agents through the LLVM IR pipeline: generating IR, running optimisation passes with opt, lowering to assembly with llc, and inspecting IR for debugging or performance work.

Triggers

  • "Show me the LLVM IR for this function"

  • "How do I run an LLVM optimisation pass?"

  • "What does this LLVM IR instruction mean?"

  • "How do I write a custom LLVM pass?"

  • "Why isn't auto-vectorisation happening in LLVM?"

Workflow

1. Generate LLVM IR

# Emit textual IR (.ll)
clang -O0 -emit-llvm -S src.c -o src.ll

# Emit bitcode (.bc)
clang -O2 -emit-llvm -c src.c -o src.bc

# Disassemble bitcode to text
llvm-dis src.bc -o src.ll

2. Run optimisation passes with opt

# Apply a specific pass
opt -passes='mem2reg,instcombine,simplifycfg' src.ll -S -o out.ll

# Standard optimisation pipelines
opt -passes='default<O2>' src.ll -S -o out.ll
opt -passes='default<O3>' src.ll -S -o out.ll

# List available passes
opt --print-passes 2>&1 | less

# Print IR before and after a pass
opt -passes='instcombine' --print-before=instcombine --print-after=instcombine src.ll -S -o out.ll 2>&1 | less

3. Lower IR to assembly with llc

# Compile IR to object file
llc -filetype=obj src.ll -o src.o

# Compile to assembly
llc -filetype=asm -masm-syntax=intel src.ll -o src.s

# Target a specific CPU
llc -mcpu=skylake -mattr=+avx2 src.ll -o src.s

# Show available targets
llc --version

4. Inspect IR

Key IR constructs to understand:

Construct Meaning

alloca Stack allocation (pre-SSA; mem2reg promotes to registers)

load/store Memory access

getelementptr (GEP) Pointer arithmetic / field access

phi SSA φ-node: merges values from predecessor blocks

call/invoke Function call (invoke has exception edges)

icmp/fcmp Integer/float comparison

br Branch (conditional or unconditional)

ret Return

bitcast Reinterpret bits (no-op in codegen)

ptrtoint/inttoptr Pointer↔integer (avoid where possible)

5. Key passes

Pass Effect

mem2reg Promote alloca to SSA registers

instcombine Instruction combining / peephole

simplifycfg CFG cleanup, dead block removal

loop-vectorize Auto-vectorisation

slp-vectorize Superword-level parallelism (straight-line vectorisation)

inline Function inlining

gvn Global value numbering (common subexpression elimination)

licm Loop-invariant code motion

loop-unroll Loop unrolling

argpromotion Promote pointer args to values

sroa Scalar Replacement of Aggregates

6. Debugging missed optimisations

# Why was a loop not vectorised?
clang -O2 -Rpass-missed=loop-vectorize -Rpass-analysis=loop-vectorize src.c

# Dump pass pipeline
clang -O2 -mllvm -debug-pass=Structure src.c -o /dev/null 2>&1 | less

# Print IR after each pass (very verbose)
opt -passes='default<O2>' -print-after-all src.ll -S 2>&1 | less

7. Useful llvm tools

Tool Purpose

llvm-dis Bitcode → textual IR

llvm-as Textual IR → bitcode

llvm-link Link multiple bitcode files

llvm-lto Standalone LTO

llvm-nm Symbols in bitcode/object

llvm-objdump Disassemble objects

llvm-profdata Merge/show PGO profiles

llvm-cov Coverage reporting

llvm-mca Machine code analyser (throughput/latency)

For binutils equivalents, see skills/binaries/binutils.

Related skills

  • Use skills/compilers/clang for source-level Clang flags

  • Use skills/binaries/linkers-lto for LTO at link time

  • Use skills/profilers/linux-perf combined with llvm-mca for micro-architectural analysis

Weekly Installs258Repositorymohitmishra786/…v-skillsGitHub Stars31First SeenFeb 20, 2026Security AuditsGen Agent Trust HubPassSocketPassSnykPassInstalled onopencode257gemini-cli257github-copilot257codex257amp257kimi-cli257

forum用户评价 (0)

发表评价

效果
易用性
文档
兼容性

暂无评价,来写第一条吧

统计数据

安装量911
评分4.0 / 5.0
版本1.0.0
更新日期2026年3月25日
对比案例1 组

用户评分

4.0(19)
5
0%
4
0%
3
0%
2
0%
1
0%

为此 Skill 评分

0.0

兼容平台

🔧Claude Code

时间线

创建2026年3月25日
最后更新2026年3月25日