Skip to main content

Compiler Optimizations

Morph applies multiple optimization passes to produce efficient code.


Optimization Passes

PassDescriptionExample
Constant FoldingEvaluate constant expressions at compile time2 + 35
Dead Code EliminationRemove unreachable or unused codeUnused variables removed
VectorizationAuto-vectorize loops with SIMDElement-wise tensor ops
Operation FusionCombine compatible operationsa * b + c → FMA
InliningInline small method callsReduces call overhead

Real Example

From OptTest.mx:

Compute method() {
x is 2 + 3; // constant folded to 5
y is x * 10; // constant folded to 50
unused is 99; // dead code eliminated
Print(y);
}

After optimization, this becomes equivalent to:

Compute method() {
Print(50);
}

Optimization Levels

Configured in morph.toml:

[build]
optimize = "aggressive" # none, basic, aggressive
LevelPasses Applied
noneNo optimization
basicConstant folding, dead code elimination
aggressiveAll passes including vectorization, fusion, inlining

Tensor-Specific Optimizations

  • FMA fusion(a * b) + c becomes a single fused multiply-add
  • Kernel caching — Compiled GPU kernels cached to disk
  • Auto-tuning — Runtime selection of optimal kernel parameters

Viewing Optimized Output

morph compile file.mx    # Show LLVM IR (optimized)