| // Copyright 2016 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| package runtime |
| |
| import ( |
| "runtime/internal/sys" |
| ) |
| |
| const ( |
| // bit masks taken from bits/hwcap.h |
| _HWCAP_S390_VX = 2048 // vector facility |
| ) |
| |
| // facilities is padded to avoid false sharing. |
| type facilities struct { |
| _ [sys.CacheLineSize]byte |
| hasVX bool // vector facility |
| _ [sys.CacheLineSize]byte |
| } |
| |
| // cpu indicates the availability of s390x facilities that can be used in |
| // Go assembly but are optional on models supported by Go. |
| var cpu facilities |
| |
| func archauxv(tag, val uintptr) { |
| switch tag { |
| case _AT_HWCAP: // CPU capability bit flags |
| cpu.hasVX = val&_HWCAP_S390_VX != 0 |
| } |
| } |