avo
Assemble Go source files to object code
TLDR
Initialize a workspace in the current directory
Log into the Avo platform
Switch to an existing Avo branch
Pull analytics wrappers for the current path
Display the status of the Avo implementation
Resolve Git conflicts in Avo files
Open the current Avo workspace in the default web browser
Display help for a subcommand
SYNOPSIS
avo fmt|build [options] [files...]
PARAMETERS
fmt
Format .avo files, rewriting syntax and aligning comments
build
Build .avo files into Go assembly (_gen.go) and assembly (_gen.s)
--rewrite
Rewrite deprecated instructions during fmt (default true)
--no-rewrite
Disable rewriting during fmt
--werror
Treat warnings as errors
--cpu=model
Target specific CPU model (e.g., skylake, zen2) for build
-v
Enable verbose output
--help
Show help
DESCRIPTION
The avo command is a CLI tool for the avo library, which enables writing portable SIMD assembly functions in Go. It provides two main subcommands: fmt to format .avo files (similar to go fmt) and build to generate optimized Go assembly code from .avo sources.
Primarily used by developers optimizing performance-critical code with SIMD instructions on x86-64. Install via go install github.com/mmcloughlin/avo/cmd/avo@latest. It enforces avo syntax, checks constraints, and integrates with Go build process. Not a standard system command; requires Go toolchain and avo import in projects.
Supports rewriting deprecated instructions, error handling, and verbose output. Ensures cross-CPU compatibility by generating variants for different architectures like Skylake or Zen.
CAVEATS
Not installed by default; requires Go 1.17+. Only supports x86-64. Files must follow avo syntax or fail formatting. Generated code must be committed and imported in Go packages.
USAGE EXAMPLE
avo fmt *.avo
avo build -cpu=skylake vec.sums.avo
INTEGRATION
Import github.com/mmcloughlin/avo/build in Go; run avo build before go build.
HISTORY
Developed by Mark McLoughlin starting 2019 as part of Go SIMD efforts. First release v0.1.0 in 2020. Actively maintained on GitHub (mmcloughlin/avo). Evolved to support more CPUs and integrate with Go modules. Widely used in projects like x/sys and performance libs.


