github.com/ooni/psiphon/tunnel-core@v0.0.0-20230105123940-fe12a24c96ee/oovendor/qtls-go1-18/cpu.go (about)

     1  //go:build !js
     2  // +build !js
     3  
     4  package qtls
     5  
     6  import (
     7  	"runtime"
     8  
     9  	"golang.org/x/sys/cpu"
    10  )
    11  
    12  var (
    13  	hasGCMAsmAMD64 = cpu.X86.HasAES && cpu.X86.HasPCLMULQDQ
    14  	hasGCMAsmARM64 = cpu.ARM64.HasAES && cpu.ARM64.HasPMULL
    15  	// Keep in sync with crypto/aes/cipher_s390x.go.
    16  	hasGCMAsmS390X = cpu.S390X.HasAES && cpu.S390X.HasAESCBC && cpu.S390X.HasAESCTR &&
    17  		(cpu.S390X.HasGHASH || cpu.S390X.HasAESGCM)
    18  
    19  	hasAESGCMHardwareSupport = runtime.GOARCH == "amd64" && hasGCMAsmAMD64 ||
    20  		runtime.GOARCH == "arm64" && hasGCMAsmARM64 ||
    21  		runtime.GOARCH == "s390x" && hasGCMAsmS390X
    22  )