z3 proofs that one loop step of Erigon's SIMD JUMPDEST analysis kernels (execution/vm/analysis_amd64.s, SSE4, and execution/vm/analysis_arm64.s, NEON) matches the scalar analysis.
For every 32 code bytes and every entry offset 0..32, the step writes the same 4 bytes of JUMPDEST bits as the scalar reference and returns the same entry into the next step (NEON: in all 16 lanes of V30). Table bytes that the loop writes may hold anything from earlier steps; the others hold their initial value. The loop carries only the entry between steps, so this covers every whole 32-byte step. The Go wrappers and the tail of less than 32 bytes are covered by the equivalence tests in Erigon.
goasm.py: Go assembly front end. The C preprocessor (cc -E) expands the macros; instructions are read from the real.sfiles.amd64.py,arm64.py: z3 bit-vector semantics of the instructions the kernels use (the arm64WORD-encoded SMAX and CMHI are decoded from their encodings).- `mem.