blob: 0bd2354fbb65fa45d226af7888d1a4bdff692269 [file] [log] [blame]
#!/bin/bash
# This is an end-to-end test of Go SIMD. It updates all generated
# files in this repo and then runs several tests.
XEDDATA="${XEDDATA:-xeddata}"
if [[ ! -d "$XEDDATA" ]]; then
echo >&2 "Must either set \$XEDDATA or symlink xeddata/ to the XED obj/dgen directory."
exit 1
fi
# Ensure that goroot is the appropriate ancestor of this directory
which go >/dev/null || exit 1
goroot="$(go env GOROOT)"
ancestor="../../../../.."
if [[ ! $ancestor -ef "$goroot" ]]; then
# We might be able to make this work but it's SO CONFUSING.
echo >&2 "go command in path has GOROOT $goroot instead of" `(cd $ancestor; pwd)`
exit 1
fi
set -ex
# Regenerate SIMD files
go run . -o godefs -goroot "$goroot" -xedPath "$XEDDATA" go.yaml types.yaml categories.yaml
# Regenerate SSA files from SIMD rules
go run -C "$goroot"/src/cmd/compile/internal/ssa/_gen .
# Rebuild compiler
cd "$goroot"/src
go install cmd/compile
# Tests
# Set the GOEXPERIMENT explicitly.
GOEXPERIMENT=simd GOARCH=amd64 go run -C simd/archsimd/testdata .
GOEXPERIMENT=simd GOARCH=amd64 go test -v simd/archsimd
GOEXPERIMENT=simd GOARCH=amd64 go test go/doc go/build
GOEXPERIMENT=simd GOARCH=amd64 go test cmd/api -v -check -run ^TestCheck$
GOEXPERIMENT=simd GOARCH=amd64 go test cmd/compile/internal/ssagen -simd=0
# Check tests without the GOEXPERIMENT
GOEXPERIMENT= go test go/doc go/build
GOEXPERIMENT= go test cmd/api -v -check -run ^TestCheck$
GOEXPERIMENT= go test cmd/compile/internal/ssagen -simd=0
# TODO: Add some tests of SIMD itself