Skip to content
/ opa64 Public

Armv8 A64 Assembly & Intrinsics Guide Server

Notifications You must be signed in to change notification settings

ocxtal/opa64

Repository files navigation

Armv8 A64 Assembly & Intrinsics Guide Server

developer.arm.comに混じりてopを取りつつよろづのことに使ひけり —

screenshot comes here

Update 2021/10/25

Arm seems to no longer publish a pdf version of the Intrinsics Guide on which this tool depends. Now that their web version has been updated with the latest instruction set, please refer to it.

Running in Docker

The following commands set up server at http://localhost:8080/. <path/to/db> can be any directory outside the container where you want to save pdfs and database. Inside the container, the server script supposes the database is located at /data, so the path mapping would be like -v $(pwd)/data:/data, for example. On first launch, or more precisely if the database not found in /data, the script attempts to build it before starting the server. It would take a bit long, ~16min on Neoverse-N1 @2.3GHz and ~20min on Broadwell-U @2.2GHz.

$ docker build -t opa64server .
$ docker run -it -v <path/to/db>:/data -p 8080:8080 opa64server

(You might see SSL warnings on fetching the documents.)

Running without Container

Prerequisites

  • Python3 for fetching, parsing, and building database
    • Camelot for parsing pdfs, available via pip3 install camelot-py
      • OpenCV and Ghostscript are internal dependencies of Camelot, available via apt install python3-opencv ghostscript for both Arm64 and x86_64 on Ubuntu. If you are on x86_64, you'll have some more alternative choices for OpenCV, such as pip3 install opencv-python.
    • Requests for fetching documents, available via pip3 install requests.
  • You might need to install libgs as the backend of the python ghostscript library. Available via brew install ghostscript on macOS or apt install libgs-dev on Ubuntu.

Run

make db builds the database in data directory and make run starts server at http://localhost:8080/.

$ make db
python3 opa64.py fetch --doc=all --dir=data
python3 opa64.py parse --doc=all --dir=data > data/db.raw.json
python3 opa64.py split --db data/db.raw.json > data/db.json
$ make start
python3 -m http.server 8080

List of Document Resources

The script downloads the following documents. Currently the links are maintained manually so they might be behind the latest. Fixing them by issue or pull request is always welcome.

Notes

This is an unofficial project providing an alternative tool to the official NEON intrinsics guide. The main difference to the official one is it collects and gives non-NEON instructions, latency & throughput tables, and links to the original (detailed) html and pdf documents. Please make sure this is an unofficial one and not intended to be used as primary information, and the parsing result is not guaranteed to be correct.

Copyright and License

Large portion of the styles and codes in opv86.css and index.html, and some lines in opv86.js and Makefile were derived from hikalium/opv86. All the others in this repository except for jquery.min.js were written by Hajime Suzuki (@ocxtal). Everything in this repository is licensed under MIT (as in opv86). Note that any document or content under developer.arm.com, including static.docs.arm.com, is not allowed for redistribution according to the license terms of the website.

About

Armv8 A64 Assembly & Intrinsics Guide Server

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published