#!/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