simdref 0.0.4__tar.gz → 0.0.6__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {simdref-0.0.4/src/simdref.egg-info → simdref-0.0.6}/PKG-INFO +32 -106
- {simdref-0.0.4 → simdref-0.0.6}/README.md +18 -94
- {simdref-0.0.4 → simdref-0.0.6}/pyproject.toml +20 -17
- {simdref-0.0.4 → simdref-0.0.6}/src/simdref/annotate.py +132 -37
- {simdref-0.0.4 → simdref-0.0.6}/src/simdref/cli.py +507 -331
- simdref-0.0.4/src/simdref/web.py → simdref-0.0.6/src/simdref/export.py +140 -48
- {simdref-0.0.4 → simdref-0.0.6}/src/simdref/ingest_sources.py +3 -3
- {simdref-0.0.4 → simdref-0.0.6}/src/simdref/manpages.py +13 -15
- {simdref-0.0.4 → simdref-0.0.6}/src/simdref/queries.py +8 -2
- {simdref-0.0.4 → simdref-0.0.6}/src/simdref/storage.py +108 -26
- {simdref-0.0.4 → simdref-0.0.6}/src/simdref/ui_labels.py +7 -6
- {simdref-0.0.4 → simdref-0.0.6/src/simdref.egg-info}/PKG-INFO +32 -106
- {simdref-0.0.4 → simdref-0.0.6}/src/simdref.egg-info/SOURCES.txt +6 -22
- simdref-0.0.6/src/simdref.egg-info/requires.txt +10 -0
- simdref-0.0.6/tests/test_annotate_positions.py +146 -0
- {simdref-0.0.4 → simdref-0.0.6}/tests/test_auto_update_on_version_change.py +6 -6
- {simdref-0.0.4 → simdref-0.0.6}/tests/test_coverage_live.py +6 -2
- {simdref-0.0.4 → simdref-0.0.6}/tests/test_coverage_parity.py +7 -3
- simdref-0.0.6/tests/test_export.py +214 -0
- {simdref-0.0.4 → simdref-0.0.6}/tests/test_issue2_fixes.py +1 -1
- simdref-0.0.6/tests/test_issues_23_24_25.py +384 -0
- {simdref-0.0.4 → simdref-0.0.6}/tests/test_lsp_web.py +17 -49
- {simdref-0.0.4 → simdref-0.0.6}/tests/test_presentation.py +14 -25
- {simdref-0.0.4 → simdref-0.0.6}/tests/test_preset_persistence.py +0 -28
- simdref-0.0.6/tests/test_riscv_docs_pages.py +52 -0
- simdref-0.0.6/tests/test_storage_payload.py +56 -0
- {simdref-0.0.4 → simdref-0.0.6}/tests/test_storage_schema.py +29 -3
- {simdref-0.0.4 → simdref-0.0.6}/tests/test_ui_labels_parity.py +4 -39
- {simdref-0.0.4 → simdref-0.0.6}/tests/test_version_matches_pyproject.py +5 -1
- simdref-0.0.4/src/simdref/profile/__init__.py +0 -25
- simdref-0.0.4/src/simdref/profile/adapters/__init__.py +0 -1
- simdref-0.0.4/src/simdref/profile/adapters/exegesis.py +0 -65
- simdref-0.0.4/src/simdref/profile/adapters/mca.py +0 -84
- simdref-0.0.4/src/simdref/profile/adapters/perf.py +0 -245
- simdref-0.0.4/src/simdref/profile/adapters/uprof.py +0 -89
- simdref-0.0.4/src/simdref/profile/adapters/vtune.py +0 -83
- simdref-0.0.4/src/simdref/profile/adapters/xctrace.py +0 -66
- simdref-0.0.4/src/simdref/profile/hotloop.py +0 -315
- simdref-0.0.4/src/simdref/profile/merge.py +0 -215
- simdref-0.0.4/src/simdref/profile/model.py +0 -129
- simdref-0.0.4/src/simdref/profile/orchestrate.py +0 -303
- simdref-0.0.4/src/simdref/profile/registry.py +0 -62
- simdref-0.0.4/src/simdref/templates/__init__.py +0 -0
- simdref-0.0.4/src/simdref/templates/app.js +0 -2358
- simdref-0.0.4/src/simdref/templates/favicon.svg +0 -5
- simdref-0.0.4/src/simdref/templates/index.html +0 -164
- simdref-0.0.4/src/simdref/templates/logo.svg +0 -12
- simdref-0.0.4/src/simdref/templates/style.css +0 -917
- simdref-0.0.4/src/simdref.egg-info/requires.txt +0 -10
- simdref-0.0.4/tests/test_search_index_js.py +0 -34
- simdref-0.0.4/tests/test_web_e2e.py +0 -201
- {simdref-0.0.4 → simdref-0.0.6}/LICENSE +0 -0
- {simdref-0.0.4 → simdref-0.0.6}/setup.cfg +0 -0
- {simdref-0.0.4 → simdref-0.0.6}/src/simdref/__init__.py +0 -0
- {simdref-0.0.4 → simdref-0.0.6}/src/simdref/__main__.py +0 -0
- {simdref-0.0.4 → simdref-0.0.6}/src/simdref/arm_instructions.py +0 -0
- {simdref-0.0.4 → simdref-0.0.6}/src/simdref/display.py +0 -0
- {simdref-0.0.4 → simdref-0.0.6}/src/simdref/filters.py +0 -0
- {simdref-0.0.4 → simdref-0.0.6}/src/simdref/ingest.py +0 -0
- {simdref-0.0.4 → simdref-0.0.6}/src/simdref/ingest_catalog.py +0 -0
- {simdref-0.0.4 → simdref-0.0.6}/src/simdref/ingest_pdf.py +0 -0
- {simdref-0.0.4 → simdref-0.0.6}/src/simdref/lsp.py +0 -0
- {simdref-0.0.4 → simdref-0.0.6}/src/simdref/models.py +0 -0
- {simdref-0.0.4 → simdref-0.0.6}/src/simdref/pdfparse/__init__.py +0 -0
- {simdref-0.0.4 → simdref-0.0.6}/src/simdref/pdfparse/base.py +0 -0
- {simdref-0.0.4 → simdref-0.0.6}/src/simdref/pdfparse/intel.py +0 -0
- {simdref-0.0.4 → simdref-0.0.6}/src/simdref/pdfparse/registry.py +0 -0
- {simdref-0.0.4 → simdref-0.0.6}/src/simdref/pdfparse/types.py +0 -0
- {simdref-0.0.4 → simdref-0.0.6}/src/simdref/pdfrefs.py +0 -0
- {simdref-0.0.4 → simdref-0.0.6}/src/simdref/perf.py +0 -0
- {simdref-0.0.4 → simdref-0.0.6}/src/simdref/perf_sources/__init__.py +0 -0
- {simdref-0.0.4 → simdref-0.0.6}/src/simdref/perf_sources/cores.py +0 -0
- {simdref-0.0.4 → simdref-0.0.6}/src/simdref/perf_sources/llvm_mca.py +0 -0
- {simdref-0.0.4 → simdref-0.0.6}/src/simdref/perf_sources/llvm_scheduling.py +0 -0
- {simdref-0.0.4 → simdref-0.0.6}/src/simdref/perf_sources/merge.py +0 -0
- {simdref-0.0.4 → simdref-0.0.6}/src/simdref/riscv.py +0 -0
- {simdref-0.0.4 → simdref-0.0.6}/src/simdref/search.py +0 -0
- {simdref-0.0.4 → simdref-0.0.6}/src/simdref/tui.py +0 -0
- {simdref-0.0.4 → simdref-0.0.6}/src/simdref.egg-info/dependency_links.txt +0 -0
- {simdref-0.0.4 → simdref-0.0.6}/src/simdref.egg-info/entry_points.txt +0 -0
- {simdref-0.0.4 → simdref-0.0.6}/src/simdref.egg-info/top_level.txt +0 -0
- {simdref-0.0.4 → simdref-0.0.6}/tests/test_annotate.py +0 -0
- {simdref-0.0.4 → simdref-0.0.6}/tests/test_audit_coverage.py +0 -0
- {simdref-0.0.4 → simdref-0.0.6}/tests/test_cli_bare_query.py +0 -0
- {simdref-0.0.4 → simdref-0.0.6}/tests/test_cli_bootstrap_progress.py +0 -0
- {simdref-0.0.4 → simdref-0.0.6}/tests/test_cli_help.py +0 -0
- {simdref-0.0.4 → simdref-0.0.6}/tests/test_cli_llm.py +0 -0
- {simdref-0.0.4 → simdref-0.0.6}/tests/test_display.py +0 -0
- {simdref-0.0.4 → simdref-0.0.6}/tests/test_filters.py +0 -0
- {simdref-0.0.4 → simdref-0.0.6}/tests/test_ingest_sources.py +0 -0
- {simdref-0.0.4 → simdref-0.0.6}/tests/test_intel_operation_and_url.py +0 -0
- {simdref-0.0.4 → simdref-0.0.6}/tests/test_models.py +0 -0
- {simdref-0.0.4 → simdref-0.0.6}/tests/test_pdfparse.py +0 -0
- {simdref-0.0.4 → simdref-0.0.6}/tests/test_perf.py +0 -0
- {simdref-0.0.4 → simdref-0.0.6}/tests/test_perf_sources.py +0 -0
- {simdref-0.0.4 → simdref-0.0.6}/tests/test_search.py +0 -0
- {simdref-0.0.4 → simdref-0.0.6}/tests/test_search_pushdown.py +0 -0
- {simdref-0.0.4 → simdref-0.0.6}/tests/test_source_kind_filter.py +0 -0
- {simdref-0.0.4 → simdref-0.0.6}/tests/test_source_validation.py +0 -0
- {simdref-0.0.4 → simdref-0.0.6}/tests/test_tui.py +0 -0
- {simdref-0.0.4 → simdref-0.0.6}/tests/test_x86_linking.py +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: simdref
|
|
3
|
-
Version: 0.0.
|
|
4
|
-
Summary: Searchable SIMD intrinsic and instruction reference with CLI, manpages, TUI,
|
|
3
|
+
Version: 0.0.6
|
|
4
|
+
Summary: Searchable SIMD intrinsic and instruction reference with CLI, manpages, TUI, and LSP.
|
|
5
5
|
Author: Marco
|
|
6
6
|
License: GPL-3.0-or-later
|
|
7
7
|
Classifier: Development Status :: 3 - Alpha
|
|
@@ -10,119 +10,59 @@ Classifier: Intended Audience :: Developers
|
|
|
10
10
|
Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
|
|
11
11
|
Classifier: Operating System :: OS Independent
|
|
12
12
|
Classifier: Programming Language :: Python :: 3
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
13
14
|
Classifier: Programming Language :: Python :: 3.11
|
|
14
15
|
Classifier: Programming Language :: Python :: 3.12
|
|
15
16
|
Classifier: Programming Language :: Python :: 3.13
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
16
18
|
Classifier: Topic :: Software Development :: Documentation
|
|
17
19
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
18
|
-
Requires-Python: >=3.
|
|
20
|
+
Requires-Python: >=3.10
|
|
19
21
|
Description-Content-Type: text/markdown
|
|
20
22
|
License-File: LICENSE
|
|
21
|
-
Requires-Dist: click<
|
|
23
|
+
Requires-Dist: click<9,>=8.5
|
|
22
24
|
Requires-Dist: httpx<1,>=0.28
|
|
23
|
-
Requires-Dist: msgpack<2,>=1.
|
|
24
|
-
Requires-Dist: pdfplumber<1,>=0.11
|
|
25
|
-
Requires-Dist: PyMuPDF<2,>=1.
|
|
26
|
-
Requires-Dist: PyYAML<7,>=6
|
|
27
|
-
Requires-Dist: rapidfuzz<4,>=3.
|
|
28
|
-
Requires-Dist: rich<15
|
|
29
|
-
Requires-Dist: textual<
|
|
30
|
-
Requires-Dist: typer<1,>=0.
|
|
25
|
+
Requires-Dist: msgpack<2,>=1.2.1
|
|
26
|
+
Requires-Dist: pdfplumber<1,>=0.11.10
|
|
27
|
+
Requires-Dist: PyMuPDF<2,>=1.28
|
|
28
|
+
Requires-Dist: PyYAML<7,>=6.0.3
|
|
29
|
+
Requires-Dist: rapidfuzz<4,>=3.14
|
|
30
|
+
Requires-Dist: rich<16,>=15
|
|
31
|
+
Requires-Dist: textual<9,>=8.2
|
|
32
|
+
Requires-Dist: typer<1,>=0.27
|
|
31
33
|
Dynamic: license-file
|
|
32
34
|
|
|
33
35
|
# simdref
|
|
34
36
|
|
|
35
|
-
[](https://github.com/simd-labs/simdref/actions/workflows/ci.yml)
|
|
36
38
|
[](https://test.pypi.org/project/simdref/)
|
|
37
39
|
[](https://pypi.org/project/simdref/)
|
|
38
40
|
|
|
39
41
|
A single searchable reference for SIMD intrinsics and instructions across
|
|
40
42
|
**x86 (Intel + uops.info)**, **Arm (ACLE / AARCHMRS)**, and **RISC-V
|
|
41
43
|
(RVV + unified-db)**. Runs as a CLI, a Textual TUI, an LSP server,
|
|
42
|
-
|
|
43
|
-
|
|
44
|
+
on-demand manpages (`simdref man` — or run `simdref install-manpages`
|
|
45
|
+
so plain `man vpaddd` works), a static web app, and a structured JSON
|
|
46
|
+
interface for LLM skills.
|
|
44
47
|
|
|
45
|
-
[Web App](https://diamondinoia.
|
|
48
|
+
[Web App](https://simdref.diamondinoia.com/) ·
|
|
46
49
|
[TestPyPI](https://test.pypi.org/project/simdref/) ·
|
|
47
|
-
[GitHub](https://github.com/
|
|
50
|
+
[GitHub](https://github.com/simd-labs/simdref) ·
|
|
48
51
|
[Contributing](CONTRIBUTING.md)
|
|
49
52
|
|
|
50
53
|
<!-- Screenshots are hosted on the `docs-assets` branch so the main
|
|
51
54
|
branch stays lightweight to clone. -->
|
|
52
55
|
|
|
53
56
|
<p align="center">
|
|
54
|
-
<img alt="simdref TUI" src="https://raw.githubusercontent.com/
|
|
57
|
+
<img alt="simdref TUI" src="https://raw.githubusercontent.com/simd-labs/simdref/docs-assets/img/tui.svg" width="720">
|
|
55
58
|
<br><em>Interactive TUI with ISA filters, ranked results, and measured/modeled performance tables.</em>
|
|
56
59
|
</p>
|
|
57
60
|
|
|
58
|
-
## Install the Claude Code skill
|
|
61
|
+
## Install the Claude Code and Codex skill
|
|
59
62
|
|
|
60
|
-
`
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
so the one-liner install is:
|
|
64
|
-
|
|
65
|
-
```
|
|
66
|
-
/plugin marketplace add DiamonDinoia/simdref
|
|
67
|
-
/plugin install asm-analysis@simdref
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
Run those at the Claude Code prompt. The marketplace add fetches this
|
|
71
|
-
repo; the install wires up the skill so Claude picks it up automatically
|
|
72
|
-
on performance-oriented prompts like *"why is this loop slow"*,
|
|
73
|
-
*"vectorise this"*, *"look at the asm"*.
|
|
74
|
-
|
|
75
|
-
### Manual install (no marketplace)
|
|
76
|
-
|
|
77
|
-
If you prefer a hand-managed copy:
|
|
78
|
-
|
|
79
|
-
```bash
|
|
80
|
-
# symlink from a checkout — always current with main:
|
|
81
|
-
git clone https://github.com/DiamonDinoia/simdref.git ~/src/simdref
|
|
82
|
-
mkdir -p ~/.claude/skills
|
|
83
|
-
ln -sf ~/src/simdref/skills/asm-analysis ~/.claude/skills/asm-analysis
|
|
84
|
-
|
|
85
|
-
# or pull a one-off snapshot:
|
|
86
|
-
mkdir -p ~/.claude/skills/asm-analysis && \
|
|
87
|
-
curl -fsSL https://raw.githubusercontent.com/DiamonDinoia/simdref/main/skills/asm-analysis/SKILL.md \
|
|
88
|
-
-o ~/.claude/skills/asm-analysis/SKILL.md
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
See [`skills/asm-analysis/SKILL.md`](skills/asm-analysis/SKILL.md) for
|
|
92
|
-
the full trigger list and pipeline stages.
|
|
93
|
-
|
|
94
|
-
## Install the Codex skill
|
|
95
|
-
|
|
96
|
-
This repo also ships the same pipeline as an OpenAI Codex plugin, so
|
|
97
|
-
the one-liner install from a Codex CLI prompt is:
|
|
98
|
-
|
|
99
|
-
```
|
|
100
|
-
codex plugin marketplace add DiamonDinoia/simdref
|
|
101
|
-
/plugins
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
Pick `asm-analysis` in the browser and enable it. Codex picks up the
|
|
105
|
-
skill automatically on performance-oriented prompts (*"why is this
|
|
106
|
-
loop slow"*, *"vectorise this"*, *"look at the asm"*).
|
|
107
|
-
|
|
108
|
-
### Manual install (no marketplace)
|
|
109
|
-
|
|
110
|
-
```bash
|
|
111
|
-
# user-scoped symlink — applies to every repo, always current with main:
|
|
112
|
-
git clone https://github.com/DiamonDinoia/simdref.git ~/src/simdref
|
|
113
|
-
mkdir -p ~/.agents/skills
|
|
114
|
-
ln -sf ~/src/simdref/codex-skills/asm-analysis/skills/asm-analysis \
|
|
115
|
-
~/.agents/skills/asm-analysis
|
|
116
|
-
|
|
117
|
-
# or scope the skill to a single repo:
|
|
118
|
-
mkdir -p .agents/skills
|
|
119
|
-
ln -sf ~/src/simdref/codex-skills/asm-analysis/skills/asm-analysis \
|
|
120
|
-
.agents/skills/asm-analysis
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
See
|
|
124
|
-
[`codex-skills/asm-analysis/skills/asm-analysis/SKILL.md`](codex-skills/asm-analysis/skills/asm-analysis/SKILL.md)
|
|
125
|
-
for the trigger list and pipeline stages.
|
|
63
|
+
The `asm-analysis` skill for Claude Code and OpenAI Codex lives in
|
|
64
|
+
[simd-labs/simdref-skill](https://github.com/simd-labs/simdref-skill).
|
|
65
|
+
Follow the install steps in that repo.
|
|
126
66
|
|
|
127
67
|
## Install
|
|
128
68
|
|
|
@@ -133,15 +73,6 @@ isa doctor # confirm everything is wired up
|
|
|
133
73
|
isa # open the TUI
|
|
134
74
|
```
|
|
135
75
|
|
|
136
|
-
For the bleeding-edge version with the `simdref profile` subcommand
|
|
137
|
-
(runtime-profile → asm-annotation pipeline, Stage 2b of the skill),
|
|
138
|
-
install from `main`:
|
|
139
|
-
|
|
140
|
-
```bash
|
|
141
|
-
pipx install git+https://github.com/DiamonDinoia/simdref.git@main
|
|
142
|
-
# or editable: pip install -e git+https://github.com/DiamonDinoia/simdref.git@main#egg=simdref
|
|
143
|
-
```
|
|
144
|
-
|
|
145
76
|
The package installs two equivalent executables, **`isa`** (short) and
|
|
146
77
|
**`simdref`** (explicit). The rest of this README uses `isa`.
|
|
147
78
|
|
|
@@ -173,15 +104,15 @@ isa # open the interactive TUI
|
|
|
173
104
|
|
|
174
105
|
**Web app** — a self-contained static SPA with filters and performance
|
|
175
106
|
tables, published to GitHub Pages at
|
|
176
|
-
[diamondinoia.
|
|
177
|
-
|
|
107
|
+
[simdref.diamondinoia.com](https://simdref.diamondinoia.com/) and
|
|
108
|
+
built from the `simdref-web` repo. This repo (`simdref-core`) exports the
|
|
109
|
+
JSON data it consumes:
|
|
178
110
|
|
|
179
111
|
```bash
|
|
180
|
-
isa
|
|
181
|
-
isa serve --web-dir ./web # gzip-aware local server
|
|
112
|
+
isa export --out-dir ./site-data
|
|
182
113
|
```
|
|
183
114
|
|
|
184
|
-
The [live demo](https://diamondinoia.
|
|
115
|
+
The [live demo](https://simdref.diamondinoia.com/) hosts the same
|
|
185
116
|
build — search across ~122k entries with ISA filters and per-uarch perf
|
|
186
117
|
tables.
|
|
187
118
|
|
|
@@ -257,10 +188,6 @@ and `ld` still consume it.
|
|
|
257
188
|
| `isa doctor` | Check the installation — pass/fail per component, non-zero exit on failure |
|
|
258
189
|
| `isa update` | Download the pre-built release catalog (no `llvm-mca` required); `--from-release` for the GitHub Release artifact |
|
|
259
190
|
| `isa annotate <file.s>` | Annotate a `.s` assembly file with per-instruction summaries and latency/CPI — writes `<file>.sa` |
|
|
260
|
-
| `isa profile run` | Compile→record→disassemble→annotate→merge in one shot (perf or llvm-mca) |
|
|
261
|
-
| `isa profile ingest` | Convert profiler output (perf / VTune / uProf / xctrace / llvm-mca / exegesis) to normalized samples |
|
|
262
|
-
| `isa profile hotloops` | Detect natural loops in a disassembly and rank them by sample weight |
|
|
263
|
-
| `isa profile merge` | Attach hotness data to the annotated instruction stream |
|
|
264
191
|
| `isa llm query <q>` | Strict lookup → JSON/NDJSON/Markdown (see [docs/LLM.md](docs/LLM.md)) |
|
|
265
192
|
| `isa llm batch` | Resolve many queries from stdin in one invocation (NDJSON out) |
|
|
266
193
|
| `isa llm list` | Dump the `FilterSpec` or stream matching catalog entries |
|
|
@@ -271,8 +198,7 @@ and `ld` still consume it.
|
|
|
271
198
|
| Command | Description |
|
|
272
199
|
| -------------------------------- | ----------------------------------------------------------------------------------------------- |
|
|
273
200
|
| `isa build` | Full local rebuild from upstream sources, including Intel SDM parsing (`llvm-mca` 18+ required) |
|
|
274
|
-
| `isa
|
|
275
|
-
| `isa serve` | Serve the exported web app locally (gzip-aware) |
|
|
201
|
+
| `isa export` | Export site data (JSON only) — the release contract for the `simdref-web` repo |
|
|
276
202
|
| `isa completion install [SHELL]` | Install shell completion into the user's profile |
|
|
277
203
|
| `isa completion show [SHELL]` | Print the completion script for a shell |
|
|
278
204
|
|
|
@@ -307,7 +233,7 @@ mixed.
|
|
|
307
233
|
## Development
|
|
308
234
|
|
|
309
235
|
```bash
|
|
310
|
-
git clone https://github.com/
|
|
236
|
+
git clone https://github.com/simd-labs/simdref.git
|
|
311
237
|
cd simdref
|
|
312
238
|
python3 -m venv .venv
|
|
313
239
|
.venv/bin/pip install -e .
|
|
@@ -1,96 +1,34 @@
|
|
|
1
1
|
# simdref
|
|
2
2
|
|
|
3
|
-
[](https://github.com/simd-labs/simdref/actions/workflows/ci.yml)
|
|
4
4
|
[](https://test.pypi.org/project/simdref/)
|
|
5
5
|
[](https://pypi.org/project/simdref/)
|
|
6
6
|
|
|
7
7
|
A single searchable reference for SIMD intrinsics and instructions across
|
|
8
8
|
**x86 (Intel + uops.info)**, **Arm (ACLE / AARCHMRS)**, and **RISC-V
|
|
9
9
|
(RVV + unified-db)**. Runs as a CLI, a Textual TUI, an LSP server,
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
on-demand manpages (`simdref man` — or run `simdref install-manpages`
|
|
11
|
+
so plain `man vpaddd` works), a static web app, and a structured JSON
|
|
12
|
+
interface for LLM skills.
|
|
12
13
|
|
|
13
|
-
[Web App](https://diamondinoia.
|
|
14
|
+
[Web App](https://simdref.diamondinoia.com/) ·
|
|
14
15
|
[TestPyPI](https://test.pypi.org/project/simdref/) ·
|
|
15
|
-
[GitHub](https://github.com/
|
|
16
|
+
[GitHub](https://github.com/simd-labs/simdref) ·
|
|
16
17
|
[Contributing](CONTRIBUTING.md)
|
|
17
18
|
|
|
18
19
|
<!-- Screenshots are hosted on the `docs-assets` branch so the main
|
|
19
20
|
branch stays lightweight to clone. -->
|
|
20
21
|
|
|
21
22
|
<p align="center">
|
|
22
|
-
<img alt="simdref TUI" src="https://raw.githubusercontent.com/
|
|
23
|
+
<img alt="simdref TUI" src="https://raw.githubusercontent.com/simd-labs/simdref/docs-assets/img/tui.svg" width="720">
|
|
23
24
|
<br><em>Interactive TUI with ISA filters, ranked results, and measured/modeled performance tables.</em>
|
|
24
25
|
</p>
|
|
25
26
|
|
|
26
|
-
## Install the Claude Code skill
|
|
27
|
+
## Install the Claude Code and Codex skill
|
|
27
28
|
|
|
28
|
-
`
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
so the one-liner install is:
|
|
32
|
-
|
|
33
|
-
```
|
|
34
|
-
/plugin marketplace add DiamonDinoia/simdref
|
|
35
|
-
/plugin install asm-analysis@simdref
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
Run those at the Claude Code prompt. The marketplace add fetches this
|
|
39
|
-
repo; the install wires up the skill so Claude picks it up automatically
|
|
40
|
-
on performance-oriented prompts like *"why is this loop slow"*,
|
|
41
|
-
*"vectorise this"*, *"look at the asm"*.
|
|
42
|
-
|
|
43
|
-
### Manual install (no marketplace)
|
|
44
|
-
|
|
45
|
-
If you prefer a hand-managed copy:
|
|
46
|
-
|
|
47
|
-
```bash
|
|
48
|
-
# symlink from a checkout — always current with main:
|
|
49
|
-
git clone https://github.com/DiamonDinoia/simdref.git ~/src/simdref
|
|
50
|
-
mkdir -p ~/.claude/skills
|
|
51
|
-
ln -sf ~/src/simdref/skills/asm-analysis ~/.claude/skills/asm-analysis
|
|
52
|
-
|
|
53
|
-
# or pull a one-off snapshot:
|
|
54
|
-
mkdir -p ~/.claude/skills/asm-analysis && \
|
|
55
|
-
curl -fsSL https://raw.githubusercontent.com/DiamonDinoia/simdref/main/skills/asm-analysis/SKILL.md \
|
|
56
|
-
-o ~/.claude/skills/asm-analysis/SKILL.md
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
See [`skills/asm-analysis/SKILL.md`](skills/asm-analysis/SKILL.md) for
|
|
60
|
-
the full trigger list and pipeline stages.
|
|
61
|
-
|
|
62
|
-
## Install the Codex skill
|
|
63
|
-
|
|
64
|
-
This repo also ships the same pipeline as an OpenAI Codex plugin, so
|
|
65
|
-
the one-liner install from a Codex CLI prompt is:
|
|
66
|
-
|
|
67
|
-
```
|
|
68
|
-
codex plugin marketplace add DiamonDinoia/simdref
|
|
69
|
-
/plugins
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
Pick `asm-analysis` in the browser and enable it. Codex picks up the
|
|
73
|
-
skill automatically on performance-oriented prompts (*"why is this
|
|
74
|
-
loop slow"*, *"vectorise this"*, *"look at the asm"*).
|
|
75
|
-
|
|
76
|
-
### Manual install (no marketplace)
|
|
77
|
-
|
|
78
|
-
```bash
|
|
79
|
-
# user-scoped symlink — applies to every repo, always current with main:
|
|
80
|
-
git clone https://github.com/DiamonDinoia/simdref.git ~/src/simdref
|
|
81
|
-
mkdir -p ~/.agents/skills
|
|
82
|
-
ln -sf ~/src/simdref/codex-skills/asm-analysis/skills/asm-analysis \
|
|
83
|
-
~/.agents/skills/asm-analysis
|
|
84
|
-
|
|
85
|
-
# or scope the skill to a single repo:
|
|
86
|
-
mkdir -p .agents/skills
|
|
87
|
-
ln -sf ~/src/simdref/codex-skills/asm-analysis/skills/asm-analysis \
|
|
88
|
-
.agents/skills/asm-analysis
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
See
|
|
92
|
-
[`codex-skills/asm-analysis/skills/asm-analysis/SKILL.md`](codex-skills/asm-analysis/skills/asm-analysis/SKILL.md)
|
|
93
|
-
for the trigger list and pipeline stages.
|
|
29
|
+
The `asm-analysis` skill for Claude Code and OpenAI Codex lives in
|
|
30
|
+
[simd-labs/simdref-skill](https://github.com/simd-labs/simdref-skill).
|
|
31
|
+
Follow the install steps in that repo.
|
|
94
32
|
|
|
95
33
|
## Install
|
|
96
34
|
|
|
@@ -101,15 +39,6 @@ isa doctor # confirm everything is wired up
|
|
|
101
39
|
isa # open the TUI
|
|
102
40
|
```
|
|
103
41
|
|
|
104
|
-
For the bleeding-edge version with the `simdref profile` subcommand
|
|
105
|
-
(runtime-profile → asm-annotation pipeline, Stage 2b of the skill),
|
|
106
|
-
install from `main`:
|
|
107
|
-
|
|
108
|
-
```bash
|
|
109
|
-
pipx install git+https://github.com/DiamonDinoia/simdref.git@main
|
|
110
|
-
# or editable: pip install -e git+https://github.com/DiamonDinoia/simdref.git@main#egg=simdref
|
|
111
|
-
```
|
|
112
|
-
|
|
113
42
|
The package installs two equivalent executables, **`isa`** (short) and
|
|
114
43
|
**`simdref`** (explicit). The rest of this README uses `isa`.
|
|
115
44
|
|
|
@@ -141,15 +70,15 @@ isa # open the interactive TUI
|
|
|
141
70
|
|
|
142
71
|
**Web app** — a self-contained static SPA with filters and performance
|
|
143
72
|
tables, published to GitHub Pages at
|
|
144
|
-
[diamondinoia.
|
|
145
|
-
|
|
73
|
+
[simdref.diamondinoia.com](https://simdref.diamondinoia.com/) and
|
|
74
|
+
built from the `simdref-web` repo. This repo (`simdref-core`) exports the
|
|
75
|
+
JSON data it consumes:
|
|
146
76
|
|
|
147
77
|
```bash
|
|
148
|
-
isa
|
|
149
|
-
isa serve --web-dir ./web # gzip-aware local server
|
|
78
|
+
isa export --out-dir ./site-data
|
|
150
79
|
```
|
|
151
80
|
|
|
152
|
-
The [live demo](https://diamondinoia.
|
|
81
|
+
The [live demo](https://simdref.diamondinoia.com/) hosts the same
|
|
153
82
|
build — search across ~122k entries with ISA filters and per-uarch perf
|
|
154
83
|
tables.
|
|
155
84
|
|
|
@@ -225,10 +154,6 @@ and `ld` still consume it.
|
|
|
225
154
|
| `isa doctor` | Check the installation — pass/fail per component, non-zero exit on failure |
|
|
226
155
|
| `isa update` | Download the pre-built release catalog (no `llvm-mca` required); `--from-release` for the GitHub Release artifact |
|
|
227
156
|
| `isa annotate <file.s>` | Annotate a `.s` assembly file with per-instruction summaries and latency/CPI — writes `<file>.sa` |
|
|
228
|
-
| `isa profile run` | Compile→record→disassemble→annotate→merge in one shot (perf or llvm-mca) |
|
|
229
|
-
| `isa profile ingest` | Convert profiler output (perf / VTune / uProf / xctrace / llvm-mca / exegesis) to normalized samples |
|
|
230
|
-
| `isa profile hotloops` | Detect natural loops in a disassembly and rank them by sample weight |
|
|
231
|
-
| `isa profile merge` | Attach hotness data to the annotated instruction stream |
|
|
232
157
|
| `isa llm query <q>` | Strict lookup → JSON/NDJSON/Markdown (see [docs/LLM.md](docs/LLM.md)) |
|
|
233
158
|
| `isa llm batch` | Resolve many queries from stdin in one invocation (NDJSON out) |
|
|
234
159
|
| `isa llm list` | Dump the `FilterSpec` or stream matching catalog entries |
|
|
@@ -239,8 +164,7 @@ and `ld` still consume it.
|
|
|
239
164
|
| Command | Description |
|
|
240
165
|
| -------------------------------- | ----------------------------------------------------------------------------------------------- |
|
|
241
166
|
| `isa build` | Full local rebuild from upstream sources, including Intel SDM parsing (`llvm-mca` 18+ required) |
|
|
242
|
-
| `isa
|
|
243
|
-
| `isa serve` | Serve the exported web app locally (gzip-aware) |
|
|
167
|
+
| `isa export` | Export site data (JSON only) — the release contract for the `simdref-web` repo |
|
|
244
168
|
| `isa completion install [SHELL]` | Install shell completion into the user's profile |
|
|
245
169
|
| `isa completion show [SHELL]` | Print the completion script for a shell |
|
|
246
170
|
|
|
@@ -275,7 +199,7 @@ mixed.
|
|
|
275
199
|
## Development
|
|
276
200
|
|
|
277
201
|
```bash
|
|
278
|
-
git clone https://github.com/
|
|
202
|
+
git clone https://github.com/simd-labs/simdref.git
|
|
279
203
|
cd simdref
|
|
280
204
|
python3 -m venv .venv
|
|
281
205
|
.venv/bin/pip install -e .
|
|
@@ -4,10 +4,10 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "simdref"
|
|
7
|
-
version = "0.0.
|
|
8
|
-
description = "Searchable SIMD intrinsic and instruction reference with CLI, manpages, TUI,
|
|
7
|
+
version = "0.0.6"
|
|
8
|
+
description = "Searchable SIMD intrinsic and instruction reference with CLI, manpages, TUI, and LSP."
|
|
9
9
|
readme = "README.md"
|
|
10
|
-
requires-python = ">=3.
|
|
10
|
+
requires-python = ">=3.10"
|
|
11
11
|
license = {text = "GPL-3.0-or-later"}
|
|
12
12
|
authors = [
|
|
13
13
|
{name = "Marco"}
|
|
@@ -19,23 +19,30 @@ classifiers = [
|
|
|
19
19
|
"License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)",
|
|
20
20
|
"Operating System :: OS Independent",
|
|
21
21
|
"Programming Language :: Python :: 3",
|
|
22
|
+
"Programming Language :: Python :: 3.10",
|
|
22
23
|
"Programming Language :: Python :: 3.11",
|
|
23
24
|
"Programming Language :: Python :: 3.12",
|
|
24
25
|
"Programming Language :: Python :: 3.13",
|
|
26
|
+
"Programming Language :: Python :: 3.14",
|
|
25
27
|
"Topic :: Software Development :: Documentation",
|
|
26
28
|
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
27
29
|
]
|
|
30
|
+
# `requires-python` tracks the non-EOL CPython range; 3.10 goes EOL 2026-10-31.
|
|
31
|
+
# Lower dependency bound is the version CI resolves and tests; anything older is
|
|
32
|
+
# an untested compatibility claim. Upper bound is the next major (next minor for
|
|
33
|
+
# 0.x, where that is the compatibility unit). msgpack floors above its own
|
|
34
|
+
# advisory: 1.2.0 and earlier carry GHSA-6v7p-g79w-8964.
|
|
28
35
|
dependencies = [
|
|
29
|
-
"click>=8.
|
|
36
|
+
"click>=8.5,<9",
|
|
30
37
|
"httpx>=0.28,<1",
|
|
31
|
-
"msgpack>=1.
|
|
32
|
-
"pdfplumber>=0.11,<1",
|
|
33
|
-
"PyMuPDF>=1.
|
|
34
|
-
"PyYAML>=6,<7",
|
|
35
|
-
"rapidfuzz>=3.
|
|
36
|
-
"rich>=
|
|
37
|
-
"textual>=
|
|
38
|
-
"typer>=0.
|
|
38
|
+
"msgpack>=1.2.1,<2",
|
|
39
|
+
"pdfplumber>=0.11.10,<1",
|
|
40
|
+
"PyMuPDF>=1.28,<2",
|
|
41
|
+
"PyYAML>=6.0.3,<7",
|
|
42
|
+
"rapidfuzz>=3.14,<4",
|
|
43
|
+
"rich>=15,<16",
|
|
44
|
+
"textual>=8.2,<9",
|
|
45
|
+
"typer>=0.27,<1",
|
|
39
46
|
]
|
|
40
47
|
|
|
41
48
|
[project.scripts]
|
|
@@ -45,14 +52,10 @@ simdref-lsp = "simdref.lsp:main"
|
|
|
45
52
|
|
|
46
53
|
[tool.setuptools]
|
|
47
54
|
package-dir = {"" = "src"}
|
|
48
|
-
include-package-data = true
|
|
49
55
|
|
|
50
56
|
[tool.setuptools.packages.find]
|
|
51
57
|
where = ["src"]
|
|
52
58
|
|
|
53
|
-
[tool.setuptools.package-data]
|
|
54
|
-
simdref = ["templates/*"]
|
|
55
|
-
|
|
56
59
|
[tool.ruff]
|
|
57
60
|
line-length = 100
|
|
58
|
-
target-version = "
|
|
61
|
+
target-version = "py310"
|