simdref 0.0.15__tar.gz → 0.0.17__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.15/src/simdref.egg-info → simdref-0.0.17}/PKG-INFO +64 -49
- {simdref-0.0.15 → simdref-0.0.17}/README.md +51 -36
- {simdref-0.0.15 → simdref-0.0.17}/pyproject.toml +27 -19
- simdref-0.0.17/src/simdref/annotate.py +1754 -0
- simdref-0.0.17/src/simdref/arm_instructions.py +920 -0
- simdref-0.0.17/src/simdref/asm_identity.py +1729 -0
- simdref-0.0.17/src/simdref/asmline.py +382 -0
- simdref-0.0.17/src/simdref/catkey.py +426 -0
- {simdref-0.0.15 → simdref-0.0.17}/src/simdref/cli.py +320 -365
- {simdref-0.0.15 → simdref-0.0.17}/src/simdref/display.py +277 -150
- {simdref-0.0.15 → simdref-0.0.17}/src/simdref/export.py +106 -33
- {simdref-0.0.15 → simdref-0.0.17}/src/simdref/filters.py +3 -2
- simdref-0.0.17/src/simdref/htmltext.py +218 -0
- simdref-0.0.17/src/simdref/ingest.py +39 -0
- {simdref-0.0.15 → simdref-0.0.17}/src/simdref/ingest_catalog.py +293 -114
- {simdref-0.0.15 → simdref-0.0.17}/src/simdref/ingest_pdf.py +39 -0
- {simdref-0.0.15 → simdref-0.0.17}/src/simdref/ingest_sources.py +267 -22
- {simdref-0.0.15 → simdref-0.0.17}/src/simdref/lsp.py +735 -474
- {simdref-0.0.15 → simdref-0.0.17}/src/simdref/manpages.py +27 -20
- simdref-0.0.17/src/simdref/operands.py +91 -0
- {simdref-0.0.15 → simdref-0.0.17}/src/simdref/pdfparse/__init__.py +1 -0
- {simdref-0.0.15 → simdref-0.0.17}/src/simdref/pdfparse/intel.py +534 -34
- simdref-0.0.17/src/simdref/perf.py +480 -0
- simdref-0.0.17/src/simdref/perf_sources/amd_swopt.py +789 -0
- simdref-0.0.17/src/simdref/perf_sources/arm_swopt.py +477 -0
- simdref-0.0.17/src/simdref/perf_sources/cores.py +182 -0
- simdref-0.0.17/src/simdref/perf_sources/instlatx64.py +372 -0
- simdref-0.0.17/src/simdref/perf_sources/intel_guide.py +254 -0
- simdref-0.0.17/src/simdref/perf_sources/intel_optref.py +555 -0
- {simdref-0.0.15 → simdref-0.0.17}/src/simdref/perf_sources/llvm_mca.py +153 -8
- {simdref-0.0.15 → simdref-0.0.17}/src/simdref/perf_sources/llvm_scheduling.py +6 -21
- simdref-0.0.17/src/simdref/perf_sources/merge.py +489 -0
- simdref-0.0.17/src/simdref/ptx.py +759 -0
- {simdref-0.0.15 → simdref-0.0.17}/src/simdref/queries.py +15 -85
- simdref-0.0.17/src/simdref/regtable.py +797 -0
- {simdref-0.0.15 → simdref-0.0.17}/src/simdref/riscv.py +171 -106
- {simdref-0.0.15 → simdref-0.0.17}/src/simdref/search.py +35 -65
- {simdref-0.0.15 → simdref-0.0.17}/src/simdref/storage.py +182 -154
- simdref-0.0.17/src/simdref/tablecols.py +182 -0
- {simdref-0.0.15 → simdref-0.0.17}/src/simdref/tui.py +133 -226
- {simdref-0.0.15 → simdref-0.0.17}/src/simdref/ui_labels.py +3 -2
- {simdref-0.0.15 → simdref-0.0.17/src/simdref.egg-info}/PKG-INFO +64 -49
- {simdref-0.0.15 → simdref-0.0.17}/src/simdref.egg-info/SOURCES.txt +73 -0
- {simdref-0.0.15 → simdref-0.0.17}/src/simdref.egg-info/requires.txt +14 -10
- simdref-0.0.17/tests/test_a1_sdm_parser.py +141 -0
- simdref-0.0.17/tests/test_a2_perf_rule.py +111 -0
- simdref-0.0.17/tests/test_a4_arm_pdfrefs.py +50 -0
- simdref-0.0.17/tests/test_a5_offline_aarchmrs.py +45 -0
- simdref-0.0.17/tests/test_amd_match_llvm_mc.py +124 -0
- {simdref-0.0.15 → simdref-0.0.17}/tests/test_annotate.py +180 -2
- {simdref-0.0.15 → simdref-0.0.17}/tests/test_annotate_positions.py +8 -4
- simdref-0.0.17/tests/test_annotate_scans.py +52 -0
- simdref-0.0.17/tests/test_arrangement_tail.py +27 -0
- {simdref-0.0.15 → simdref-0.0.17}/tests/test_asm_identity.py +63 -12
- simdref-0.0.17/tests/test_asmline.py +89 -0
- {simdref-0.0.15 → simdref-0.0.17}/tests/test_audit_coverage.py +20 -0
- {simdref-0.0.15 → simdref-0.0.17}/tests/test_auto_update_on_version_change.py +1 -0
- simdref-0.0.17/tests/test_b1_latency_pairs.py +178 -0
- simdref-0.0.17/tests/test_b2_metadata.py +275 -0
- simdref-0.0.17/tests/test_b3_sdm_forms.py +268 -0
- simdref-0.0.17/tests/test_b4_descriptions_provenance.py +198 -0
- simdref-0.0.17/tests/test_b5_linking.py +135 -0
- simdref-0.0.17/tests/test_b5_perf_family.py +79 -0
- simdref-0.0.17/tests/test_b5_sme.py +173 -0
- simdref-0.0.17/tests/test_c0_perf_priority.py +207 -0
- simdref-0.0.17/tests/test_catkey.py +144 -0
- {simdref-0.0.15 → simdref-0.0.17}/tests/test_cli_bare_query.py +34 -0
- {simdref-0.0.15 → simdref-0.0.17}/tests/test_cli_bootstrap_progress.py +92 -0
- {simdref-0.0.15 → simdref-0.0.17}/tests/test_coverage_live.py +1 -4
- {simdref-0.0.15 → simdref-0.0.17}/tests/test_coverage_parity.py +1 -4
- {simdref-0.0.15 → simdref-0.0.17}/tests/test_display.py +4 -3
- simdref-0.0.17/tests/test_display_scanners.py +66 -0
- {simdref-0.0.15 → simdref-0.0.17}/tests/test_export.py +2 -0
- simdref-0.0.17/tests/test_export_viz.py +127 -0
- simdref-0.0.17/tests/test_fetch_retry.py +175 -0
- simdref-0.0.17/tests/test_fixui_display.py +158 -0
- simdref-0.0.17/tests/test_htmltext.py +40 -0
- {simdref-0.0.15 → simdref-0.0.17}/tests/test_ingest_enc_fields.py +9 -7
- {simdref-0.0.15 → simdref-0.0.17}/tests/test_ingest_sources.py +188 -17
- simdref-0.0.17/tests/test_int_arm_isa_label.py +33 -0
- simdref-0.0.17/tests/test_int_core_ids.py +90 -0
- simdref-0.0.17/tests/test_int_ingest_registration.py +82 -0
- simdref-0.0.17/tests/test_int_sdm_family_fallback.py +61 -0
- simdref-0.0.17/tests/test_isa_detect_llvm_mc.py +225 -0
- {simdref-0.0.15 → simdref-0.0.17}/tests/test_issue2_fixes.py +1 -1
- simdref-0.0.17/tests/test_issue_51.py +224 -0
- simdref-0.0.17/tests/test_issue_52.py +79 -0
- simdref-0.0.17/tests/test_issue_53_54.py +122 -0
- simdref-0.0.17/tests/test_issue_55.py +40 -0
- simdref-0.0.17/tests/test_issue_56_57a.py +285 -0
- simdref-0.0.17/tests/test_issue_57_cpi.py +181 -0
- simdref-0.0.17/tests/test_issue_60_c1.py +59 -0
- simdref-0.0.17/tests/test_issue_60_contract.py +135 -0
- simdref-0.0.17/tests/test_issue_60_crossarch.py +445 -0
- simdref-0.0.17/tests/test_issue_60_matcher.py +353 -0
- simdref-0.0.17/tests/test_issue_65_arm_alias.py +204 -0
- simdref-0.0.17/tests/test_issue_65_compressed.py +58 -0
- simdref-0.0.17/tests/test_issue_65_identity.py +313 -0
- simdref-0.0.17/tests/test_issue_65_m1.py +302 -0
- simdref-0.0.17/tests/test_issue_65_perfdata.py +396 -0
- simdref-0.0.17/tests/test_issue_65_text.py +275 -0
- simdref-0.0.17/tests/test_issue_65_timing.py +206 -0
- simdref-0.0.17/tests/test_issues_51_57_join.py +226 -0
- {simdref-0.0.15 → simdref-0.0.17}/tests/test_leftover_arm_form_pick.py +177 -29
- {simdref-0.0.15 → simdref-0.0.17}/tests/test_leftover_riscv_shared.py +24 -3
- simdref-0.0.17/tests/test_lsp_ptx.py +311 -0
- {simdref-0.0.15 → simdref-0.0.17}/tests/test_lsp_stdio.py +337 -38
- {simdref-0.0.15 → simdref-0.0.17}/tests/test_no_catalog_row.py +2 -0
- simdref-0.0.17/tests/test_objdump_listings.py +109 -0
- simdref-0.0.17/tests/test_operands.py +41 -0
- {simdref-0.0.15 → simdref-0.0.17}/tests/test_pdfparse.py +53 -24
- {simdref-0.0.15 → simdref-0.0.17}/tests/test_perf.py +23 -31
- simdref-0.0.17/tests/test_perf_source_amd_swopt.py +178 -0
- simdref-0.0.17/tests/test_perf_source_arm_swopt.py +133 -0
- simdref-0.0.17/tests/test_perf_source_instlatx64.py +91 -0
- simdref-0.0.17/tests/test_perf_source_intel_guide.py +108 -0
- simdref-0.0.17/tests/test_perf_source_intel_optref.py +89 -0
- {simdref-0.0.15 → simdref-0.0.17}/tests/test_presentation.py +30 -0
- simdref-0.0.17/tests/test_ptx.py +253 -0
- simdref-0.0.17/tests/test_regtable.py +117 -0
- simdref-0.0.17/tests/test_release_tag_pin.py +24 -0
- {simdref-0.0.15 → simdref-0.0.17}/tests/test_search.py +54 -22
- simdref-0.0.17/tests/test_shared_source_helpers.py +88 -0
- simdref-0.0.17/tests/test_storage_alnum.py +39 -0
- simdref-0.0.17/tests/test_tablecols.py +42 -0
- simdref-0.0.17/tests/test_update_build_stamp.py +64 -0
- {simdref-0.0.15 → simdref-0.0.17}/tests/test_vendor_riscv_sources.py +31 -0
- {simdref-0.0.15 → simdref-0.0.17}/tests/test_version_matches_pyproject.py +1 -4
- simdref-0.0.17/tests/test_x86_key_widths.py +84 -0
- simdref-0.0.15/src/simdref/annotate.py +0 -881
- simdref-0.0.15/src/simdref/arm_instructions.py +0 -594
- simdref-0.0.15/src/simdref/asm_identity.py +0 -928
- simdref-0.0.15/src/simdref/ingest.py +0 -119
- simdref-0.0.15/src/simdref/perf.py +0 -268
- simdref-0.0.15/src/simdref/perf_sources/cores.py +0 -386
- simdref-0.0.15/src/simdref/perf_sources/merge.py +0 -122
- {simdref-0.0.15 → simdref-0.0.17}/LICENSE +0 -0
- {simdref-0.0.15 → simdref-0.0.17}/setup.cfg +0 -0
- {simdref-0.0.15 → simdref-0.0.17}/src/simdref/__init__.py +0 -0
- {simdref-0.0.15 → simdref-0.0.17}/src/simdref/__main__.py +0 -0
- {simdref-0.0.15 → simdref-0.0.17}/src/simdref/models.py +0 -0
- {simdref-0.0.15 → simdref-0.0.17}/src/simdref/pdfparse/base.py +0 -0
- {simdref-0.0.15 → simdref-0.0.17}/src/simdref/pdfparse/registry.py +0 -0
- {simdref-0.0.15 → simdref-0.0.17}/src/simdref/pdfparse/types.py +0 -0
- {simdref-0.0.15 → simdref-0.0.17}/src/simdref/pdfrefs.py +0 -0
- {simdref-0.0.15 → simdref-0.0.17}/src/simdref/perf_sources/__init__.py +0 -0
- {simdref-0.0.15 → simdref-0.0.17}/src/simdref.egg-info/dependency_links.txt +0 -0
- {simdref-0.0.15 → simdref-0.0.17}/src/simdref.egg-info/entry_points.txt +0 -0
- {simdref-0.0.15 → simdref-0.0.17}/src/simdref.egg-info/top_level.txt +0 -0
- {simdref-0.0.15 → simdref-0.0.17}/tests/test_asm_wire.py +0 -0
- {simdref-0.0.15 → simdref-0.0.17}/tests/test_cli_help.py +0 -0
- {simdref-0.0.15 → simdref-0.0.17}/tests/test_cli_llm.py +0 -0
- {simdref-0.0.15 → simdref-0.0.17}/tests/test_filters.py +0 -0
- {simdref-0.0.15 → simdref-0.0.17}/tests/test_intel_operation_and_url.py +0 -0
- {simdref-0.0.15 → simdref-0.0.17}/tests/test_issues_23_24_25.py +0 -0
- {simdref-0.0.15 → simdref-0.0.17}/tests/test_leftover_arm_postindex.py +0 -0
- {simdref-0.0.15 → simdref-0.0.17}/tests/test_leftover_att_movx.py +0 -0
- {simdref-0.0.15 → simdref-0.0.17}/tests/test_leftover_autoupdate.py +0 -0
- {simdref-0.0.15 → simdref-0.0.17}/tests/test_leftover_catalog_gaps.py +0 -0
- {simdref-0.0.15 → simdref-0.0.17}/tests/test_leftover_ingest_isa_merge.py +0 -0
- {simdref-0.0.15 → simdref-0.0.17}/tests/test_leftover_intel_size.py +0 -0
- {simdref-0.0.15 → simdref-0.0.17}/tests/test_leftover_perf_join.py +0 -0
- {simdref-0.0.15 → simdref-0.0.17}/tests/test_lsp_web.py +0 -0
- {simdref-0.0.15 → simdref-0.0.17}/tests/test_models.py +0 -0
- {simdref-0.0.15 → simdref-0.0.17}/tests/test_perf_sources.py +0 -0
- {simdref-0.0.15 → simdref-0.0.17}/tests/test_preset_persistence.py +0 -0
- {simdref-0.0.15 → simdref-0.0.17}/tests/test_riscv_docs_pages.py +0 -0
- {simdref-0.0.15 → simdref-0.0.17}/tests/test_search_pushdown.py +0 -0
- {simdref-0.0.15 → simdref-0.0.17}/tests/test_source_kind_filter.py +0 -0
- {simdref-0.0.15 → simdref-0.0.17}/tests/test_source_validation.py +0 -0
- {simdref-0.0.15 → simdref-0.0.17}/tests/test_storage_payload.py +0 -0
- {simdref-0.0.15 → simdref-0.0.17}/tests/test_storage_schema.py +0 -0
- {simdref-0.0.15 → simdref-0.0.17}/tests/test_tui.py +0 -0
- {simdref-0.0.15 → simdref-0.0.17}/tests/test_ui_labels_parity.py +0 -0
- {simdref-0.0.15 → simdref-0.0.17}/tests/test_vendor_riscv_categories.py +0 -0
- {simdref-0.0.15 → simdref-0.0.17}/tests/test_x86_linking.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: simdref
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.17
|
|
4
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
|
|
@@ -10,27 +10,27 @@ 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
|
|
14
13
|
Classifier: Programming Language :: Python :: 3.11
|
|
15
14
|
Classifier: Programming Language :: Python :: 3.12
|
|
16
15
|
Classifier: Programming Language :: Python :: 3.13
|
|
17
16
|
Classifier: Programming Language :: Python :: 3.14
|
|
18
17
|
Classifier: Topic :: Software Development :: Documentation
|
|
19
18
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
20
|
-
Requires-Python: >=3.
|
|
19
|
+
Requires-Python: >=3.11
|
|
21
20
|
Description-Content-Type: text/markdown
|
|
22
21
|
License-File: LICENSE
|
|
23
|
-
Requires-Dist: click<9,>=8.5
|
|
24
|
-
Requires-Dist: httpx<1,>=0.28
|
|
25
|
-
Requires-Dist: msgpack<2,>=1.2.
|
|
26
|
-
Requires-Dist: pdfplumber<1,>=0.11.10
|
|
27
|
-
Requires-Dist: PyMuPDF<2,>=1.28
|
|
22
|
+
Requires-Dist: click<9,>=8.5.0
|
|
23
|
+
Requires-Dist: httpx<1,>=0.28.1
|
|
24
|
+
Requires-Dist: msgpack<2,>=1.2.4
|
|
28
25
|
Requires-Dist: PyYAML<7,>=6.0.3
|
|
29
|
-
Requires-Dist: rapidfuzz<4,>=3.14
|
|
30
|
-
Requires-Dist: rich<16,>=15
|
|
31
|
-
Requires-Dist: simdref-llvm-mc==23.1.4; (sys_platform == "linux" and (platform_machine == "x86_64" or platform_machine == "aarch64")) or (sys_platform == "darwin" and (platform_machine == "arm64" or platform_machine == "x86_64")) or (sys_platform == "win32" and platform_machine == "AMD64")
|
|
32
|
-
Requires-Dist: textual<9,>=8.2
|
|
33
|
-
Requires-Dist: typer<1,>=0.27
|
|
26
|
+
Requires-Dist: rapidfuzz<4,>=3.14.6
|
|
27
|
+
Requires-Dist: rich<16,>=15.0.0
|
|
28
|
+
Requires-Dist: simdref-llvm-mc==23.1.4.post1; (sys_platform == "linux" and (platform_machine == "x86_64" or platform_machine == "aarch64")) or (sys_platform == "darwin" and (platform_machine == "arm64" or platform_machine == "x86_64")) or (sys_platform == "win32" and platform_machine == "AMD64")
|
|
29
|
+
Requires-Dist: textual<9,>=8.2.8
|
|
30
|
+
Requires-Dist: typer<1,>=0.27.3
|
|
31
|
+
Provides-Extra: ingest
|
|
32
|
+
Requires-Dist: pdfplumber<1,>=0.11.10; extra == "ingest"
|
|
33
|
+
Requires-Dist: PyMuPDF<3,>=2.1; platform_python_implementation == "CPython" and extra == "ingest"
|
|
34
34
|
Dynamic: license-file
|
|
35
35
|
|
|
36
36
|
# simdref
|
|
@@ -68,8 +68,11 @@ isa # open the TUI
|
|
|
68
68
|
```
|
|
69
69
|
|
|
70
70
|
The package installs two equivalent executables, `isa` and `simdref`. The
|
|
71
|
-
catalog download does not use `llvm-mca`.
|
|
72
|
-
`
|
|
71
|
+
catalog download does not use `llvm-mca`. Python 3.11 or newer is
|
|
72
|
+
necessary. The plain `pip install simdref` covers queries, the LSP and
|
|
73
|
+
`isa update`. `isa build` uses the ingest extra:
|
|
74
|
+
`pip install 'simdref[ingest]'`, or `uv tool install 'simdref[ingest]'`
|
|
75
|
+
with uv. Only `isa build` uses `llvm-mca` 18+ on `PATH`.
|
|
73
76
|
|
|
74
77
|
Pre-release builds live on TestPyPI:
|
|
75
78
|
|
|
@@ -86,7 +89,6 @@ isa VPADDD # exact instruction -> detailed view
|
|
|
86
89
|
isa _mm_add # fuzzy -> ranked search results
|
|
87
90
|
isa mm add # tokenized query -> intrinsic-biased search
|
|
88
91
|
isa ADD # mnemonic-like -> instruction-biased search
|
|
89
|
-
isa VADDPS 2 # pick variant #2 from the last result list
|
|
90
92
|
isa # open the TUI
|
|
91
93
|
```
|
|
92
94
|
|
|
@@ -115,13 +117,13 @@ Editor clients, one for each editor:
|
|
|
115
117
|
Each client shows a one-line brief at the end of each instruction line and
|
|
116
118
|
the full manpage on hover, from the local catalog.
|
|
117
119
|
|
|
118
|
-
The LLM interface writes JSON and NDJSON with exit codes 0 (match), 1 (
|
|
119
|
-
|
|
120
|
+
The LLM interface writes JSON and NDJSON with exit codes 0 (match), 1 (usage
|
|
121
|
+
error), 2 (no match or parser error), 3 (ambiguous):
|
|
120
122
|
|
|
121
123
|
```bash
|
|
122
|
-
isa llm query
|
|
124
|
+
isa llm query vaddps --source-kind measured
|
|
123
125
|
echo -e "_mm_add_ps\nVPADDD" | isa llm batch
|
|
124
|
-
isa llm list --pattern "*gather*"
|
|
126
|
+
isa llm list --pattern "*gather*"
|
|
125
127
|
```
|
|
126
128
|
|
|
127
129
|
See [docs/LLM.md](docs/LLM.md) for the payload shape.
|
|
@@ -142,44 +144,54 @@ each instruction line. The output stays valid assembly.
|
|
|
142
144
|
|
|
143
145
|
Commands
|
|
144
146
|
|
|
145
|
-
| Command | Description
|
|
146
|
-
| ----------------------- |
|
|
147
|
-
| `isa` | Open the TUI
|
|
148
|
-
| `isa <query>` |
|
|
149
|
-
| `isa doctor` | Check the install, non-zero exit on failure
|
|
150
|
-
| `isa update` | Download the pre-built catalog, `--from-release` for the GitHub Release
|
|
151
|
-
| `isa annotate <file.s>` | Annotate a `.s` file with summaries and latency/CPI, writes `<file>.sa`
|
|
152
|
-
| `isa man <name>` | Show a manpage, made on demand
|
|
153
|
-
| `isa install-manpages` | Pre-generate man7 pages so plain `man vpaddd` works
|
|
154
|
-
| `isa llm query <q>` | Strict lookup to JSON, NDJSON, or Markdown
|
|
155
|
-
| `isa llm batch` | Resolve many queries from stdin in one invocation
|
|
156
|
-
| `isa llm list` | Write the FilterSpec or stream matching catalog entries
|
|
157
|
-
| `isa llm schema` | Print the JSON schema for `llm` payloads
|
|
147
|
+
| Command | Description |
|
|
148
|
+
| ----------------------- | ----------------------------------------------------------------------- |
|
|
149
|
+
| `isa` | Open the TUI |
|
|
150
|
+
| `isa <query>` | Fuzzy queries open the TUI in a TTY, else print results to stdout |
|
|
151
|
+
| `isa doctor` | Check the install, non-zero exit on failure |
|
|
152
|
+
| `isa update` | Download the pre-built catalog, `--from-release` for the GitHub Release |
|
|
153
|
+
| `isa annotate <file.s>` | Annotate a `.s` file with summaries and latency/CPI, writes `<file>.sa` |
|
|
154
|
+
| `isa man <name>` | Show a manpage, made on demand |
|
|
155
|
+
| `isa install-manpages` | Pre-generate man7 pages so plain `man vpaddd` works |
|
|
156
|
+
| `isa llm query <q>` | Strict lookup to JSON, NDJSON, or Markdown |
|
|
157
|
+
| `isa llm batch` | Resolve many queries from stdin in one invocation |
|
|
158
|
+
| `isa llm list` | Write the FilterSpec or stream matching catalog entries |
|
|
159
|
+
| `isa llm schema` | Print the JSON schema for `llm` payloads |
|
|
158
160
|
|
|
159
161
|
Dev commands
|
|
160
162
|
|
|
161
|
-
| Command | Description
|
|
162
|
-
| -------------------------------- |
|
|
163
|
-
| `isa build` | Rebuild the catalog from upstream, needs `llvm-mca` 18+ |
|
|
164
|
-
| `isa export` | Export the site-data JSON for the `simdref-web` repo
|
|
165
|
-
| `isa completion install [SHELL]` | Install shell completion into the user profile
|
|
166
|
-
| `isa completion show [SHELL]` | Print the completion script
|
|
163
|
+
| Command | Description |
|
|
164
|
+
| -------------------------------- | ----------------------------------------------------------------------------- |
|
|
165
|
+
| `isa build` | Rebuild the catalog from upstream, needs `simdref[ingest]` and `llvm-mca` 18+ |
|
|
166
|
+
| `isa export` | Export the site-data JSON for the `simdref-web` repo |
|
|
167
|
+
| `isa completion install [SHELL]` | Install shell completion into the user profile |
|
|
168
|
+
| `isa completion show [SHELL]` | Print the completion script |
|
|
167
169
|
|
|
168
170
|
## Data sources
|
|
169
171
|
|
|
170
|
-
| Source | What | Entries¹
|
|
171
|
-
| ----------------------- | ------------------------------------------------------- |
|
|
172
|
-
| Intel Intrinsics Guide | Signatures, descriptions, ISA, categories | 7,
|
|
173
|
-
| uops.info | Instructions, operands, latency, throughput, ports |
|
|
174
|
-
| Arm ACLE (NEON, SVE) | Intrinsic signatures and descriptions |
|
|
175
|
-
| Arm AARCHMRS (A64) | Base instruction forms and operand tables | live-only²
|
|
176
|
-
| riscv-rvv-intrinsic-doc | RVV intrinsics with deterministic instruction refs |
|
|
177
|
-
| RISC-V unified-db | RVV instruction forms, ISA tags, description, operation |
|
|
172
|
+
| Source | What | Entries¹ |
|
|
173
|
+
| ----------------------- | ------------------------------------------------------- | ------------------- |
|
|
174
|
+
| Intel Intrinsics Guide | Signatures, descriptions, ISA, categories | 7,757 intrinsics |
|
|
175
|
+
| uops.info | Instructions, operands, latency, throughput, ports | 22,113 instructions |
|
|
176
|
+
| Arm ACLE (NEON, SVE) | Intrinsic signatures and descriptions | 13,493 intrinsics |
|
|
177
|
+
| Arm AARCHMRS (A64) | Base instruction forms and operand tables | live-only² |
|
|
178
|
+
| riscv-rvv-intrinsic-doc | RVV intrinsics with deterministic instruction refs | 77,285 intrinsics |
|
|
179
|
+
| RISC-V unified-db | RVV instruction forms, ISA tags, description, operation | 3,666 instructions |
|
|
180
|
+
| NVIDIA PTX ISA | Instruction ops, syntax, qualifiers, versions, sm_XX | 1,088 instructions |
|
|
181
|
+
| Intel Guide perf tables | Per-core latency and throughput | 9,134 rows |
|
|
182
|
+
| Intel Optimization Ref. | Latency and throughput tables (volume 2) | 3,155 rows |
|
|
183
|
+
| InstLatX64 | Measured latency and throughput dumps | 16,235 rows |
|
|
184
|
+
| AMD Software Opt. Guide | Latency workbooks, Zen 1 to Zen 5 | 8,386 rows |
|
|
185
|
+
| Arm Neoverse SWOPT | Instruction tables for 8 CPUs | 10,213 rows |
|
|
178
186
|
|
|
179
187
|
¹ Counts from the vendored snapshot. See
|
|
180
188
|
[`docs/coverage/summary.json`](docs/coverage/summary.json) for parity
|
|
181
189
|
against upstream and [`docs/SOURCES.md`](docs/SOURCES.md) for licenses.
|
|
182
190
|
|
|
191
|
+
### Removal requests
|
|
192
|
+
|
|
193
|
+
Some sources in [`docs/SOURCES.md`](docs/SOURCES.md) do not state a licence. If you own one of these sources and want simdref to stop using it, open an issue at <https://github.com/simd-labs/simdref/issues>. The maintainers then remove the data and the links from the next release.
|
|
194
|
+
|
|
183
195
|
² The full AARCHMRS A64 spec needs a live fetch or a tarball under
|
|
184
196
|
`vendor/arm/`.
|
|
185
197
|
|
|
@@ -187,7 +199,10 @@ Each perf row carries a `(measured, <core>)` or `(modeled, <core>)` tag.
|
|
|
187
199
|
|
|
188
200
|
### Scope
|
|
189
201
|
|
|
190
|
-
- Performance data
|
|
202
|
+
- Performance data covers x86, AArch64 and RISC-V. Measured rows come from
|
|
203
|
+
uops.info, InstLatX64 and the Intel Optimization Ref. Modeled rows come
|
|
204
|
+
from the Intel Intrinsics Guide, AMD and Arm vendor guides, and the LLVM
|
|
205
|
+
scheduling models.
|
|
191
206
|
- RISC-V coverage is RVV only, not scalar or privileged ISA.
|
|
192
207
|
|
|
193
208
|
## Development
|
|
@@ -196,7 +211,7 @@ Each perf row carries a `(measured, <core>)` or `(modeled, <core>)` tag.
|
|
|
196
211
|
git clone https://github.com/simd-labs/simdref.git
|
|
197
212
|
cd simdref
|
|
198
213
|
python3 -m venv .venv
|
|
199
|
-
.venv/bin/pip install -e .
|
|
214
|
+
.venv/bin/pip install -e '.[ingest]'
|
|
200
215
|
.venv/bin/isa build # needs llvm-mca 18+
|
|
201
216
|
.venv/bin/python -m pytest tests/ -v
|
|
202
217
|
```
|
|
@@ -33,8 +33,11 @@ isa # open the TUI
|
|
|
33
33
|
```
|
|
34
34
|
|
|
35
35
|
The package installs two equivalent executables, `isa` and `simdref`. The
|
|
36
|
-
catalog download does not use `llvm-mca`.
|
|
37
|
-
`
|
|
36
|
+
catalog download does not use `llvm-mca`. Python 3.11 or newer is
|
|
37
|
+
necessary. The plain `pip install simdref` covers queries, the LSP and
|
|
38
|
+
`isa update`. `isa build` uses the ingest extra:
|
|
39
|
+
`pip install 'simdref[ingest]'`, or `uv tool install 'simdref[ingest]'`
|
|
40
|
+
with uv. Only `isa build` uses `llvm-mca` 18+ on `PATH`.
|
|
38
41
|
|
|
39
42
|
Pre-release builds live on TestPyPI:
|
|
40
43
|
|
|
@@ -51,7 +54,6 @@ isa VPADDD # exact instruction -> detailed view
|
|
|
51
54
|
isa _mm_add # fuzzy -> ranked search results
|
|
52
55
|
isa mm add # tokenized query -> intrinsic-biased search
|
|
53
56
|
isa ADD # mnemonic-like -> instruction-biased search
|
|
54
|
-
isa VADDPS 2 # pick variant #2 from the last result list
|
|
55
57
|
isa # open the TUI
|
|
56
58
|
```
|
|
57
59
|
|
|
@@ -80,13 +82,13 @@ Editor clients, one for each editor:
|
|
|
80
82
|
Each client shows a one-line brief at the end of each instruction line and
|
|
81
83
|
the full manpage on hover, from the local catalog.
|
|
82
84
|
|
|
83
|
-
The LLM interface writes JSON and NDJSON with exit codes 0 (match), 1 (
|
|
84
|
-
|
|
85
|
+
The LLM interface writes JSON and NDJSON with exit codes 0 (match), 1 (usage
|
|
86
|
+
error), 2 (no match or parser error), 3 (ambiguous):
|
|
85
87
|
|
|
86
88
|
```bash
|
|
87
|
-
isa llm query
|
|
89
|
+
isa llm query vaddps --source-kind measured
|
|
88
90
|
echo -e "_mm_add_ps\nVPADDD" | isa llm batch
|
|
89
|
-
isa llm list --pattern "*gather*"
|
|
91
|
+
isa llm list --pattern "*gather*"
|
|
90
92
|
```
|
|
91
93
|
|
|
92
94
|
See [docs/LLM.md](docs/LLM.md) for the payload shape.
|
|
@@ -107,44 +109,54 @@ each instruction line. The output stays valid assembly.
|
|
|
107
109
|
|
|
108
110
|
Commands
|
|
109
111
|
|
|
110
|
-
| Command | Description
|
|
111
|
-
| ----------------------- |
|
|
112
|
-
| `isa` | Open the TUI
|
|
113
|
-
| `isa <query>` |
|
|
114
|
-
| `isa doctor` | Check the install, non-zero exit on failure
|
|
115
|
-
| `isa update` | Download the pre-built catalog, `--from-release` for the GitHub Release
|
|
116
|
-
| `isa annotate <file.s>` | Annotate a `.s` file with summaries and latency/CPI, writes `<file>.sa`
|
|
117
|
-
| `isa man <name>` | Show a manpage, made on demand
|
|
118
|
-
| `isa install-manpages` | Pre-generate man7 pages so plain `man vpaddd` works
|
|
119
|
-
| `isa llm query <q>` | Strict lookup to JSON, NDJSON, or Markdown
|
|
120
|
-
| `isa llm batch` | Resolve many queries from stdin in one invocation
|
|
121
|
-
| `isa llm list` | Write the FilterSpec or stream matching catalog entries
|
|
122
|
-
| `isa llm schema` | Print the JSON schema for `llm` payloads
|
|
112
|
+
| Command | Description |
|
|
113
|
+
| ----------------------- | ----------------------------------------------------------------------- |
|
|
114
|
+
| `isa` | Open the TUI |
|
|
115
|
+
| `isa <query>` | Fuzzy queries open the TUI in a TTY, else print results to stdout |
|
|
116
|
+
| `isa doctor` | Check the install, non-zero exit on failure |
|
|
117
|
+
| `isa update` | Download the pre-built catalog, `--from-release` for the GitHub Release |
|
|
118
|
+
| `isa annotate <file.s>` | Annotate a `.s` file with summaries and latency/CPI, writes `<file>.sa` |
|
|
119
|
+
| `isa man <name>` | Show a manpage, made on demand |
|
|
120
|
+
| `isa install-manpages` | Pre-generate man7 pages so plain `man vpaddd` works |
|
|
121
|
+
| `isa llm query <q>` | Strict lookup to JSON, NDJSON, or Markdown |
|
|
122
|
+
| `isa llm batch` | Resolve many queries from stdin in one invocation |
|
|
123
|
+
| `isa llm list` | Write the FilterSpec or stream matching catalog entries |
|
|
124
|
+
| `isa llm schema` | Print the JSON schema for `llm` payloads |
|
|
123
125
|
|
|
124
126
|
Dev commands
|
|
125
127
|
|
|
126
|
-
| Command | Description
|
|
127
|
-
| -------------------------------- |
|
|
128
|
-
| `isa build` | Rebuild the catalog from upstream, needs `llvm-mca` 18+ |
|
|
129
|
-
| `isa export` | Export the site-data JSON for the `simdref-web` repo
|
|
130
|
-
| `isa completion install [SHELL]` | Install shell completion into the user profile
|
|
131
|
-
| `isa completion show [SHELL]` | Print the completion script
|
|
128
|
+
| Command | Description |
|
|
129
|
+
| -------------------------------- | ----------------------------------------------------------------------------- |
|
|
130
|
+
| `isa build` | Rebuild the catalog from upstream, needs `simdref[ingest]` and `llvm-mca` 18+ |
|
|
131
|
+
| `isa export` | Export the site-data JSON for the `simdref-web` repo |
|
|
132
|
+
| `isa completion install [SHELL]` | Install shell completion into the user profile |
|
|
133
|
+
| `isa completion show [SHELL]` | Print the completion script |
|
|
132
134
|
|
|
133
135
|
## Data sources
|
|
134
136
|
|
|
135
|
-
| Source | What | Entries¹
|
|
136
|
-
| ----------------------- | ------------------------------------------------------- |
|
|
137
|
-
| Intel Intrinsics Guide | Signatures, descriptions, ISA, categories | 7,
|
|
138
|
-
| uops.info | Instructions, operands, latency, throughput, ports |
|
|
139
|
-
| Arm ACLE (NEON, SVE) | Intrinsic signatures and descriptions |
|
|
140
|
-
| Arm AARCHMRS (A64) | Base instruction forms and operand tables | live-only²
|
|
141
|
-
| riscv-rvv-intrinsic-doc | RVV intrinsics with deterministic instruction refs |
|
|
142
|
-
| RISC-V unified-db | RVV instruction forms, ISA tags, description, operation |
|
|
137
|
+
| Source | What | Entries¹ |
|
|
138
|
+
| ----------------------- | ------------------------------------------------------- | ------------------- |
|
|
139
|
+
| Intel Intrinsics Guide | Signatures, descriptions, ISA, categories | 7,757 intrinsics |
|
|
140
|
+
| uops.info | Instructions, operands, latency, throughput, ports | 22,113 instructions |
|
|
141
|
+
| Arm ACLE (NEON, SVE) | Intrinsic signatures and descriptions | 13,493 intrinsics |
|
|
142
|
+
| Arm AARCHMRS (A64) | Base instruction forms and operand tables | live-only² |
|
|
143
|
+
| riscv-rvv-intrinsic-doc | RVV intrinsics with deterministic instruction refs | 77,285 intrinsics |
|
|
144
|
+
| RISC-V unified-db | RVV instruction forms, ISA tags, description, operation | 3,666 instructions |
|
|
145
|
+
| NVIDIA PTX ISA | Instruction ops, syntax, qualifiers, versions, sm_XX | 1,088 instructions |
|
|
146
|
+
| Intel Guide perf tables | Per-core latency and throughput | 9,134 rows |
|
|
147
|
+
| Intel Optimization Ref. | Latency and throughput tables (volume 2) | 3,155 rows |
|
|
148
|
+
| InstLatX64 | Measured latency and throughput dumps | 16,235 rows |
|
|
149
|
+
| AMD Software Opt. Guide | Latency workbooks, Zen 1 to Zen 5 | 8,386 rows |
|
|
150
|
+
| Arm Neoverse SWOPT | Instruction tables for 8 CPUs | 10,213 rows |
|
|
143
151
|
|
|
144
152
|
¹ Counts from the vendored snapshot. See
|
|
145
153
|
[`docs/coverage/summary.json`](docs/coverage/summary.json) for parity
|
|
146
154
|
against upstream and [`docs/SOURCES.md`](docs/SOURCES.md) for licenses.
|
|
147
155
|
|
|
156
|
+
### Removal requests
|
|
157
|
+
|
|
158
|
+
Some sources in [`docs/SOURCES.md`](docs/SOURCES.md) do not state a licence. If you own one of these sources and want simdref to stop using it, open an issue at <https://github.com/simd-labs/simdref/issues>. The maintainers then remove the data and the links from the next release.
|
|
159
|
+
|
|
148
160
|
² The full AARCHMRS A64 spec needs a live fetch or a tarball under
|
|
149
161
|
`vendor/arm/`.
|
|
150
162
|
|
|
@@ -152,7 +164,10 @@ Each perf row carries a `(measured, <core>)` or `(modeled, <core>)` tag.
|
|
|
152
164
|
|
|
153
165
|
### Scope
|
|
154
166
|
|
|
155
|
-
- Performance data
|
|
167
|
+
- Performance data covers x86, AArch64 and RISC-V. Measured rows come from
|
|
168
|
+
uops.info, InstLatX64 and the Intel Optimization Ref. Modeled rows come
|
|
169
|
+
from the Intel Intrinsics Guide, AMD and Arm vendor guides, and the LLVM
|
|
170
|
+
scheduling models.
|
|
156
171
|
- RISC-V coverage is RVV only, not scalar or privileged ISA.
|
|
157
172
|
|
|
158
173
|
## Development
|
|
@@ -161,7 +176,7 @@ Each perf row carries a `(measured, <core>)` or `(modeled, <core>)` tag.
|
|
|
161
176
|
git clone https://github.com/simd-labs/simdref.git
|
|
162
177
|
cd simdref
|
|
163
178
|
python3 -m venv .venv
|
|
164
|
-
.venv/bin/pip install -e .
|
|
179
|
+
.venv/bin/pip install -e '.[ingest]'
|
|
165
180
|
.venv/bin/isa build # needs llvm-mca 18+
|
|
166
181
|
.venv/bin/python -m pytest tests/ -v
|
|
167
182
|
```
|
|
@@ -4,10 +4,10 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "simdref"
|
|
7
|
-
version = "0.0.
|
|
7
|
+
version = "0.0.17"
|
|
8
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.11"
|
|
11
11
|
license = {text = "GPL-3.0-or-later"}
|
|
12
12
|
authors = [
|
|
13
13
|
{name = "Marco"}
|
|
@@ -19,7 +19,6 @@ 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",
|
|
23
22
|
"Programming Language :: Python :: 3.11",
|
|
24
23
|
"Programming Language :: Python :: 3.12",
|
|
25
24
|
"Programming Language :: Python :: 3.13",
|
|
@@ -27,27 +26,36 @@ classifiers = [
|
|
|
27
26
|
"Topic :: Software Development :: Documentation",
|
|
28
27
|
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
29
28
|
]
|
|
30
|
-
# `requires-python` tracks the non-EOL CPython range
|
|
31
|
-
#
|
|
32
|
-
#
|
|
33
|
-
#
|
|
34
|
-
#
|
|
29
|
+
# `requires-python` tracks the non-EOL CPython range. Lower dependency
|
|
30
|
+
# bound is the version CI resolves and tests; anything older is an untested
|
|
31
|
+
# compatibility claim. Upper bound is the next major (next minor for 0.x,
|
|
32
|
+
# where that is the compatibility unit). msgpack floors at 1.2.4 for
|
|
33
|
+
# GHSA-j8c6-9vc5-hj6x; 1.2.0 and earlier also carry GHSA-6v7p-g79w-8964.
|
|
35
34
|
dependencies = [
|
|
36
|
-
"click>=8.5,<9",
|
|
37
|
-
"httpx>=0.28,<1",
|
|
38
|
-
"msgpack>=1.2.
|
|
39
|
-
"pdfplumber>=0.11.10,<1",
|
|
40
|
-
"PyMuPDF>=1.28,<2",
|
|
35
|
+
"click>=8.5.0,<9",
|
|
36
|
+
"httpx>=0.28.1,<1",
|
|
37
|
+
"msgpack>=1.2.4,<2",
|
|
41
38
|
"PyYAML>=6.0.3,<7",
|
|
42
|
-
"rapidfuzz>=3.14,<4",
|
|
43
|
-
"rich>=15,<16",
|
|
39
|
+
"rapidfuzz>=3.14.6,<4",
|
|
40
|
+
"rich>=15.0.0,<16",
|
|
44
41
|
# Pinned to the LLVM the catalog build used. Wheels exist only for
|
|
45
42
|
# manylinux x86_64 aarch64, macOS arm64 x86_64 and win_amd64, so the
|
|
46
43
|
# marker keeps the dependency off every other platform (musl included),
|
|
47
44
|
# where pip must see no candidate instead of failing to resolve.
|
|
48
|
-
'simdref-llvm-mc==23.1.4; (sys_platform == "linux" and (platform_machine == "x86_64" or platform_machine == "aarch64")) or (sys_platform == "darwin" and (platform_machine == "arm64" or platform_machine == "x86_64")) or (sys_platform == "win32" and platform_machine == "AMD64")',
|
|
49
|
-
"textual>=8.2,<9",
|
|
50
|
-
"typer>=0.27,<1",
|
|
45
|
+
'simdref-llvm-mc==23.1.4.post1; (sys_platform == "linux" and (platform_machine == "x86_64" or platform_machine == "aarch64")) or (sys_platform == "darwin" and (platform_machine == "arm64" or platform_machine == "x86_64")) or (sys_platform == "win32" and platform_machine == "AMD64")',
|
|
46
|
+
"textual>=8.2.8,<9",
|
|
47
|
+
"typer>=0.27.3,<1",
|
|
48
|
+
]
|
|
49
|
+
|
|
50
|
+
[project.optional-dependencies]
|
|
51
|
+
# PDF ingest for `simdref build` only. pdfplumber parses the Intel SDM;
|
|
52
|
+
# PyMuPDF is its fast path. Both stay out of the plain install, which then
|
|
53
|
+
# works on PyPy and needs no C toolchain.
|
|
54
|
+
ingest = [
|
|
55
|
+
"pdfplumber>=0.11.10,<1",
|
|
56
|
+
# PyMuPDF (guarded import, pdfplumber falls back) pulls onnxruntime,
|
|
57
|
+
# which ships no PyPy wheels: CPython only (issue #61).
|
|
58
|
+
"PyMuPDF>=2.1,<3; platform_python_implementation == 'CPython'",
|
|
51
59
|
]
|
|
52
60
|
|
|
53
61
|
[project.scripts]
|
|
@@ -63,4 +71,4 @@ where = ["src"]
|
|
|
63
71
|
|
|
64
72
|
[tool.ruff]
|
|
65
73
|
line-length = 100
|
|
66
|
-
target-version = "
|
|
74
|
+
target-version = "py311"
|