github.com/mdaxf/iac@v0.0.0-20240519030858-58a061660378/vendor_skip/golang.org/x/sys/cpu/cpu_linux_s390x.go (about)

     1  // Copyright 2019 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  package cpu
     6  
     7  const (
     8  	// bit mask values from /usr/include/bits/hwcap.h
     9  	hwcap_ZARCH  = 2
    10  	hwcap_STFLE  = 4
    11  	hwcap_MSA    = 8
    12  	hwcap_LDISP  = 16
    13  	hwcap_EIMM   = 32
    14  	hwcap_DFP    = 64
    15  	hwcap_ETF3EH = 256
    16  	hwcap_VX     = 2048
    17  	hwcap_VXE    = 8192
    18  )
    19  
    20  func initS390Xbase() {
    21  	// test HWCAP bit vector
    22  	has := func(featureMask uint) bool {
    23  		return hwCap&featureMask == featureMask
    24  	}
    25  
    26  	// mandatory
    27  	S390X.HasZARCH = has(hwcap_ZARCH)
    28  
    29  	// optional
    30  	S390X.HasSTFLE = has(hwcap_STFLE)
    31  	S390X.HasLDISP = has(hwcap_LDISP)
    32  	S390X.HasEIMM = has(hwcap_EIMM)
    33  	S390X.HasETF3EH = has(hwcap_ETF3EH)
    34  	S390X.HasDFP = has(hwcap_DFP)
    35  	S390X.HasMSA = has(hwcap_MSA)
    36  	S390X.HasVX = has(hwcap_VX)
    37  	if S390X.HasVX {
    38  		S390X.HasVXE = has(hwcap_VXE)
    39  	}
    40  }