skillZs
★ LIVE SKILL TAGS ★
>>> LIVE SKILLS INDEX <<<
* OPEN SOURCE *
NO LOGIN, NO TRACKING
※ REAL INSTALL DATA ※
← back to all skills
mohitmishra786/low-level-dev-skills832 installs

llvm

LLVM IR and pass pipeline skill. Use when working directly with LLVM Intermediate Representation (IR), running opt passes, generating IR with llc, inspecting or writing LLVM IR for custom passes, or understanding how the LLVM backend lowers IR to assembly. Activates on queries about LLVM IR, opt, llc, llvm-dis, LLVM passes, IR transformations, or building LLVM-based tools.

How do I install this agent skill?

npx skills add https://github.com/mohitmishra786/low-level-dev-skills --skill llvm
view source ↗

Is this agent skill safe to install?

  • Gen Agent Trust Hubpass

    The skill provides instructions for using the LLVM compiler infrastructure, including generating Intermediate Representation (IR), running optimization passes, and lowering IR to assembly. It uses standard local command-line tools for development tasks and follows security best practices for secret management by not including credentials.

  • Socketpass

    No alerts

  • Snykpass

    Risk: LOW · No issues

  • Runlayerwarn

    2/2 files flagged

What does this agent skill do?

LLVM IR and Tooling

Purpose

Guide agents through LLVM as a user: generating and inspecting IR, running existing optimisation passes with opt, lowering to assembly with llc, and diagnosing missed optimisations. For writing new LLVM passes (PassPlugin, llvm-lit testing), use skills/compiler-internals/llvm-passes instead.

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:

ConstructMeaning
allocaStack allocation (pre-SSA; mem2reg promotes to registers)
load/storeMemory access
getelementptr (GEP)Pointer arithmetic / field access
phiSSA φ-node: merges values from predecessor blocks
call/invokeFunction call (invoke has exception edges)
icmp/fcmpInteger/float comparison
brBranch (conditional or unconditional)
retReturn
bitcastReinterpret bits (no-op in codegen)
ptrtoint/inttoptrPointer↔integer (avoid where possible)

5. Key passes

PassEffect
mem2regPromote alloca to SSA registers
instcombineInstruction combining / peephole
simplifycfgCFG cleanup, dead block removal
loop-vectorizeAuto-vectorisation
slp-vectorizeSuperword-level parallelism (straight-line vectorisation)
inlineFunction inlining
gvnGlobal value numbering (common subexpression elimination)
licmLoop-invariant code motion
loop-unrollLoop unrolling
argpromotionPromote pointer args to values
sroaScalar 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

ToolPurpose
llvm-disBitcode → textual IR
llvm-asTextual IR → bitcode
llvm-linkLink multiple bitcode files
llvm-ltoStandalone LTO
llvm-nmSymbols in bitcode/object
llvm-objdumpDisassemble objects
llvm-profdataMerge/show PGO profiles
llvm-covCoverage reporting
llvm-mcaMachine code analyser (throughput/latency)

For binutils equivalents, see skills/binaries/binutils.

Related skills

  • Use skills/compiler-internals/llvm-passes for writing and testing custom LLVM passes
  • Use skills/compiler-internals/compiler-frontend for generating LLVM IR from an AST
  • Use skills/compiler-internals/jit-compilation for ORC JIT execution of LLVM IR
  • 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

Add the canonical catalog link to the repository README so users can inspect current installs and available audits. The publishing guide covers the complete discovery path.

<a href="https://skillzs.dev/skills/mohitmishra786/low-level-dev-skills/llvm">View llvm on skillZs</a>