_ _ ____ __ __ | | / \ / ___|| \/ | | | / _ \ \___ \| |\/| | | |___ / ___ \ ___) | | | | |_____/_/ \_\____/|_| |_|
🥔 VLIW ASSEMBLY SCHEDULING MACHINE
Quick Start · Project Structure · LAN Specification · Potato Guide · Citation
LASM is an extensible symbolic-assembly scheduling framework for complete VLIW programs. Programs are expressed in VLIW Assembly Notation (LAN) as raw ISA instructions with symbolic operands, while physical-register bindings, functional-unit assignments, and bundle formation may remain unspecified. LASM lowers this representation to cycle-assigned instruction bundles with fully resolved resource bindings. Multiple strategies generate candidate schedules for identical code regions, after which two-tier feasibility filtering selects the highest-ranked implementable schedule.
Built on the Stratified Assembly Structure (SAS), LASM maintains mixed scheduling states across complete programs and provides standardized extension interfaces and unified scheduling primitives for strategy integration. The framework incorporates TDLS, IMS, and EMS, and introduces LAEMS and FBBF for cross-boundary scheduling. Across 13 benchmarks on two production VLIW-SIMD processors, LASM achieves 103.6% and 101.6% of expert assembly performance while reducing manually written assembly by 72.6%. An end-to-end YOLOv5 deployment reaches 95.9% of expert performance and delivers a 3× productivity improvement.
The repository includes a prebuilt LASM executable for the Potato target on Linux x86-64. No compilation is required.
git clone https://github.com/urays/lasm.git
cd lasm
chmod +x potato/tools/lasm
./potato/tools/lasm potato/lan4test/gemm_scalar.lan \
--layout potato/tools/potato.json \
--dce --licm \
--fbbfl --tdlsl \
--output /tmp/lasm-gemm_scalar.sThe command enables FBBF and TDLS for linear regions. LASM evaluates the applicable schedules and writes the selected Potato assembly to /tmp/lasm-gemm_scalar.s.
sed -n '1,40p' /tmp/lasm-gemm_scalar.s
./potato/tools/lasm --helpPotato is a fictional VLIW-SIMD reference architecture that illustrates target integration and code generation in LASM. The bundled executable is configured for Potato; potato.json supplies its memory map and value-passing convention through --layout.
.
├── docs/
│ ├── article.pdf # Full paper
│ └── LAN-spec-v2.0.md # LAN syntax and semantics
├── potato/
│ ├── README.md # Potato reference guide
│ ├── lan4test/ # Example LAN programs
│ └── tools/
│ ├── lasm # Prebuilt Potato executable for Linux x86-64
│ └── potato.json # Memory map and value-passing convention
├── LICENSE
└── README.md
- LAN 2.0 specification: formal language syntax and semantics.
- Potato guide: reference architecture, instruction set, and compilation workflow.
If you use LASM in your research, please cite the accompanying article:
@article{zhong2026lasm,
author = {Hongli Zhong and Zhong Liu and Sheng Ma},
title = {{LASM}: Extensible Competitive Scheduling Framework for {VLIW} Assembly Optimization},
journal = {ACM Trans. Des. Autom. Electron. Syst.},
year = {2026},
address = {New York, NY, USA},
issn = {1084-4309},
publisher = {Association for Computing Machinery},
doi = {10.1145/3810954},
url = {https://doi.org/10.1145/3810954}
}The contents of this repository are distributed under the MIT License. Questions and feedback are welcome via GitHub Issues.