|
| 1 | +<div align="center"> |
| 2 | + <p> |
| 3 | + <code> __ _____ _____ _____</code><br> |
| 4 | + <code> | | | _ | __| |</code><br> |
| 5 | + <code> | |__| |_| |__ | | |</code><br> |
| 6 | + <code> |_____| ___ |_____|_ | _|</code> |
| 7 | + </p> |
| 8 | + <p><strong>V<span style="color:#f59e0b">L</span>IW <span style="color:#f59e0b">A</span>SSEMBLY <span style="color:#f59e0b">S</span>CHEDULING <span style="color:#f59e0b">M</span>ACHINE</strong></p> |
| 9 | + <p>LASM is an extensible competitive scheduling framework for VLIW assembly optimization. Multiple scheduling strategies simultaneously optimize identical code regions, and the framework automatically selects the best solution through feasibility-driven ranking. LASM is capable of targeting most VLIW architectures on the market. This repository provides the LAN language specification, a pre-built Linux x86_64 binary, and Potato — a fictional VLIW processor included as a reference.</p> |
| 10 | + |
| 11 | + <p> |
| 12 | + <img alt="Artifact" src="https://img.shields.io/badge/Artifact-Public-2ea44f"> |
| 13 | + <img alt="Platform" src="https://img.shields.io/badge/Platform-Linux%20x86__64-111111?logo=linux&logoColor=white"> |
| 14 | + <img alt="Target" src="https://img.shields.io/badge/Target-VLIW-f59e0b"> |
| 15 | + <img alt="License" src="https://img.shields.io/badge/License-MIT-blue"> |
| 16 | + <a href="https://doi.org/10.1145/3810954"><img alt="DOI" src="https://img.shields.io/badge/DOI-10.1145%2F3810954-blue"></a> |
| 17 | + </p> |
| 18 | + |
| 19 | + <p> |
| 20 | + <a href="#quick-start">Quick Start</a> · |
| 21 | + <a href="#artifact-contents">Artifact Contents</a> · |
| 22 | + <a href="#adaptation-reference">Adaptation Reference</a> · |
| 23 | + <a href="#repository-layout">Repository Layout</a> · |
| 24 | + <a href="#citation">Citation</a> · |
| 25 | + <a href="#license">License</a> |
| 26 | + </p> |
| 27 | +</div> |
| 28 | + |
| 29 | +## Quick Start |
| 30 | + |
| 31 | +A pre-built LASM binary for Linux x86_64 is included: |
| 32 | + |
| 33 | +```bash |
| 34 | +cd potato |
| 35 | +chmod +x tools/lasm |
| 36 | +./tools/lasm lan4test/gemm_scalar.lan \ |
| 37 | + --layout tools/potato.json \ |
| 38 | + --dce --licm \ |
| 39 | + --laems --ec=0-8 --ims --fbbfc --fbbfl --tdlsc --tdlsl \ |
| 40 | + --output gemm_scalar.s |
| 41 | +``` |
| 42 | + |
| 43 | +Common commands: |
| 44 | + |
| 45 | +| Task | Command | |
| 46 | +| --- | --- | |
| 47 | +| Show compiler options | `cd potato && ./tools/lasm --help` | |
| 48 | +| Compile scalar GEMM | `cd potato && ./tools/lasm lan4test/gemm_scalar.lan --layout tools/potato.json --output gemm_scalar.s` | |
| 49 | +| Compile vector GEMM with fused multiply-add | `cd potato && ./tools/lasm lan4test/sgemm_vector_muladd.lan --layout tools/potato.json --output sgemm_muladd.s` | |
| 50 | +| Read the Potato guide | `potato/README.md` | |
| 51 | +| Read the LAN specification | `docs/LAN-spec-v2.0.md` | |
| 52 | + |
| 53 | +## Artifact Contents |
| 54 | + |
| 55 | +| Component | Status | Notes | |
| 56 | +| --- | ---: | --- | |
| 57 | +| LAN language specification | Available | `docs/LAN-spec-v2.0.md` | |
| 58 | +| Potato adaptation reference | Available | Fictional, non-confidential VLIW processor under `potato/` | |
| 59 | +| Runnable LASM compiler | Available | Linux x86_64 binary under `potato/tools/lasm` | |
| 60 | +| Example LAN programs | Available | GEMM examples under `potato/lan4test/` | |
| 61 | + |
| 62 | +## Adaptation Reference |
| 63 | + |
| 64 | +LASM is designed to support most VLIW architectures on the market. To illustrate the adaptation process, this repository includes Potato — a fictional, non-confidential VLIW vector processor that serves purely as a reference for how to bring up a new target. Through Potato, users can see how to: |
| 65 | + |
| 66 | +- write symbolic LAN programs with automatic register allocation; |
| 67 | +- configure register files, functional units, and instruction constraints for a target architecture; |
| 68 | +- compose multiple scheduling strategies (LAEMS, FBBF, IMS, TDLS) and let LASM select the best result; |
| 69 | +- run the complete command-line flow from LAN input to generated assembly. |
| 70 | + |
| 71 | +Potato is a fictional reference only — real VLIW architectures are adapted by defining their own machine description files following the same pattern. See `potato/README.md` for the full Potato description, instruction set details, and example programs. |
| 72 | + |
| 73 | +## Repository Layout |
| 74 | + |
| 75 | +```text |
| 76 | +. |
| 77 | +├── docs/ |
| 78 | +│ └── LAN-spec-v2.0.md # LAN syntax and semantic specification |
| 79 | +├── potato/ |
| 80 | +│ ├── README.md # Potato target guide and examples |
| 81 | +│ ├── lan4test/ # Public LAN example programs |
| 82 | +│ └── tools/ |
| 83 | +│ ├── lasm # Pre-built Linux x86_64 LASM binary |
| 84 | +│ └── potato.json # Potato memory layout and calling convention |
| 85 | +└── LICENSE |
| 86 | +``` |
| 87 | + |
| 88 | +## Citation |
| 89 | + |
| 90 | +If you use LASM in your research, please cite our paper: |
| 91 | + |
| 92 | +```bibtex |
| 93 | +@article{10.1145/3810954, |
| 94 | + author = {Zhong, Hongli and Liu, Zhong and Ma, Sheng}, |
| 95 | + title = {LASM: Extensible Competitive Scheduling Framework for VLIW Assembly Optimization}, |
| 96 | + year = {2026}, |
| 97 | + publisher = {Association for Computing Machinery}, |
| 98 | + address = {New York, NY, USA}, |
| 99 | + issn = {1084-4309}, |
| 100 | + url = {https://doi.org/10.1145/3810954}, |
| 101 | + doi = {10.1145/3810954}, |
| 102 | + journal = {ACM Trans. Des. Autom. Electron. Syst.}, |
| 103 | + month = apr, |
| 104 | + keywords = {VLIW architectures, instruction scheduling, software pipelining, assembly optimization, compiler extensibility, multi-strategy orchestration} |
| 105 | +} |
| 106 | +``` |
| 107 | + |
| 108 | +## License |
| 109 | + |
| 110 | +This artifact is released under the MIT License. See `LICENSE` for details. |
0 commit comments