cpu.go 565 B

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