Skip to content

Commit c32dd3b

Browse files
committed
update README.md
1 parent 28f785b commit c32dd3b

9 files changed

Lines changed: 2867 additions & 0 deletions

File tree

LICENSE

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2021-2023, urays.cc@gmail.com
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.

README.md

Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
<div align="center">
2+
<p>
3+
<code>&nbsp;&nbsp;&nbsp;__&nbsp;&nbsp;&nbsp;&nbsp;_____&nbsp;_____&nbsp;_____</code><br>
4+
<code>&nbsp;&nbsp;|&nbsp;&nbsp;|&nbsp;&nbsp;|&nbsp;&nbsp;_&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;__|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|</code><br>
5+
<code>&nbsp;&nbsp;|&nbsp;&nbsp;|__|&nbsp;|_|&nbsp;|__&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;|&nbsp;&nbsp;|</code><br>
6+
<code>&nbsp;&nbsp;|_____|&nbsp;___&nbsp;|_____|_&nbsp;|&nbsp;_|</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

Comments
 (0)