Skip to content

Commit

Permalink
Add logo to README
Browse files Browse the repository at this point in the history
  • Loading branch information
hanno-becker committed Dec 24, 2023
1 parent 40af412 commit 2d2f4f7
Showing 1 changed file with 10 additions and 6 deletions.
16 changes: 10 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,16 @@
**SLOTHY** - **S**uper (**L**azy) **O**ptimization of **T**ricky **H**andwritten assembl**Y** - is an assembly-level superoptimizer
<div>
<image src="./docs/slothy_logo.png" width=160>
<span><p>**SLOTHY** - **S**uper (**L**azy) **O**ptimization of **T**ricky **H**andwritten assembl**Y** - is an assembly-level superoptimizer
for:
1. Instruction scheduling
2. Register allocation
3. Software pipelining (= periodic loop interleaving)
</p></span>
</div>

SLOTHY is generic in the target architecture and microarchitecture. This repository provides instantiations for the
the Cortex-M55 and Cortex-M85 CPUs implementing Armv8.1-M + Helium, and the Cortex-A55 and Cortex-A72
CPUs implementing Armv8-A + Neon. There is an experimental model for Cortex-X/Neoverse-V cores.
CPUs implementing Armv8-A + Neon. There is an experimental model for Cortex-X/Neoverse-V cores.

SLOTHY is discussed in [Fast and Clean: Auditable high-performance assembly via constraint solving](https://eprint.iacr.org/2022/1303).

Expand All @@ -16,10 +20,10 @@ SLOTHY enables a development workflow where developers write 'clean' assembly by

### How it works

SLOTHY is essentially a constraint solver frontend: It converts the input source into a data flow graph and
SLOTHY is essentially a constraint solver frontend: It converts the input source into a data flow graph and
builds a constraint model capturing valid instruction schedulings, register renamings, and periodic loop
interleavings. The model is passed to an external constraint solver and, upon success,
a satisfying assignment converted back into the final code. Currently, SLOTHY uses
interleavings. The model is passed to an external constraint solver and, upon success,
a satisfying assignment converted back into the final code. Currently, SLOTHY uses
[Google OR-Tools](https://developers.google.com/optimization) as its constraint solver backend.

### Performance
Expand Down Expand Up @@ -270,4 +274,4 @@ The [examples](examples/naive) directory contains numerous exemplary assembly sn
`python3 example.py --examples={YOUR_EXAMPLE}`. See `python3 examples.py --help` for the list of all available examples.

The use of SLOTHY from the command line is illustrated in [scripts/](scripts/) supporting the real-world optimizations
for the NTT, FFT and X25519 discussed in [Fast and Clean: Auditable high-performance assembly via constraint solving](https://eprint.iacr.org/2022/1303).
for the NTT, FFT and X25519 discussed in [Fast and Clean: Auditable high-performance assembly via constraint solving](https://eprint.iacr.org/2022/1303).

0 comments on commit 2d2f4f7

Please sign in to comment.