{"id":30202809,"url":"https://github.com/vimkim/simdscan","last_synced_at":"2026-03-09T08:31:23.535Z","repository":{"id":298271236,"uuid":"999439597","full_name":"vimkim/simdscan","owner":"vimkim","description":"Fast Rust CLI tool to analyze x86-64 binaries and classify SIMD instructions by ISA extension (SSE, AVX, AVX-512).","archived":false,"fork":false,"pushed_at":"2025-06-10T12:52:02.000Z","size":20,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-11-09T23:11:21.152Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vimkim.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-10T08:52:32.000Z","updated_at":"2025-06-10T12:50:35.000Z","dependencies_parsed_at":null,"dependency_job_id":"d171a5f5-ef90-43d4-9374-85a1e729ab37","html_url":"https://github.com/vimkim/simdscan","commit_stats":null,"previous_names":["vimkim/simdscan"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/vimkim/simdscan","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vimkim%2Fsimdscan","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vimkim%2Fsimdscan/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vimkim%2Fsimdscan/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vimkim%2Fsimdscan/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vimkim","download_url":"https://codeload.github.com/vimkim/simdscan/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vimkim%2Fsimdscan/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30287811,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-09T02:57:19.223Z","status":"ssl_error","status_checked_at":"2026-03-09T02:56:26.373Z","response_time":61,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-08-13T11:02:37.576Z","updated_at":"2026-03-09T08:31:23.526Z","avatar_url":"https://github.com/vimkim.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# simdscan\n\n[![Crates.io](https://img.shields.io/crates/v/simdscan.svg)](https://crates.io/crates/simdscan)\n[![License: Apache-2.0](https://img.shields.io/badge/Apache--2.0-blue.svg)](https://github.com/vimkim/simdscan#license)\n[![Rust](https://img.shields.io/badge/rust-1.70%2B-orange.svg)](https://www.rust-lang.org/)\n\nA blazingly fast Rust CLI tool that analyzes x86-64 binaries to detect and classify SIMD instructions by their ISA extension. Perfect for performance analysis, compiler optimization verification, and understanding what SIMD features your binaries actually use.\n\n## 🚀 Quick Start\n\n```bash\n# Install from crates.io\ncargo install simdscan\n\n# Analyze a binary\nsimdscan ./my_program\n\n# Get detailed breakdown in YAML\nsimdscan -f yaml --show-insts ./my_program\n```\n\n## ✨ Features\n\n- **Fast Analysis** - Written in Rust for maximum performance\n- **Comprehensive Detection** - Supports SSE, SSE2, SSE3, SSSE3, SSE4, AVX, AVX2, and AVX-512\n- **Multiple Formats** - Output in JSON or YAML\n- **Detailed Breakdowns** - See which specific instructions are used most\n- **Cross-Platform** - Works on Linux, macOS, and Windows\n- **Easy Installation** - Single command install via cargo\n\n## 📋 Requirements\n\n- `objdump` (from GNU binutils) must be available in your PATH\n- Rust 1.70+ (for building from source)\n\n## 🛠️ Installation\n\n### From crates.io (Recommended)\n\n```bash\ncargo install simdscan\n```\n\n### From Source\n\n```bash\ngit clone https://github.com/yourusername/simdscan\ncd simdscan\ncargo install --path .\n```\n\n### Binary Releases\n\nDownload pre-built binaries from the [releases page](https://github.com/vimkim/simdscan/releases).\n\n## 📖 Usage\n\n### Basic Usage\n\n```bash\n# Analyze any x86-64 binary (ELF, Mach-O, PE)\nsimdscan path/to/binary\n```\n\n### Advanced Options\n\n```bash\n# YAML output with instruction details\nsimdscan -f yaml --show-insts my_program\n\n# JSON output (default)\nsimdscan -f json my_program\n\n# Help\nsimdscan --help\n```\n\n### Command Line Options\n\n| Option                  | Description                                    |\n| ----------------------- | ---------------------------------------------- |\n| `binary`                | Path to the binary file to analyze             |\n| `-f, --format \u003cFORMAT\u003e` | Output format: `json` (default) or `yaml`      |\n| `--show-insts`          | Include detailed per-ISA instruction breakdown |\n\n## 🎯 Supported ISA Extensions\n\n- **SSE** - Streaming SIMD Extensions (Pentium III)\n- **SSE2** - Streaming SIMD Extensions 2 (Pentium 4)\n- **SSE3** - Streaming SIMD Extensions 3 (Pentium 4)\n- **SSSE3** - Supplemental Streaming SIMD Extensions 3 (Core 2)\n- **SSE4** - SSE4.1, SSE4.2, plus POPCNT, LZCNT, CRC32 (Core i7)\n- **AVX** - Advanced Vector Extensions, including AVX2 (Sandy Bridge+)\n- **AVX-512** - 512-bit Advanced Vector Extensions (Skylake-X+)\n\n## 📊 Example Output\n\n### Basic Analysis\n\n```json\n{\n  \"binary\": \"./my_program\",\n  \"has_simd\": true,\n  \"isa_summary\": {\n    \"AVX\": 156,\n    \"SSE2\": 43,\n    \"SSE4\": 12\n  },\n  \"total_simd_insts\": 211\n}\n```\n\n### Detailed Analysis (with `--show-insts`)\n\n```json\n{\n  \"binary\": \"./my_program\",\n  \"has_simd\": true,\n  \"isa_summary\": {\n    \"AVX\": 156,\n    \"SSE2\": 43,\n    \"SSE4\": 12\n  },\n  \"total_simd_insts\": 211,\n  \"isa_details\": {\n    \"AVX\": {\n      \"unique_mnemonics\": 8,\n      \"occurrences\": {\n        \"vmovaps\": 45,\n        \"vaddps\": 32,\n        \"vmulps\": 28,\n        \"vsubps\": 21,\n        \"vxorps\": 15,\n        \"vdivps\": 10,\n        \"vmovups\": 3,\n        \"vzeroupper\": 2\n      }\n    },\n    \"SSE2\": {\n      \"unique_mnemonics\": 5,\n      \"occurrences\": {\n        \"movdqa\": 18,\n        \"movdqu\": 12,\n        \"paddq\": 8,\n        \"pshufd\": 3,\n        \"pxor\": 2\n      }\n    }\n  }\n}\n```\n\n## 🔬 How It Works\n\n1. **Disassembly** - Uses `objdump -d` to disassemble the target binary\n2. **Parsing** - Efficiently parses assembly output using compiled regex patterns\n3. **Classification** - Matches instruction mnemonics against comprehensive ISA tables\n4. **Reporting** - Aggregates statistics and generates structured output\n\n## 🎯 Use Cases\n\n- **Performance Analysis** - Verify your compiler is generating the SIMD code you expect\n- **Binary Auditing** - Understand what instruction sets a binary requires\n- **Optimization Verification** - Confirm auto-vectorization is working\n- **Compatibility Checking** - Ensure binaries will run on target hardware\n- **Research** - Analyze SIMD usage patterns across different codebases\n\n## 🚀 Performance\n\nSimdscan is designed for speed:\n\n- **Rust Performance** - Zero-overhead abstractions and memory safety\n- **Efficient Parsing** - Pre-compiled regex patterns and optimized string processing\n- **Minimal Dependencies** - Fast startup and low memory usage\n- **Streaming Processing** - Handles large binaries efficiently\n\n## 🤝 Contributing\n\nContributions are welcome! Here's how you can help:\n\n1. **Report Issues** - Found a bug or have a feature request? [Open an issue](https://github.com/yourusername/simdscan/issues)\n2. **Submit PRs** - Fix bugs, add features, or improve documentation\n3. **Add ISA Support** - Help expand coverage of instruction sets\n4. **Performance** - Optimize parsing or add new output formats\n\n### Development Setup\n\n```bash\ngit clone https://github.com/vimkim/simdscan\ncd simdscan\ncargo build\n```\n\n## 📈 Roadmap\n\n- [ ] ARM NEON instruction support\n- [ ] Intel CET (Control-flow Enforcement Technology) detection\n- [ ] Function-level SIMD analysis\n- [ ] Integration with popular build systems\n- [ ] Web assembly support\n- [ ] Instruction frequency heatmaps\n\n## 📄 License\n\nLicensed under either of:\n\n- Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or \u003chttp://www.apache.org/licenses/LICENSE-2.0\u003e)\n\n## 🙏 Acknowledgments\n\n- Inspired by the original Python version\n- Built with the amazing Rust ecosystem\n- Thanks to the objdump maintainers for the reliable disassembly foundation\n\n---\n\n**Made with ❤️ and ⚡ by the Rust community**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvimkim%2Fsimdscan","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvimkim%2Fsimdscan","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvimkim%2Fsimdscan/lists"}