Golang patch accepted: add ppc64 vector registers and instructions

Golang patch accepted: add ppc64 vector registers and instructions

Until now, golang did not have any support for the Power Altivec/VMX (SIMD) instruction set. This limited the possibilities of writing runtime performance optimizations that leverage those instructions.

The Altivec/VMX instructions and registers are now enabled and available for use in pure assembly code (i.e. golang runtime arch-specific function implementations). These are not (yet) automatically picked by the golang compiler.

Committed as f1973fc. This fixes issue #15619 for ppc64x.

by 

Advance Toolchain for PowerLinux 10.0-0 released

IBM Advance Toolchain for PowerLinux 10.0-0

A new major version of the Advance Toolchain for PowerLinux is released.

Advance Toolchain for PowerLinux 10.0-0 new features

  • Support for Ubuntu 16.04.
  • GCC provides fixes for complex IEEE 128-bit floating point and support for IEEE 128-bit floating point built-ins.
  • GCC creates binaries using –mcpu=power8 –mtune=power8 by default on ppc64le.
  • Valgrind provides a fix for missing support for wbit field on mtfsfi instruction.
  • Valgrind Itrace provides a new option to only start instruction tracing when a given function starts.
  • Cross-compiler packages are now signed.
  • OpenSSL provides fixes for 6 security advisories.

Complete list and details of bug/performance fixes is available at the official IBM website for the Advance Toolchain.

For more information about Power architecture and the OpenPOWER ecosystem, please visit the official OpenPOWER Foundation website. You can also follow our PowerLinux Community blog.

by 

* The IBM logo is property of IBM Corporation. Courtesy of International Business Machines Corporation. Unauthorized use not permitted.

Golang patch accepted: insufficient padding in the ‘p’ structure

Golang patch accepted: insufficient padding in the `p` structure

In the ‘p’ struct type defined in the Golang runtime code, there is some padding at the end to avoid false sharing between different ‘p’-type structs. That padding should be at least the size of a cache line to accomplish that. This patch fixes the hardcoded 64-byte padding and makes that the size of a cache line.

On Power, that only worked because the cache line size was wrongly set at 64 bytes. The patch also fixes the cache line size for Power for both big endian and little endian.

Committed as aaa6b53. This patch fixes issue #16477 for ppc64x.

by 

Golang patch accepted: Use clock_gettime to get current time on ppc64x

Golang patch accepted: Use clock_gettime to get current time on ppc64x

For consistency across platforms, Golang for Power now fetches the current time in nanoseconds, via the clock_gettime() syscall. Committed as 0df5ab7. This patch fixes issue #11222 for ppc64x.

There is still room for improvement here. Since the minimum kernel requirement is 2.6.37, we can use the VDSO for calling clock_gettime() instead of using the syscall.

Unfortunately, there is no runtime implementation for supporting the VDSO on Power at the moment. I am currently working on that.

by