github.com/bir3/gocompiler@v0.9.2202/extra/compress/internal/cpuinfo/cpuinfo.go (about)

     1  // Package cpuinfo gives runtime info about the current CPU.
     2  //
     3  // This is a very limited module meant for use internally
     4  // in this project. For more versatile solution check
     5  // https://github.com/klauspost/cpuid.
     6  package cpuinfo
     7  
     8  // HasBMI1 checks whether an x86 CPU supports the BMI1 extension.
     9  func HasBMI1() bool {
    10  	return hasBMI1
    11  }
    12  
    13  // HasBMI2 checks whether an x86 CPU supports the BMI2 extension.
    14  func HasBMI2() bool {
    15  	return hasBMI2
    16  }
    17  
    18  // DisableBMI2 will disable BMI2, for testing purposes.
    19  // Call returned function to restore previous state.
    20  func DisableBMI2() func() {
    21  	old := hasBMI2
    22  	hasBMI2 = false
    23  	return func() {
    24  		hasBMI2 = old
    25  	}
    26  }
    27  
    28  // HasBMI checks whether an x86 CPU supports both BMI1 and BMI2 extensions.
    29  func HasBMI() bool {
    30  	return HasBMI1() && HasBMI2()
    31  }
    32  
    33  var hasBMI1 bool
    34  var hasBMI2 bool