Go 1.8 released

Go 1.8 released

Go 1.8 was released yesterday. This release includes some significant changes, including:

For the Power architecture, this is the first release in which the assembler is fully VMX/VSX enabled, which will allow us to further improve performance in the runtime packages and create more efficient code sequences in the SSA backend. In addition, there are new performance optimizations (mostly added by new SSA rules), runtime hardware capability/processor detection enabled, and bug fixes.

In the next release, we plan to continue improving performance on Power. Also, there is a discussion about bringing the minimum processor support for big endian ppc64 to POWER8 in Go 1.9. This would allow users running on big endian to get the same benefits of the work we have been doing for little endian.

For more information, please see the Go 1.8 release notes.

* Gopher image by Renee French, licensed under Creative Commons 3.0 Attributions license.

by 

Go: Added more Power instructions to the assembler

Go: Added more Power instructions to the assembler

I added a few more missing instructions from ISA 2.05 to 2.07 to the Go assembler. These will be used in upcoming runtime performance optimizations shortly.

In addition, I also fixed a few bugs and added more opcode assembling rules, including:

  • Fix for rldicr/rldicl instructions. Now they accept any 6-bit mask as they are supposed to.
  • Added special treatment to support extended VSX mnemonics that take a floating point or Altivec register as an argument, instead of a VSX register.
  • Added support for two missing cases for 3-operand X-form floating point instructions and 2-operand X-form instructions.

Committed as 85ecc5.

by 

Golang patch accepted: runtime detection of ISA level and CPU capabilities

Golang patch accepted: runtime detection of ISA level and CPU capabilities

Commit 40aaf28 adds the functionality of querying about a CPU capability (·cpu+facilities_hasFEATURE(SB)) or ISA level (·cpu+facilities_isPOWERx(SB)) at runtime for ppc64x. These variables are set during runtime from the HWCAP/HWCAP2 bits. This new feature will allow new runtime optimizations that exploit instructions from newer processors without breaking execution for older processors or duplicating code.

This closes issue #16643 and updates #15403.

by 

Golang patch accepted: add ppc64 VSX registers and instructions

Golang patch accepted: add ppc64 VSX registers and instructions

Following the trend from my previous patch, VSX instructions and registers are now enabled and available for use in pure assembly code (i.e. golang runtime arch-specific function implementations), so we can fully leverage the processor capabilities up to the POWER8 chip. These are not (yet) automatically picked by the golang compiler. Committed as 0acefdb.

by