Go 1.10 updates for Power

Go 1.10 updates for Power

The Go 1.10 source is frozen now and I have some updates on Power architecture support.

In addition to the updates I’ve already given here regarding performance and POWER9 support, I also added:

  • New implementations for bytes.IndexByte and string.IndexByte that use vector registers and instructions in commit be943df. The performance improvement can be up to 2.75x, depending on the slice size. I will probably look for more basic function loops that may be optimized using vector instructions for Go 1.11.
  • Fixed the implementation of Data Cache instructions in the Go assembler.
  • Updated the syscall package to use newselect.
  • Fixed a very bad performance regression in both bytes.Compare and runtime.cmpstring introduced in Go 1.8.

Also, Go should be almost fully functional on ppc64le / Alpine Linux in 1.10. There are some timeout (hanging) problems when C code is linked with Go code, but pure Go programs should work properly now.

by Carlos Eduardo Seo