From 3b463eac6565344b747378904bbebe3c7f056f1c Mon Sep 17 00:00:00 2001 From: moralpriest Date: Tue, 14 Jul 2026 04:45:39 -0600 Subject: [PATCH] chore(deps): bump vendored minio/sha256-simd to v1.0.1 + klauspost/cpuid/v2 to v2.2.3 Coupled bump: sha256-simd v1.0.1 requires cpuid/v2 v2.2.3 (CPU feature detection for SIMD code-path selection). Both target go <=1.17 (1.17 + 1.15). Consensus-critical: minio/sha256-simd backs the SHA-256 calls in astrobwt/astrobwtv3/pow.go (AstroBWTv3 PoW key derivation + fallback hash) and sa_fast.go (miner fast path). klauspost/cpuid/v2 selects the fastest SHA-256 implementation at runtime. SHA-256 is a fixed standard (FIPS 180-4), so byte output is unchanged regardless of SIMD path chosen. Verification: - Build green: `go build ./...` - L1 hash vectors: new TestSha256SimdNistVectors (NIST FIPS 180-4 vectors) PASS - L2 AstroBWTv3: TestAstroBWTv3 + TestAstroBWTv3repeattest PASS (full PoW vectors) - L4 miner: standalone dero-miner (built from this branch) connected to derod --testnet getwork server and received work (AstroBWTv3 hashing with bumped libs) Pre-existing unrelated `go vet` warnings in astrobwt/astrobwt.go:48,86 (unreachable code, same idiom as cmd/derod/main.go:1064) left untouched. --- astrobwt/astrobwtv3/sha256simd_vector_test.go | 38 ++ .../cpuid/v2/.github/workflows/go.yml | 57 --- .../cpuid/v2/.github/workflows/release.yml | 30 -- .../github.com/klauspost/cpuid/v2/.gitignore | 24 -- .../github.com/klauspost/cpuid/v2/README.md | 350 ++++++++++++++++- .../klauspost/cpuid/v2/cmd/cpuid/main.go | 2 +- vendor/github.com/klauspost/cpuid/v2/cpuid.go | 361 +++++++++++++++--- .../klauspost/cpuid/v2/cpuid_test.go | 42 +- .../klauspost/cpuid/v2/detect_x86.go | 2 +- .../klauspost/cpuid/v2/featureid_string.go | 324 ++++++++++------ vendor/github.com/klauspost/cpuid/v2/go.mod | 2 + vendor/github.com/klauspost/cpuid/v2/go.sum | 2 + .../klauspost/cpuid/v2/mockcpu_test.go | 92 ++--- .../klauspost/cpuid/v2/os_darwin_arm64.go | 112 +++++- .../klauspost/cpuid/v2/os_darwin_test.go | 44 +++ .../klauspost/cpuid/v2/test-architectures.sh | 0 .../cpuid/v2/testdata/cpuid_data.zip | Bin 385527 -> 0 bytes .../klauspost/cpuid/v2/testdata/getall.go | 80 ---- .../sha256-simd/.github/workflows/go.yml | 42 -- .../github.com/minio/sha256-simd/.gitignore | 1 - .../minio/sha256-simd/cpuid_other.go | 6 +- vendor/github.com/minio/sha256-simd/go.mod | 6 +- vendor/github.com/minio/sha256-simd/go.sum | 6 +- vendor/github.com/minio/sha256-simd/sha256.go | 131 +++++-- .../minio/sha256-simd/sha256_test.go | 205 +++++++++- .../sha256-simd/sha256blockAvx512_amd64.go | 3 +- .../sha256blockAvx512_amd64_test.go | 19 +- .../minio/sha256-simd/sha256blockSha_amd64.go | 6 - .../minio/sha256-simd/sha256block_amd64.go | 14 +- ...56blockSha_amd64.s => sha256block_amd64.s} | 2 +- ...md64_test.go => sha256block_amd64_test.go} | 11 +- .../minio/sha256-simd/sha256block_arm64.go | 13 +- .../minio/sha256-simd/sha256block_arm64.s | 2 +- .../minio/sha256-simd/sha256block_other.go | 11 +- .../minio/sha256-simd/test-architectures.sh | 0 35 files changed, 1491 insertions(+), 549 deletions(-) create mode 100644 astrobwt/astrobwtv3/sha256simd_vector_test.go delete mode 100644 vendor/github.com/klauspost/cpuid/v2/.github/workflows/go.yml delete mode 100644 vendor/github.com/klauspost/cpuid/v2/.github/workflows/release.yml delete mode 100644 vendor/github.com/klauspost/cpuid/v2/.gitignore create mode 100644 vendor/github.com/klauspost/cpuid/v2/go.sum create mode 100644 vendor/github.com/klauspost/cpuid/v2/os_darwin_test.go mode change 100755 => 100644 vendor/github.com/klauspost/cpuid/v2/test-architectures.sh delete mode 100644 vendor/github.com/klauspost/cpuid/v2/testdata/cpuid_data.zip delete mode 100644 vendor/github.com/klauspost/cpuid/v2/testdata/getall.go delete mode 100644 vendor/github.com/minio/sha256-simd/.github/workflows/go.yml delete mode 100644 vendor/github.com/minio/sha256-simd/.gitignore delete mode 100644 vendor/github.com/minio/sha256-simd/sha256blockSha_amd64.go rename vendor/github.com/minio/sha256-simd/{sha256blockSha_amd64.s => sha256block_amd64.s} (99%) rename vendor/github.com/minio/sha256-simd/{sha256blockSha_amd64_test.go => sha256block_amd64_test.go} (88%) mode change 100755 => 100644 vendor/github.com/minio/sha256-simd/test-architectures.sh diff --git a/astrobwt/astrobwtv3/sha256simd_vector_test.go b/astrobwt/astrobwtv3/sha256simd_vector_test.go new file mode 100644 index 00000000..d01b40b6 --- /dev/null +++ b/astrobwt/astrobwtv3/sha256simd_vector_test.go @@ -0,0 +1,38 @@ +package astrobwtv3 + +import ( + "encoding/hex" + "testing" + + sha256 "github.com/minio/sha256-simd" +) + +// TestSha256SimdNistVectors confirms the vendored minio/sha256-simd v1.0.1 +// produces the exact SHA-256 output specified by NIST FIPS 180-4 for a set +// of known vectors. This is the byte-level correctness gate for the +// consensus-critical sha256.Sum256 calls in pow.go (AstroBWTv3 PoW). +func TestSha256SimdNistVectors(t *testing.T) { + vectors := []struct { + input string + expect string // hex digest + }{ + // "abc" — the canonical NIST FIPS 180-4 / RFC 6234 vector. + {"abc", "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad"}, + // empty input. + {"", "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"}, + // 56-byte input. + {"abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", + "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1"}, + // 112-byte (two-block) — FIPS 180-4 Appendix B example. + {"abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu", + "cf5b16a778af8380036ce59e7b0492370b249b11e8f07a51afac45037afee9d1"}, + } + + for _, v := range vectors { + got := sha256.Sum256([]byte(v.input)) + gotHex := hex.EncodeToString(got[:]) + if gotHex != v.expect { + t.Fatalf("sha256.Sum256(%q) = %s, want %s", v.input, gotHex, v.expect) + } + } +} diff --git a/vendor/github.com/klauspost/cpuid/v2/.github/workflows/go.yml b/vendor/github.com/klauspost/cpuid/v2/.github/workflows/go.yml deleted file mode 100644 index 47137ee6..00000000 --- a/vendor/github.com/klauspost/cpuid/v2/.github/workflows/go.yml +++ /dev/null @@ -1,57 +0,0 @@ -name: Go - -on: - push: - branches: [ master ] - pull_request: - branches: [ master ] - -jobs: - build: - strategy: - matrix: - go-version: [1.15.x, 1.16.x, 1.17.x] - os: [ubuntu-latest, macos-latest, windows-latest] - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - - name: Set up Go - uses: actions/setup-go@v2 - with: - go-version: ${{ matrix.go-version }} - - - name: Vet - run: go vet ./... - - - name: Test - run: go test ./... - - - name: Test Noasm - run: go test -tags=noasm ./... - - build-special: - env: - CGO_ENABLED: 0 - runs-on: ubuntu-latest - steps: - - name: Set up Go - uses: actions/setup-go@v2 - with: - go-version: 1.16.x - - - name: Checkout code - uses: actions/checkout@v2 - - - name: fmt - run: diff <(gofmt -d .) <(printf "") - - - name: Test 386 - run: GOOS=linux GOARCH=386 go test -short ./... - - - name: goreleaser deprecation - run: curl -sfL https://git.io/goreleaser | VERSION=v0.162.0 sh -s -- check - - - name: goreleaser snapshot - run: curl -sL https://git.io/goreleaser | VERSION=v0.162.0 sh -s -- --snapshot --skip-publish --rm-dist - diff --git a/vendor/github.com/klauspost/cpuid/v2/.github/workflows/release.yml b/vendor/github.com/klauspost/cpuid/v2/.github/workflows/release.yml deleted file mode 100644 index 91b70c32..00000000 --- a/vendor/github.com/klauspost/cpuid/v2/.github/workflows/release.yml +++ /dev/null @@ -1,30 +0,0 @@ -name: goreleaser - -on: - push: - tags: - - 'v*' - -jobs: - goreleaser: - runs-on: ubuntu-latest - steps: - - - name: Checkout - uses: actions/checkout@v2 - with: - fetch-depth: 0 - - - name: Set up Go - uses: actions/setup-go@v2 - with: - go-version: 1.16 - - - name: Run GoReleaser - uses: goreleaser/goreleaser-action@v2 - with: - version: 0.162.0 - args: release --rm-dist - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - CGO_ENABLED: 0 diff --git a/vendor/github.com/klauspost/cpuid/v2/.gitignore b/vendor/github.com/klauspost/cpuid/v2/.gitignore deleted file mode 100644 index daf913b1..00000000 --- a/vendor/github.com/klauspost/cpuid/v2/.gitignore +++ /dev/null @@ -1,24 +0,0 @@ -# Compiled Object files, Static and Dynamic libs (Shared Objects) -*.o -*.a -*.so - -# Folders -_obj -_test - -# Architecture specific extensions/prefixes -*.[568vq] -[568vq].out - -*.cgo1.go -*.cgo2.c -_cgo_defun.c -_cgo_gotypes.go -_cgo_export.* - -_testmain.go - -*.exe -*.test -*.prof diff --git a/vendor/github.com/klauspost/cpuid/v2/README.md b/vendor/github.com/klauspost/cpuid/v2/README.md index bc2f98f0..857a93e5 100644 --- a/vendor/github.com/klauspost/cpuid/v2/README.md +++ b/vendor/github.com/klauspost/cpuid/v2/README.md @@ -16,10 +16,17 @@ Package home: https://github.com/klauspost/cpuid ## installing -`go get -u github.com/klauspost/cpuid/v2` using modules. - +`go get -u github.com/klauspost/cpuid/v2` using modules. Drop `v2` for others. +### Homebrew + +For macOS/Linux users, you can install via [brew](https://brew.sh/) + +```sh +$ brew install cpuid +``` + ## example ```Go @@ -77,10 +84,14 @@ We have Streaming SIMD 2 Extensions The `cpuid.CPU` provides access to CPU features. Use `cpuid.CPU.Supports()` to check for CPU features. A faster `cpuid.CPU.Has()` is provided which will usually be inlined by the gc compiler. +To test a larger number of features, they can be combined using `f := CombineFeatures(CMOV, CMPXCHG8, X87, FXSR, MMX, SYSCALL, SSE, SSE2)`, etc. +This can be using with `cpuid.CPU.HasAll(f)` to quickly test if all features are supported. + Note that for some cpu/os combinations some features will not be detected. `amd64` has rather good support and should work reliably on all platforms. -Note that hypervisors may not pass through all CPU features. +Note that hypervisors may not pass through all CPU features through to the guest OS, +so even if your host supports a feature it may not be visible on guests. ## arm64 feature detection @@ -132,6 +143,339 @@ func main() { } ``` +## commandline + +Download as binary from: https://github.com/klauspost/cpuid/releases + +Install from source: + +`go install github.com/klauspost/cpuid/v2/cmd/cpuid@latest` + +### Example + +``` +λ cpuid +Name: AMD Ryzen 9 3950X 16-Core Processor +Vendor String: AuthenticAMD +Vendor ID: AMD +PhysicalCores: 16 +Threads Per Core: 2 +Logical Cores: 32 +CPU Family 23 Model: 113 +Features: ADX,AESNI,AVX,AVX2,BMI1,BMI2,CLMUL,CLZERO,CMOV,CMPXCHG8,CPBOOST,CX16,F16C,FMA3,FXSR,FXSROPT,HTT,HYPERVISOR,LAHF,LZCNT,MCAOVERFLOW,MMX,MMXEXT,MOVBE,NX,OSXSAVE,POPCNT,RDRAND,RDSEED,RDTSCP,SCE,SHA,SSE,SSE2,SSE3,SSE4,SSE42,SSE4A,SSSE3,SUCCOR,X87,XSAVE +Microarchitecture level: 3 +Cacheline bytes: 64 +L1 Instruction Cache: 32768 bytes +L1 Data Cache: 32768 bytes +L2 Cache: 524288 bytes +L3 Cache: 16777216 bytes + +``` +### JSON Output: + +``` +λ cpuid --json +{ + "BrandName": "AMD Ryzen 9 3950X 16-Core Processor", + "VendorID": 2, + "VendorString": "AuthenticAMD", + "PhysicalCores": 16, + "ThreadsPerCore": 2, + "LogicalCores": 32, + "Family": 23, + "Model": 113, + "CacheLine": 64, + "Hz": 0, + "BoostFreq": 0, + "Cache": { + "L1I": 32768, + "L1D": 32768, + "L2": 524288, + "L3": 16777216 + }, + "SGX": { + "Available": false, + "LaunchControl": false, + "SGX1Supported": false, + "SGX2Supported": false, + "MaxEnclaveSizeNot64": 0, + "MaxEnclaveSize64": 0, + "EPCSections": null + }, + "Features": [ + "ADX", + "AESNI", + "AVX", + "AVX2", + "BMI1", + "BMI2", + "CLMUL", + "CLZERO", + "CMOV", + "CMPXCHG8", + "CPBOOST", + "CX16", + "F16C", + "FMA3", + "FXSR", + "FXSROPT", + "HTT", + "HYPERVISOR", + "LAHF", + "LZCNT", + "MCAOVERFLOW", + "MMX", + "MMXEXT", + "MOVBE", + "NX", + "OSXSAVE", + "POPCNT", + "RDRAND", + "RDSEED", + "RDTSCP", + "SCE", + "SHA", + "SSE", + "SSE2", + "SSE3", + "SSE4", + "SSE42", + "SSE4A", + "SSSE3", + "SUCCOR", + "X87", + "XSAVE" + ], + "X64Level": 3 +} +``` + +### Check CPU microarch level + +``` +λ cpuid --check-level=3 +2022/03/18 17:04:40 AMD Ryzen 9 3950X 16-Core Processor +2022/03/18 17:04:40 Microarchitecture level 3 is supported. Max level is 3. +Exit Code 0 + +λ cpuid --check-level=4 +2022/03/18 17:06:18 AMD Ryzen 9 3950X 16-Core Processor +2022/03/18 17:06:18 Microarchitecture level 4 not supported. Max level is 3. +Exit Code 1 +``` + + +## Available flags + +### x86 & amd64 + +| Feature Flag | Description | +|--------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| ADX | Intel ADX (Multi-Precision Add-Carry Instruction Extensions) | +| AESNI | Advanced Encryption Standard New Instructions | +| AMD3DNOW | AMD 3DNOW | +| AMD3DNOWEXT | AMD 3DNowExt | +| AMXBF16 | Tile computational operations on BFLOAT16 numbers | +| AMXINT8 | Tile computational operations on 8-bit integers | +| AMXFP16 | Tile computational operations on FP16 numbers | +| AMXTILE | Tile architecture | +| AVX | AVX functions | +| AVX2 | AVX2 functions | +| AVX512BF16 | AVX-512 BFLOAT16 Instructions | +| AVX512BITALG | AVX-512 Bit Algorithms | +| AVX512BW | AVX-512 Byte and Word Instructions | +| AVX512CD | AVX-512 Conflict Detection Instructions | +| AVX512DQ | AVX-512 Doubleword and Quadword Instructions | +| AVX512ER | AVX-512 Exponential and Reciprocal Instructions | +| AVX512F | AVX-512 Foundation | +| AVX512FP16 | AVX-512 FP16 Instructions | +| AVX512IFMA | AVX-512 Integer Fused Multiply-Add Instructions | +| AVX512PF | AVX-512 Prefetch Instructions | +| AVX512VBMI | AVX-512 Vector Bit Manipulation Instructions | +| AVX512VBMI2 | AVX-512 Vector Bit Manipulation Instructions, Version 2 | +| AVX512VL | AVX-512 Vector Length Extensions | +| AVX512VNNI | AVX-512 Vector Neural Network Instructions | +| AVX512VP2INTERSECT | AVX-512 Intersect for D/Q | +| AVX512VPOPCNTDQ | AVX-512 Vector Population Count Doubleword and Quadword | +| AVXIFMA | AVX-IFMA instructions | +| AVXNECONVERT | AVX-NE-CONVERT instructions | +| AVXSLOW | Indicates the CPU performs 2 128 bit operations instead of one | +| AVXVNNI | AVX (VEX encoded) VNNI neural network instructions | +| AVXVNNIINT8 | AVX-VNNI-INT8 instructions | +| BMI1 | Bit Manipulation Instruction Set 1 | +| BMI2 | Bit Manipulation Instruction Set 2 | +| CETIBT | Intel CET Indirect Branch Tracking | +| CETSS | Intel CET Shadow Stack | +| CLDEMOTE | Cache Line Demote | +| CLMUL | Carry-less Multiplication | +| CLZERO | CLZERO instruction supported | +| CMOV | i686 CMOV | +| CMPCCXADD | CMPCCXADD instructions | +| CMPSB_SCADBS_SHORT | Fast short CMPSB and SCASB | +| CMPXCHG8 | CMPXCHG8 instruction | +| CPBOOST | Core Performance Boost | +| CPPC | AMD: Collaborative Processor Performance Control | +| CX16 | CMPXCHG16B Instruction | +| EFER_LMSLE_UNS | AMD: =Core::X86::Msr::EFER[LMSLE] is not supported, and MBZ | +| ENQCMD | Enqueue Command | +| ERMS | Enhanced REP MOVSB/STOSB | +| F16C | Half-precision floating-point conversion | +| FLUSH_L1D | Flush L1D cache | +| FMA3 | Intel FMA 3. Does not imply AVX. | +| FMA4 | Bulldozer FMA4 functions | +| FP128 | AMD: When set, the internal FP/SIMD execution datapath is 128-bits wide | +| FP256 | AMD: When set, the internal FP/SIMD execution datapath is 256-bits wide | +| FSRM | Fast Short Rep Mov | +| FXSR | FXSAVE, FXRESTOR instructions, CR4 bit 9 | +| FXSROPT | FXSAVE/FXRSTOR optimizations | +| GFNI | Galois Field New Instructions. May require other features (AVX, AVX512VL,AVX512F) based on usage. | +| HLE | Hardware Lock Elision | +| HRESET | If set CPU supports history reset and the IA32_HRESET_ENABLE MSR | +| HTT | Hyperthreading (enabled) | +| HWA | Hardware assert supported. Indicates support for MSRC001_10 | +| HYBRID_CPU | This part has CPUs of more than one type. | +| HYPERVISOR | This bit has been reserved by Intel & AMD for use by hypervisors | +| IA32_ARCH_CAP | IA32_ARCH_CAPABILITIES MSR (Intel) | +| IA32_CORE_CAP | IA32_CORE_CAPABILITIES MSR | +| IBPB | Indirect Branch Restricted Speculation (IBRS) and Indirect Branch Predictor Barrier (IBPB) | +| IBRS | AMD: Indirect Branch Restricted Speculation | +| IBRS_PREFERRED | AMD: IBRS is preferred over software solution | +| IBRS_PROVIDES_SMP | AMD: IBRS provides Same Mode Protection | +| IBS | Instruction Based Sampling (AMD) | +| IBSBRNTRGT | Instruction Based Sampling Feature (AMD) | +| IBSFETCHSAM | Instruction Based Sampling Feature (AMD) | +| IBSFFV | Instruction Based Sampling Feature (AMD) | +| IBSOPCNT | Instruction Based Sampling Feature (AMD) | +| IBSOPCNTEXT | Instruction Based Sampling Feature (AMD) | +| IBSOPSAM | Instruction Based Sampling Feature (AMD) | +| IBSRDWROPCNT | Instruction Based Sampling Feature (AMD) | +| IBSRIPINVALIDCHK | Instruction Based Sampling Feature (AMD) | +| IBS_FETCH_CTLX | AMD: IBS fetch control extended MSR supported | +| IBS_OPDATA4 | AMD: IBS op data 4 MSR supported | +| IBS_OPFUSE | AMD: Indicates support for IbsOpFuse | +| IBS_PREVENTHOST | Disallowing IBS use by the host supported | +| IBS_ZEN4 | Fetch and Op IBS support IBS extensions added with Zen4 | +| INT_WBINVD | WBINVD/WBNOINVD are interruptible. | +| INVLPGB | NVLPGB and TLBSYNC instruction supported | +| LAHF | LAHF/SAHF in long mode | +| LAM | If set, CPU supports Linear Address Masking | +| LBRVIRT | LBR virtualization | +| LZCNT | LZCNT instruction | +| MCAOVERFLOW | MCA overflow recovery support. | +| MCDT_NO | Processor do not exhibit MXCSR Configuration Dependent Timing behavior and do not need to mitigate it. | +| MCOMMIT | MCOMMIT instruction supported | +| MD_CLEAR | VERW clears CPU buffers | +| MMX | standard MMX | +| MMXEXT | SSE integer functions or AMD MMX ext | +| MOVBE | MOVBE instruction (big-endian) | +| MOVDIR64B | Move 64 Bytes as Direct Store | +| MOVDIRI | Move Doubleword as Direct Store | +| MOVSB_ZL | Fast Zero-Length MOVSB | +| MPX | Intel MPX (Memory Protection Extensions) | +| MOVU | MOVU SSE instructions are more efficient and should be preferred to SSE MOVL/MOVH. MOVUPS is more efficient than MOVLPS/MOVHPS. MOVUPD is more efficient than MOVLPD/MOVHPD | +| MSRIRC | Instruction Retired Counter MSR available | +| MSR_PAGEFLUSH | Page Flush MSR available | +| NRIPS | Indicates support for NRIP save on VMEXIT | +| NX | NX (No-Execute) bit | +| OSXSAVE | XSAVE enabled by OS | +| PCONFIG | PCONFIG for Intel Multi-Key Total Memory Encryption | +| POPCNT | POPCNT instruction | +| PPIN | AMD: Protected Processor Inventory Number support. Indicates that Protected Processor Inventory Number (PPIN) capability can be enabled | +| PREFETCHI | PREFETCHIT0/1 instructions | +| PSFD | AMD: Predictive Store Forward Disable | +| RDPRU | RDPRU instruction supported | +| RDRAND | RDRAND instruction is available | +| RDSEED | RDSEED instruction is available | +| RDTSCP | RDTSCP Instruction | +| RTM | Restricted Transactional Memory | +| RTM_ALWAYS_ABORT | Indicates that the loaded microcode is forcing RTM abort. | +| SERIALIZE | Serialize Instruction Execution | +| SEV | AMD Secure Encrypted Virtualization supported | +| SEV_64BIT | AMD SEV guest execution only allowed from a 64-bit host | +| SEV_ALTERNATIVE | AMD SEV Alternate Injection supported | +| SEV_DEBUGSWAP | Full debug state swap supported for SEV-ES guests | +| SEV_ES | AMD SEV Encrypted State supported | +| SEV_RESTRICTED | AMD SEV Restricted Injection supported | +| SEV_SNP | AMD SEV Secure Nested Paging supported | +| SGX | Software Guard Extensions | +| SGXLC | Software Guard Extensions Launch Control | +| SHA | Intel SHA Extensions | +| SME | AMD Secure Memory Encryption supported | +| SME_COHERENT | AMD Hardware cache coherency across encryption domains enforced | +| SPEC_CTRL_SSBD | Speculative Store Bypass Disable | +| SRBDS_CTRL | SRBDS mitigation MSR available | +| SSE | SSE functions | +| SSE2 | P4 SSE functions | +| SSE3 | Prescott SSE3 functions | +| SSE4 | Penryn SSE4.1 functions | +| SSE42 | Nehalem SSE4.2 functions | +| SSE4A | AMD Barcelona microarchitecture SSE4a instructions | +| SSSE3 | Conroe SSSE3 functions | +| STIBP | Single Thread Indirect Branch Predictors | +| STIBP_ALWAYSON | AMD: Single Thread Indirect Branch Prediction Mode has Enhanced Performance and may be left Always On | +| STOSB_SHORT | Fast short STOSB | +| SUCCOR | Software uncorrectable error containment and recovery capability. | +| SVM | AMD Secure Virtual Machine | +| SVMDA | Indicates support for the SVM decode assists. | +| SVMFBASID | SVM, Indicates that TLB flush events, including CR3 writes and CR4.PGE toggles, flush only the current ASID's TLB entries. Also indicates support for the extended VMCBTLB_Control | +| SVML | AMD SVM lock. Indicates support for SVM-Lock. | +| SVMNP | AMD SVM nested paging | +| SVMPF | SVM pause intercept filter. Indicates support for the pause intercept filter | +| SVMPFT | SVM PAUSE filter threshold. Indicates support for the PAUSE filter cycle count threshold | +| SYSCALL | System-Call Extension (SCE): SYSCALL and SYSRET instructions. | +| SYSEE | SYSENTER and SYSEXIT instructions | +| TBM | AMD Trailing Bit Manipulation | +| TLB_FLUSH_NESTED | AMD: Flushing includes all the nested translations for guest translations | +| TME | Intel Total Memory Encryption. The following MSRs are supported: IA32_TME_CAPABILITY, IA32_TME_ACTIVATE, IA32_TME_EXCLUDE_MASK, and IA32_TME_EXCLUDE_BASE. | +| TOPEXT | TopologyExtensions: topology extensions support. Indicates support for CPUID Fn8000_001D_EAX_x[N:0]-CPUID Fn8000_001E_EDX. | +| TSCRATEMSR | MSR based TSC rate control. Indicates support for MSR TSC ratio MSRC000_0104 | +| TSXLDTRK | Intel TSX Suspend Load Address Tracking | +| VAES | Vector AES. AVX(512) versions requires additional checks. | +| VMCBCLEAN | VMCB clean bits. Indicates support for VMCB clean bits. | +| VMPL | AMD VM Permission Levels supported | +| VMSA_REGPROT | AMD VMSA Register Protection supported | +| VMX | Virtual Machine Extensions | +| VPCLMULQDQ | Carry-Less Multiplication Quadword. Requires AVX for 3 register versions. | +| VTE | AMD Virtual Transparent Encryption supported | +| WAITPKG | TPAUSE, UMONITOR, UMWAIT | +| WBNOINVD | Write Back and Do Not Invalidate Cache | +| X87 | FPU | +| XGETBV1 | Supports XGETBV with ECX = 1 | +| XOP | Bulldozer XOP functions | +| XSAVE | XSAVE, XRESTOR, XSETBV, XGETBV | +| XSAVEC | Supports XSAVEC and the compacted form of XRSTOR. | +| XSAVEOPT | XSAVEOPT available | +| XSAVES | Supports XSAVES/XRSTORS and IA32_XSS | + +# ARM features: + +| Feature Flag | Description | +|--------------|------------------------------------------------------------------| +| AESARM | AES instructions | +| ARMCPUID | Some CPU ID registers readable at user-level | +| ASIMD | Advanced SIMD | +| ASIMDDP | SIMD Dot Product | +| ASIMDHP | Advanced SIMD half-precision floating point | +| ASIMDRDM | Rounding Double Multiply Accumulate/Subtract (SQRDMLAH/SQRDMLSH) | +| ATOMICS | Large System Extensions (LSE) | +| CRC32 | CRC32/CRC32C instructions | +| DCPOP | Data cache clean to Point of Persistence (DC CVAP) | +| EVTSTRM | Generic timer | +| FCMA | Floatin point complex number addition and multiplication | +| FP | Single-precision and double-precision floating point | +| FPHP | Half-precision floating point | +| GPA | Generic Pointer Authentication | +| JSCVT | Javascript-style double->int convert (FJCVTZS) | +| LRCPC | Weaker release consistency (LDAPR, etc) | +| PMULL | Polynomial Multiply instructions (PMULL/PMULL2) | +| SHA1 | SHA-1 instructions (SHA1C, etc) | +| SHA2 | SHA-2 instructions (SHA256H, etc) | +| SHA3 | SHA-3 instructions (EOR3, RAXI, XAR, BCAX) | +| SHA512 | SHA512 instructions | +| SM3 | SM3 instructions | +| SM4 | SM4 instructions | +| SVE | Scalable Vector Extension | + # license This code is published under an MIT license. See LICENSE file for more information. diff --git a/vendor/github.com/klauspost/cpuid/v2/cmd/cpuid/main.go b/vendor/github.com/klauspost/cpuid/v2/cmd/cpuid/main.go index 5869a4bf..0238a372 100644 --- a/vendor/github.com/klauspost/cpuid/v2/cmd/cpuid/main.go +++ b/vendor/github.com/klauspost/cpuid/v2/cmd/cpuid/main.go @@ -62,7 +62,7 @@ func main() { fmt.Println("PhysicalCores:", cpuid.CPU.PhysicalCores) fmt.Println("Threads Per Core:", cpuid.CPU.ThreadsPerCore) fmt.Println("Logical Cores:", cpuid.CPU.LogicalCores) - fmt.Println("CPU Family", cpuid.CPU.Family, "Model:", cpuid.CPU.Model) + fmt.Println("CPU Family", cpuid.CPU.Family, "Model:", cpuid.CPU.Model, "Stepping:", cpuid.CPU.Stepping) fmt.Println("Features:", strings.Join(cpuid.CPU.FeatureSet(), ",")) fmt.Println("Microarchitecture level:", cpuid.CPU.X64Level()) fmt.Println("Cacheline bytes:", cpuid.CPU.CacheLine) diff --git a/vendor/github.com/klauspost/cpuid/v2/cpuid.go b/vendor/github.com/klauspost/cpuid/v2/cpuid.go index 3d543ce9..cf2ae9c5 100644 --- a/vendor/github.com/klauspost/cpuid/v2/cpuid.go +++ b/vendor/github.com/klauspost/cpuid/v2/cpuid.go @@ -14,6 +14,7 @@ import ( "flag" "fmt" "math" + "math/bits" "os" "runtime" "strings" @@ -72,6 +73,7 @@ const ( AMD3DNOW // AMD 3DNOW AMD3DNOWEXT // AMD 3DNowExt AMXBF16 // Tile computational operations on BFLOAT16 numbers + AMXFP16 // Tile computational operations on FP16 numbers AMXINT8 // Tile computational operations on 8-bit integers AMXTILE // Tile architecture AVX // AVX functions @@ -92,7 +94,11 @@ const ( AVX512VNNI // AVX-512 Vector Neural Network Instructions AVX512VP2INTERSECT // AVX-512 Intersect for D/Q AVX512VPOPCNTDQ // AVX-512 Vector Population Count Doubleword and Quadword - AVXSLOW // Indicates the CPU performs 2 128 bit operations instead of one. + AVXIFMA // AVX-IFMA instructions + AVXNECONVERT // AVX-NE-CONVERT instructions + AVXSLOW // Indicates the CPU performs 2 128 bit operations instead of one + AVXVNNI // AVX (VEX encoded) VNNI neural network instructions + AVXVNNIINT8 // AVX-VNNI-INT8 instructions BMI1 // Bit Manipulation Instruction Set 1 BMI2 // Bit Manipulation Instruction Set 2 CETIBT // Intel CET Indirect Branch Tracking @@ -101,22 +107,37 @@ const ( CLMUL // Carry-less Multiplication CLZERO // CLZERO instruction supported CMOV // i686 CMOV + CMPCCXADD // CMPCCXADD instructions + CMPSB_SCADBS_SHORT // Fast short CMPSB and SCASB CMPXCHG8 // CMPXCHG8 instruction CPBOOST // Core Performance Boost + CPPC // AMD: Collaborative Processor Performance Control CX16 // CMPXCHG16B Instruction + EFER_LMSLE_UNS // AMD: =Core::X86::Msr::EFER[LMSLE] is not supported, and MBZ ENQCMD // Enqueue Command ERMS // Enhanced REP MOVSB/STOSB F16C // Half-precision floating-point conversion + FLUSH_L1D // Flush L1D cache FMA3 // Intel FMA 3. Does not imply AVX. FMA4 // Bulldozer FMA4 functions + FP128 // AMD: When set, the internal FP/SIMD execution datapath is no more than 128-bits wide + FP256 // AMD: When set, the internal FP/SIMD execution datapath is no more than 256-bits wide + FSRM // Fast Short Rep Mov FXSR // FXSAVE, FXRESTOR instructions, CR4 bit 9 FXSROPT // FXSAVE/FXRSTOR optimizations - GFNI // Galois Field New Instructions + GFNI // Galois Field New Instructions. May require other features (AVX, AVX512VL,AVX512F) based on usage. HLE // Hardware Lock Elision + HRESET // If set CPU supports history reset and the IA32_HRESET_ENABLE MSR HTT // Hyperthreading (enabled) HWA // Hardware assert supported. Indicates support for MSRC001_10 + HYBRID_CPU // This part has CPUs of more than one type. HYPERVISOR // This bit has been reserved by Intel & AMD for use by hypervisors + IA32_ARCH_CAP // IA32_ARCH_CAPABILITIES MSR (Intel) + IA32_CORE_CAP // IA32_CORE_CAPABILITIES MSR IBPB // Indirect Branch Restricted Speculation (IBRS) and Indirect Branch Predictor Barrier (IBPB) + IBRS // AMD: Indirect Branch Restricted Speculation + IBRS_PREFERRED // AMD: IBRS is preferred over software solution + IBRS_PROVIDES_SMP // AMD: IBRS provides Same Mode Protection IBS // Instruction Based Sampling (AMD) IBSBRNTRGT // Instruction Based Sampling Feature (AMD) IBSFETCHSAM // Instruction Based Sampling Feature (AMD) @@ -126,33 +147,60 @@ const ( IBSOPSAM // Instruction Based Sampling Feature (AMD) IBSRDWROPCNT // Instruction Based Sampling Feature (AMD) IBSRIPINVALIDCHK // Instruction Based Sampling Feature (AMD) + IBS_FETCH_CTLX // AMD: IBS fetch control extended MSR supported + IBS_OPDATA4 // AMD: IBS op data 4 MSR supported + IBS_OPFUSE // AMD: Indicates support for IbsOpFuse + IBS_PREVENTHOST // Disallowing IBS use by the host supported + IBS_ZEN4 // AMD: Fetch and Op IBS support IBS extensions added with Zen4 INT_WBINVD // WBINVD/WBNOINVD are interruptible. INVLPGB // NVLPGB and TLBSYNC instruction supported LAHF // LAHF/SAHF in long mode + LAM // If set, CPU supports Linear Address Masking + LBRVIRT // LBR virtualization LZCNT // LZCNT instruction MCAOVERFLOW // MCA overflow recovery support. + MCDT_NO // Processor do not exhibit MXCSR Configuration Dependent Timing behavior and do not need to mitigate it. MCOMMIT // MCOMMIT instruction supported + MD_CLEAR // VERW clears CPU buffers MMX // standard MMX MMXEXT // SSE integer functions or AMD MMX ext MOVBE // MOVBE instruction (big-endian) MOVDIR64B // Move 64 Bytes as Direct Store MOVDIRI // Move Doubleword as Direct Store + MOVSB_ZL // Fast Zero-Length MOVSB + MOVU // AMD: MOVU SSE instructions are more efficient and should be preferred to SSE MOVL/MOVH. MOVUPS is more efficient than MOVLPS/MOVHPS. MOVUPD is more efficient than MOVLPD/MOVHPD MPX // Intel MPX (Memory Protection Extensions) MSRIRC // Instruction Retired Counter MSR available + MSR_PAGEFLUSH // Page Flush MSR available + NRIPS // Indicates support for NRIP save on VMEXIT NX // NX (No-Execute) bit OSXSAVE // XSAVE enabled by OS + PCONFIG // PCONFIG for Intel Multi-Key Total Memory Encryption POPCNT // POPCNT instruction + PPIN // AMD: Protected Processor Inventory Number support. Indicates that Protected Processor Inventory Number (PPIN) capability can be enabled + PREFETCHI // PREFETCHIT0/1 instructions + PSFD // AMD: Predictive Store Forward Disable RDPRU // RDPRU instruction supported RDRAND // RDRAND instruction is available RDSEED // RDSEED instruction is available RDTSCP // RDTSCP Instruction RTM // Restricted Transactional Memory RTM_ALWAYS_ABORT // Indicates that the loaded microcode is forcing RTM abort. - SCE // SYSENTER and SYSEXIT instructions SERIALIZE // Serialize Instruction Execution + SEV // AMD Secure Encrypted Virtualization supported + SEV_64BIT // AMD SEV guest execution only allowed from a 64-bit host + SEV_ALTERNATIVE // AMD SEV Alternate Injection supported + SEV_DEBUGSWAP // Full debug state swap supported for SEV-ES guests + SEV_ES // AMD SEV Encrypted State supported + SEV_RESTRICTED // AMD SEV Restricted Injection supported + SEV_SNP // AMD SEV Secure Nested Paging supported SGX // Software Guard Extensions SGXLC // Software Guard Extensions Launch Control SHA // Intel SHA Extensions + SME // AMD Secure Memory Encryption supported + SME_COHERENT // AMD Hardware cache coherency across encryption domains enforced + SPEC_CTRL_SSBD // Speculative Store Bypass Disable + SRBDS_CTRL // SRBDS mitigation MSR available SSE // SSE functions SSE2 // P4 SSE functions SSE3 // Prescott SSE3 functions @@ -161,17 +209,40 @@ const ( SSE4A // AMD Barcelona microarchitecture SSE4a instructions SSSE3 // Conroe SSSE3 functions STIBP // Single Thread Indirect Branch Predictors + STIBP_ALWAYSON // AMD: Single Thread Indirect Branch Prediction Mode has Enhanced Performance and may be left Always On + STOSB_SHORT // Fast short STOSB SUCCOR // Software uncorrectable error containment and recovery capability. + SVM // AMD Secure Virtual Machine + SVMDA // Indicates support for the SVM decode assists. + SVMFBASID // SVM, Indicates that TLB flush events, including CR3 writes and CR4.PGE toggles, flush only the current ASID's TLB entries. Also indicates support for the extended VMCBTLB_Control + SVML // AMD SVM lock. Indicates support for SVM-Lock. + SVMNP // AMD SVM nested paging + SVMPF // SVM pause intercept filter. Indicates support for the pause intercept filter + SVMPFT // SVM PAUSE filter threshold. Indicates support for the PAUSE filter cycle count threshold + SYSCALL // System-Call Extension (SCE): SYSCALL and SYSRET instructions. + SYSEE // SYSENTER and SYSEXIT instructions TBM // AMD Trailing Bit Manipulation + TLB_FLUSH_NESTED // AMD: Flushing includes all the nested translations for guest translations + TME // Intel Total Memory Encryption. The following MSRs are supported: IA32_TME_CAPABILITY, IA32_TME_ACTIVATE, IA32_TME_EXCLUDE_MASK, and IA32_TME_EXCLUDE_BASE. + TOPEXT // TopologyExtensions: topology extensions support. Indicates support for CPUID Fn8000_001D_EAX_x[N:0]-CPUID Fn8000_001E_EDX. + TSCRATEMSR // MSR based TSC rate control. Indicates support for MSR TSC ratio MSRC000_0104 TSXLDTRK // Intel TSX Suspend Load Address Tracking - VAES // Vector AES + VAES // Vector AES. AVX(512) versions requires additional checks. + VMCBCLEAN // VMCB clean bits. Indicates support for VMCB clean bits. + VMPL // AMD VM Permission Levels supported + VMSA_REGPROT // AMD VMSA Register Protection supported VMX // Virtual Machine Extensions - VPCLMULQDQ // Carry-Less Multiplication Quadword + VPCLMULQDQ // Carry-Less Multiplication Quadword. Requires AVX for 3 register versions. + VTE // AMD Virtual Transparent Encryption supported WAITPKG // TPAUSE, UMONITOR, UMWAIT WBNOINVD // Write Back and Do Not Invalidate Cache X87 // FPU + XGETBV1 // Supports XGETBV with ECX = 1 XOP // Bulldozer XOP functions XSAVE // XSAVE, XRESTOR, XSETBV, XGETBV + XSAVEC // Supports XSAVEC and the compacted form of XRSTOR. + XSAVEOPT // XSAVEOPT available + XSAVES // Supports XSAVES/XRSTORS and IA32_XSS // ARM features: AESARM // AES instructions @@ -198,7 +269,6 @@ const ( SM3 // SM3 instructions SM4 // SM4 instructions SVE // Scalable Vector Extension - // Keep it last. It automatically defines the size of []flagSet lastID @@ -216,6 +286,7 @@ type CPUInfo struct { LogicalCores int // Number of physical cores times threads that can run on each core through the use of hyperthreading. Will be 0 if undetectable. Family int // CPU family number Model int // CPU model number + Stepping int // CPU stepping info CacheLine int // Cache line size in bytes. Will be 0 if undetectable. Hz int64 // Clock speed, if known, 0 otherwise. Will attempt to contain base clock speed. BoostFreq int64 // Max clock speed, if known, 0 otherwise @@ -318,30 +389,61 @@ func (c CPUInfo) Supports(ids ...FeatureID) bool { // Has allows for checking a single feature. // Should be inlined by the compiler. -func (c CPUInfo) Has(id FeatureID) bool { +func (c *CPUInfo) Has(id FeatureID) bool { return c.featureSet.inSet(id) } +// AnyOf returns whether the CPU supports one or more of the requested features. +func (c CPUInfo) AnyOf(ids ...FeatureID) bool { + for _, id := range ids { + if c.featureSet.inSet(id) { + return true + } + } + return false +} + +// Features contains several features combined for a fast check using +// CpuInfo.HasAll +type Features *flagSet + +// CombineFeatures allows to combine several features for a close to constant time lookup. +func CombineFeatures(ids ...FeatureID) Features { + var v flagSet + for _, id := range ids { + v.set(id) + } + return &v +} + +func (c *CPUInfo) HasAll(f Features) bool { + return c.featureSet.hasSetP(f) +} + // https://en.wikipedia.org/wiki/X86-64#Microarchitecture_levels -var level1Features = flagSetWith(CMOV, CMPXCHG8, X87, FXSR, MMX, SCE, SSE, SSE2) -var level2Features = flagSetWith(CMOV, CMPXCHG8, X87, FXSR, MMX, SCE, SSE, SSE2, CX16, LAHF, POPCNT, SSE3, SSE4, SSE42, SSSE3) -var level3Features = flagSetWith(CMOV, CMPXCHG8, X87, FXSR, MMX, SCE, SSE, SSE2, CX16, LAHF, POPCNT, SSE3, SSE4, SSE42, SSSE3, AVX, AVX2, BMI1, BMI2, F16C, FMA3, LZCNT, MOVBE, OSXSAVE) -var level4Features = flagSetWith(CMOV, CMPXCHG8, X87, FXSR, MMX, SCE, SSE, SSE2, CX16, LAHF, POPCNT, SSE3, SSE4, SSE42, SSSE3, AVX, AVX2, BMI1, BMI2, F16C, FMA3, LZCNT, MOVBE, OSXSAVE, AVX512F, AVX512BW, AVX512CD, AVX512DQ, AVX512VL) +var oneOfLevel = CombineFeatures(SYSEE, SYSCALL) +var level1Features = CombineFeatures(CMOV, CMPXCHG8, X87, FXSR, MMX, SSE, SSE2) +var level2Features = CombineFeatures(CMOV, CMPXCHG8, X87, FXSR, MMX, SSE, SSE2, CX16, LAHF, POPCNT, SSE3, SSE4, SSE42, SSSE3) +var level3Features = CombineFeatures(CMOV, CMPXCHG8, X87, FXSR, MMX, SSE, SSE2, CX16, LAHF, POPCNT, SSE3, SSE4, SSE42, SSSE3, AVX, AVX2, BMI1, BMI2, F16C, FMA3, LZCNT, MOVBE, OSXSAVE) +var level4Features = CombineFeatures(CMOV, CMPXCHG8, X87, FXSR, MMX, SSE, SSE2, CX16, LAHF, POPCNT, SSE3, SSE4, SSE42, SSSE3, AVX, AVX2, BMI1, BMI2, F16C, FMA3, LZCNT, MOVBE, OSXSAVE, AVX512F, AVX512BW, AVX512CD, AVX512DQ, AVX512VL) // X64Level returns the microarchitecture level detected on the CPU. // If features are lacking or non x64 mode, 0 is returned. // See https://en.wikipedia.org/wiki/X86-64#Microarchitecture_levels func (c CPUInfo) X64Level() int { - if c.featureSet.hasSet(level4Features) { + if !c.featureSet.hasOneOf(oneOfLevel) { + return 0 + } + if c.featureSet.hasSetP(level4Features) { return 4 } - if c.featureSet.hasSet(level3Features) { + if c.featureSet.hasSetP(level3Features) { return 3 } - if c.featureSet.hasSet(level2Features) { + if c.featureSet.hasSetP(level2Features) { return 2 } - if c.featureSet.hasSet(level1Features) { + if c.featureSet.hasSetP(level1Features) { return 1 } return 0 @@ -369,8 +471,9 @@ func (c CPUInfo) IsVendor(v Vendor) bool { return c.VendorID == v } +// FeatureSet returns all available features as strings. func (c CPUInfo) FeatureSet() []string { - s := make([]string, 0) + s := make([]string, 0, c.featureSet.nEnabled()) s = append(s, c.featureSet.Strings()...) return s } @@ -504,7 +607,7 @@ const flagMask = flagBits - 1 // flagSet contains detected cpu features and characteristics in an array of flags type flagSet [(lastID + flagMask) / flagBits]flags -func (s flagSet) inSet(feat FeatureID) bool { +func (s *flagSet) inSet(feat FeatureID) bool { return s[feat>>flagBitsLog2]&(1<<(feat&flagMask)) != 0 } @@ -534,7 +637,7 @@ func (s *flagSet) or(other flagSet) { } // hasSet returns whether all features are present. -func (s flagSet) hasSet(other flagSet) bool { +func (s *flagSet) hasSet(other flagSet) bool { for i, v := range other[:] { if s[i]&v != v { return false @@ -543,6 +646,34 @@ func (s flagSet) hasSet(other flagSet) bool { return true } +// hasSet returns whether all features are present. +func (s *flagSet) hasSetP(other *flagSet) bool { + for i, v := range other[:] { + if s[i]&v != v { + return false + } + } + return true +} + +// hasOneOf returns whether one or more features are present. +func (s *flagSet) hasOneOf(other *flagSet) bool { + for i, v := range other[:] { + if s[i]&v != 0 { + return true + } + } + return false +} + +// nEnabled will return the number of enabled flags. +func (s *flagSet) nEnabled() (n int) { + for _, v := range s[:] { + n += bits.OnesCount64(uint64(v)) + } + return n +} + func flagSetWith(feat ...FeatureID) flagSet { var res flagSet for _, f := range feat { @@ -631,7 +762,7 @@ func threadsPerCore() int { if vend == AMD { // Workaround for AMD returning 0, assume 2 if >= Zen 2 // It will be more correct than not. - fam, _ := familyModel() + fam, _, _ := familyModel() _, _, _, d := cpuid(1) if (d&(1<<28)) != 0 && fam >= 23 { return 2 @@ -669,14 +800,27 @@ func logicalCores() int { } } -func familyModel() (int, int) { +func familyModel() (family, model, stepping int) { if maxFunctionID() < 0x1 { - return 0, 0 + return 0, 0, 0 } eax, _, _, _ := cpuid(1) - family := ((eax >> 8) & 0xf) + ((eax >> 20) & 0xff) - model := ((eax >> 4) & 0xf) + ((eax >> 12) & 0xf0) - return int(family), int(model) + // If BaseFamily[3:0] is less than Fh then ExtendedFamily[7:0] is reserved and Family is equal to BaseFamily[3:0]. + family = int((eax >> 8) & 0xf) + extFam := family == 0x6 // Intel is 0x6, needs extended model. + if family == 0xf { + // Add ExtFamily + family += int((eax >> 20) & 0xff) + extFam = true + } + // If BaseFamily[3:0] is less than 0Fh then ExtendedModel[3:0] is reserved and Model is equal to BaseModel[3:0]. + model = int((eax >> 4) & 0xf) + if extFam { + // Add ExtModel + model += int((eax >> 12) & 0xf0) + } + stepping = int(eax & 0xf) + return family, model, stepping } func physicalCores() int { @@ -811,9 +955,14 @@ func (c *CPUInfo) cacheSize() { c.Cache.L2 = int(((ecx >> 16) & 0xFFFF) * 1024) // CPUID Fn8000_001D_EAX_x[N:0] Cache Properties - if maxExtendedFunction() < 0x8000001D { + if maxExtendedFunction() < 0x8000001D || !c.Has(TOPEXT) { return } + + // Xen Hypervisor is buggy and returns the same entry no matter ECX value. + // Hack: When we encounter the same entry 100 times we break. + nSame := 0 + var last uint32 for i := uint32(0); i < math.MaxUint32; i++ { eax, ebx, ecx, _ := cpuidex(0x8000001D, i) @@ -829,6 +978,16 @@ func (c *CPUInfo) cacheSize() { return } + // Check for the same value repeated. + comb := eax ^ ebx ^ ecx + if comb == last { + nSame++ + if nSame == 100 { + return + } + } + last = comb + switch level { case 1: switch typ { @@ -913,14 +1072,13 @@ func support() flagSet { if mfi < 0x1 { return fs } - family, model := familyModel() + family, model, _ := familyModel() _, _, c, d := cpuid(1) fs.setIf((d&(1<<0)) != 0, X87) fs.setIf((d&(1<<8)) != 0, CMPXCHG8) - fs.setIf((d&(1<<11)) != 0, SCE) + fs.setIf((d&(1<<11)) != 0, SYSEE) fs.setIf((d&(1<<15)) != 0, CMOV) - fs.setIf((d&(1<<22)) != 0, MMXEXT) fs.setIf((d&(1<<23)) != 0, MMX) fs.setIf((d&(1<<24)) != 0, FXSR) fs.setIf((d&(1<<25)) != 0, FXSROPT) @@ -928,9 +1086,9 @@ func support() flagSet { fs.setIf((d&(1<<26)) != 0, SSE2) fs.setIf((c&1) != 0, SSE3) fs.setIf((c&(1<<5)) != 0, VMX) - fs.setIf((c&0x00000200) != 0, SSSE3) - fs.setIf((c&0x00080000) != 0, SSE4) - fs.setIf((c&0x00100000) != 0, SSE42) + fs.setIf((c&(1<<9)) != 0, SSSE3) + fs.setIf((c&(1<<19)) != 0, SSE4) + fs.setIf((c&(1<<20)) != 0, SSE42) fs.setIf((c&(1<<25)) != 0, AESNI) fs.setIf((c&(1<<1)) != 0, CLMUL) fs.setIf(c&(1<<22) != 0, MOVBE) @@ -976,7 +1134,6 @@ func support() flagSet { // Check AVX2, AVX2 requires OS support, but BMI1/2 don't. if mfi >= 7 { _, ebx, ecx, edx := cpuidex(7, 0) - eax1, _, _, _ := cpuidex(7, 1) if fs.inSet(AVX) && (ebx&0x00000020) != 0 { fs.set(AVX2) } @@ -993,21 +1150,52 @@ func support() flagSet { fs.setIf(ebx&(1<<18) != 0, RDSEED) fs.setIf(ebx&(1<<19) != 0, ADX) fs.setIf(ebx&(1<<29) != 0, SHA) + // CPUID.(EAX=7, ECX=0).ECX fs.setIf(ecx&(1<<5) != 0, WAITPKG) fs.setIf(ecx&(1<<7) != 0, CETSS) + fs.setIf(ecx&(1<<8) != 0, GFNI) + fs.setIf(ecx&(1<<9) != 0, VAES) + fs.setIf(ecx&(1<<10) != 0, VPCLMULQDQ) + fs.setIf(ecx&(1<<13) != 0, TME) fs.setIf(ecx&(1<<25) != 0, CLDEMOTE) fs.setIf(ecx&(1<<27) != 0, MOVDIRI) fs.setIf(ecx&(1<<28) != 0, MOVDIR64B) fs.setIf(ecx&(1<<29) != 0, ENQCMD) fs.setIf(ecx&(1<<30) != 0, SGXLC) + // CPUID.(EAX=7, ECX=0).EDX + fs.setIf(edx&(1<<4) != 0, FSRM) + fs.setIf(edx&(1<<9) != 0, SRBDS_CTRL) + fs.setIf(edx&(1<<10) != 0, MD_CLEAR) fs.setIf(edx&(1<<11) != 0, RTM_ALWAYS_ABORT) fs.setIf(edx&(1<<14) != 0, SERIALIZE) + fs.setIf(edx&(1<<15) != 0, HYBRID_CPU) fs.setIf(edx&(1<<16) != 0, TSXLDTRK) + fs.setIf(edx&(1<<18) != 0, PCONFIG) fs.setIf(edx&(1<<20) != 0, CETIBT) fs.setIf(edx&(1<<26) != 0, IBPB) fs.setIf(edx&(1<<27) != 0, STIBP) + fs.setIf(edx&(1<<28) != 0, FLUSH_L1D) + fs.setIf(edx&(1<<29) != 0, IA32_ARCH_CAP) + fs.setIf(edx&(1<<30) != 0, IA32_CORE_CAP) + fs.setIf(edx&(1<<31) != 0, SPEC_CTRL_SSBD) + + // CPUID.(EAX=7, ECX=1).EDX + fs.setIf(edx&(1<<4) != 0, AVXVNNIINT8) + fs.setIf(edx&(1<<5) != 0, AVXNECONVERT) + fs.setIf(edx&(1<<14) != 0, PREFETCHI) + + // CPUID.(EAX=7, ECX=1).EAX + eax1, _, _, _ := cpuidex(7, 1) + fs.setIf(fs.inSet(AVX) && eax1&(1<<4) != 0, AVXVNNI) + fs.setIf(eax1&(1<<7) != 0, CMPCCXADD) + fs.setIf(eax1&(1<<10) != 0, MOVSB_ZL) + fs.setIf(eax1&(1<<11) != 0, STOSB_SHORT) + fs.setIf(eax1&(1<<12) != 0, CMPSB_SCADBS_SHORT) + fs.setIf(eax1&(1<<22) != 0, HRESET) + fs.setIf(eax1&(1<<23) != 0, AVXIFMA) + fs.setIf(eax1&(1<<26) != 0, LAM) // Only detect AVX-512 features if XGETBV is supported if c&((1<<26)|(1<<27)) == (1<<26)|(1<<27) { @@ -1033,9 +1221,6 @@ func support() flagSet { // ecx fs.setIf(ecx&(1<<1) != 0, AVX512VBMI) fs.setIf(ecx&(1<<6) != 0, AVX512VBMI2) - fs.setIf(ecx&(1<<8) != 0, GFNI) - fs.setIf(ecx&(1<<9) != 0, VAES) - fs.setIf(ecx&(1<<10) != 0, VPCLMULQDQ) fs.setIf(ecx&(1<<11) != 0, AVX512VNNI) fs.setIf(ecx&(1<<12) != 0, AVX512BITALG) fs.setIf(ecx&(1<<14) != 0, AVX512VPOPCNTDQ) @@ -1047,31 +1232,66 @@ func support() flagSet { fs.setIf(edx&(1<<25) != 0, AMXINT8) // eax1 = CPUID.(EAX=7, ECX=1).EAX fs.setIf(eax1&(1<<5) != 0, AVX512BF16) + fs.setIf(eax1&(1<<21) != 0, AMXFP16) } } + + // CPUID.(EAX=7, ECX=2) + _, _, _, edx = cpuidex(7, 2) + fs.setIf(edx&(1<<5) != 0, MCDT_NO) } + // Processor Extended State Enumeration Sub-leaf (EAX = 0DH, ECX = 1) + // EAX + // Bit 00: XSAVEOPT is available. + // Bit 01: Supports XSAVEC and the compacted form of XRSTOR if set. + // Bit 02: Supports XGETBV with ECX = 1 if set. + // Bit 03: Supports XSAVES/XRSTORS and IA32_XSS if set. + // Bits 31 - 04: Reserved. + // EBX + // Bits 31 - 00: The size in bytes of the XSAVE area containing all states enabled by XCRO | IA32_XSS. + // ECX + // Bits 31 - 00: Reports the supported bits of the lower 32 bits of the IA32_XSS MSR. IA32_XSS[n] can be set to 1 only if ECX[n] is 1. + // EDX? + // Bits 07 - 00: Used for XCR0. Bit 08: PT state. Bit 09: Used for XCR0. Bits 12 - 10: Reserved. Bit 13: HWP state. Bits 31 - 14: Reserved. + if mfi >= 0xd { + if fs.inSet(XSAVE) { + eax, _, _, _ := cpuidex(0xd, 1) + fs.setIf(eax&(1<<0) != 0, XSAVEOPT) + fs.setIf(eax&(1<<1) != 0, XSAVEC) + fs.setIf(eax&(1<<2) != 0, XGETBV1) + fs.setIf(eax&(1<<3) != 0, XSAVES) + } + } if maxExtendedFunction() >= 0x80000001 { _, _, c, d := cpuid(0x80000001) if (c & (1 << 5)) != 0 { fs.set(LZCNT) fs.set(POPCNT) } + // ECX fs.setIf((c&(1<<0)) != 0, LAHF) - fs.setIf((c&(1<<10)) != 0, IBS) - fs.setIf((d&(1<<31)) != 0, AMD3DNOW) - fs.setIf((d&(1<<30)) != 0, AMD3DNOWEXT) - fs.setIf((d&(1<<23)) != 0, MMX) - fs.setIf((d&(1<<22)) != 0, MMXEXT) + fs.setIf((c&(1<<2)) != 0, SVM) fs.setIf((c&(1<<6)) != 0, SSE4A) + fs.setIf((c&(1<<10)) != 0, IBS) + fs.setIf((c&(1<<22)) != 0, TOPEXT) + + // EDX + fs.setIf(d&(1<<11) != 0, SYSCALL) fs.setIf(d&(1<<20) != 0, NX) + fs.setIf(d&(1<<22) != 0, MMXEXT) + fs.setIf(d&(1<<23) != 0, MMX) + fs.setIf(d&(1<<24) != 0, FXSR) + fs.setIf(d&(1<<25) != 0, FXSROPT) fs.setIf(d&(1<<27) != 0, RDTSCP) + fs.setIf(d&(1<<30) != 0, AMD3DNOWEXT) + fs.setIf(d&(1<<31) != 0, AMD3DNOW) /* XOP and FMA4 use the AVX instruction coding scheme, so they can't be * used unless the OS has AVX support. */ if fs.inSet(AVX) { - fs.setIf((c&0x00000800) != 0, XOP) - fs.setIf((c&0x00010000) != 0, FMA4) + fs.setIf((c&(1<<11)) != 0, XOP) + fs.setIf((c&(1<<16)) != 0, FMA4) } } @@ -1085,15 +1305,48 @@ func support() flagSet { if maxExtendedFunction() >= 0x80000008 { _, b, _, _ := cpuid(0x80000008) + fs.setIf(b&(1<<28) != 0, PSFD) + fs.setIf(b&(1<<27) != 0, CPPC) + fs.setIf(b&(1<<24) != 0, SPEC_CTRL_SSBD) + fs.setIf(b&(1<<23) != 0, PPIN) + fs.setIf(b&(1<<21) != 0, TLB_FLUSH_NESTED) + fs.setIf(b&(1<<20) != 0, EFER_LMSLE_UNS) + fs.setIf(b&(1<<19) != 0, IBRS_PROVIDES_SMP) + fs.setIf(b&(1<<18) != 0, IBRS_PREFERRED) + fs.setIf(b&(1<<17) != 0, STIBP_ALWAYSON) + fs.setIf(b&(1<<15) != 0, STIBP) + fs.setIf(b&(1<<14) != 0, IBRS) + fs.setIf((b&(1<<13)) != 0, INT_WBINVD) + fs.setIf(b&(1<<12) != 0, IBPB) fs.setIf((b&(1<<9)) != 0, WBNOINVD) fs.setIf((b&(1<<8)) != 0, MCOMMIT) - fs.setIf((b&(1<<13)) != 0, INT_WBINVD) fs.setIf((b&(1<<4)) != 0, RDPRU) fs.setIf((b&(1<<3)) != 0, INVLPGB) fs.setIf((b&(1<<1)) != 0, MSRIRC) fs.setIf((b&(1<<0)) != 0, CLZERO) } + if fs.inSet(SVM) && maxExtendedFunction() >= 0x8000000A { + _, _, _, edx := cpuid(0x8000000A) + fs.setIf((edx>>0)&1 == 1, SVMNP) + fs.setIf((edx>>1)&1 == 1, LBRVIRT) + fs.setIf((edx>>2)&1 == 1, SVML) + fs.setIf((edx>>3)&1 == 1, NRIPS) + fs.setIf((edx>>4)&1 == 1, TSCRATEMSR) + fs.setIf((edx>>5)&1 == 1, VMCBCLEAN) + fs.setIf((edx>>6)&1 == 1, SVMFBASID) + fs.setIf((edx>>7)&1 == 1, SVMDA) + fs.setIf((edx>>10)&1 == 1, SVMPF) + fs.setIf((edx>>12)&1 == 1, SVMPFT) + } + + if maxExtendedFunction() >= 0x8000001a { + eax, _, _, _ := cpuid(0x8000001a) + fs.setIf((eax>>0)&1 == 1, FP128) + fs.setIf((eax>>1)&1 == 1, MOVU) + fs.setIf((eax>>2)&1 == 1, FP256) + } + if maxExtendedFunction() >= 0x8000001b && fs.inSet(IBS) { eax, _, _, _ := cpuid(0x8000001b) fs.setIf((eax>>0)&1 == 1, IBSFFV) @@ -1104,6 +1357,28 @@ func support() flagSet { fs.setIf((eax>>5)&1 == 1, IBSBRNTRGT) fs.setIf((eax>>6)&1 == 1, IBSOPCNTEXT) fs.setIf((eax>>7)&1 == 1, IBSRIPINVALIDCHK) + fs.setIf((eax>>8)&1 == 1, IBS_OPFUSE) + fs.setIf((eax>>9)&1 == 1, IBS_FETCH_CTLX) + fs.setIf((eax>>10)&1 == 1, IBS_OPDATA4) // Doc says "Fixed,0. IBS op data 4 MSR supported", but assuming they mean 1. + fs.setIf((eax>>11)&1 == 1, IBS_ZEN4) + } + + if maxExtendedFunction() >= 0x8000001f && vend == AMD { + a, _, _, _ := cpuid(0x8000001f) + fs.setIf((a>>0)&1 == 1, SME) + fs.setIf((a>>1)&1 == 1, SEV) + fs.setIf((a>>2)&1 == 1, MSR_PAGEFLUSH) + fs.setIf((a>>3)&1 == 1, SEV_ES) + fs.setIf((a>>4)&1 == 1, SEV_SNP) + fs.setIf((a>>5)&1 == 1, VMPL) + fs.setIf((a>>10)&1 == 1, SME_COHERENT) + fs.setIf((a>>11)&1 == 1, SEV_64BIT) + fs.setIf((a>>12)&1 == 1, SEV_RESTRICTED) + fs.setIf((a>>13)&1 == 1, SEV_ALTERNATIVE) + fs.setIf((a>>14)&1 == 1, SEV_DEBUGSWAP) + fs.setIf((a>>15)&1 == 1, IBS_PREVENTHOST) + fs.setIf((a>>16)&1 == 1, VTE) + fs.setIf((a>>24)&1 == 1, VMSA_REGPROT) } return fs diff --git a/vendor/github.com/klauspost/cpuid/v2/cpuid_test.go b/vendor/github.com/klauspost/cpuid/v2/cpuid_test.go index 5b810b6f..7c1b02e5 100644 --- a/vendor/github.com/klauspost/cpuid/v2/cpuid_test.go +++ b/vendor/github.com/klauspost/cpuid/v2/cpuid_test.go @@ -34,7 +34,7 @@ func TestCPUID(t *testing.T) { t.Log("PhysicalCores:", CPU.PhysicalCores) t.Log("ThreadsPerCore:", CPU.ThreadsPerCore) t.Log("LogicalCores:", CPU.LogicalCores) - t.Log("Family", CPU.Family, "Model:", CPU.Model) + t.Log("Family", CPU.Family, "Model:", CPU.Model, "Stepping:", CPU.Stepping) t.Log("Features:", strings.Join(CPU.FeatureSet(), ",")) t.Log("Cacheline bytes:", CPU.CacheLine) t.Log("L1 Instruction Cache:", CPU.Cache.L1I, "bytes") @@ -243,3 +243,43 @@ func ExampleCPUInfo_Ia32TscAux() { core := ecx & 0xFFF fmt.Println("Chip, Core:", chip, core) } + +func TestCombineFeatures(t *testing.T) { + cpu := CPU + for i := FeatureID(0); i < lastID; i++ { + if cpu.Has(i) != cpu.HasAll(CombineFeatures(i)) { + t.Errorf("id %d:%s mismatch", i, i.String()) + } + } +} + +func BenchmarkFlags(b *testing.B) { + var a bool + var cpu = CPU + b.Run("ids", func(b *testing.B) { + for i := 0; i < b.N; i++ { + a = cpu.Supports(CMOV, CMPXCHG8, X87, FXSR, MMX, SYSCALL, SSE, SSE2, CX16, LAHF, POPCNT, SSE3, SSE4, SSE42, SSSE3, AVX, AVX2, BMI1, BMI2, F16C, FMA3, LZCNT, MOVBE, OSXSAVE) || a + } + _ = a + }) + b.Run("features", func(b *testing.B) { + f := CombineFeatures(CMOV, CMPXCHG8, X87, FXSR, MMX, SYSCALL, SSE, SSE2, CX16, LAHF, POPCNT, SSE3, SSE4, SSE42, SSSE3, AVX, AVX2, BMI1, BMI2, F16C, FMA3, LZCNT, MOVBE, OSXSAVE) + for i := 0; i < b.N; i++ { + a = cpu.HasAll(f) || a + } + _ = a + }) + b.Run("id", func(b *testing.B) { + for i := 0; i < b.N; i++ { + a = cpu.Has(CMOV) || a + } + _ = a + }) + b.Run("feature", func(b *testing.B) { + f := CombineFeatures(CMOV) + for i := 0; i < b.N; i++ { + a = cpu.HasAll(f) || a + } + _ = a + }) +} diff --git a/vendor/github.com/klauspost/cpuid/v2/detect_x86.go b/vendor/github.com/klauspost/cpuid/v2/detect_x86.go index 35678d8a..c946824e 100644 --- a/vendor/github.com/klauspost/cpuid/v2/detect_x86.go +++ b/vendor/github.com/klauspost/cpuid/v2/detect_x86.go @@ -24,7 +24,7 @@ func addInfo(c *CPUInfo, safe bool) { c.maxExFunc = maxExtendedFunction() c.BrandName = brandName() c.CacheLine = cacheLine() - c.Family, c.Model = familyModel() + c.Family, c.Model, c.Stepping = familyModel() c.featureSet = support() c.SGX = hasSGX(c.featureSet.inSet(SGX), c.featureSet.inSet(SGXLC)) c.ThreadsPerCore = threadsPerCore() diff --git a/vendor/github.com/klauspost/cpuid/v2/featureid_string.go b/vendor/github.com/klauspost/cpuid/v2/featureid_string.go index 02fe232a..8b6cd2b7 100644 --- a/vendor/github.com/klauspost/cpuid/v2/featureid_string.go +++ b/vendor/github.com/klauspost/cpuid/v2/featureid_string.go @@ -13,137 +13,207 @@ func _() { _ = x[AMD3DNOW-3] _ = x[AMD3DNOWEXT-4] _ = x[AMXBF16-5] - _ = x[AMXINT8-6] - _ = x[AMXTILE-7] - _ = x[AVX-8] - _ = x[AVX2-9] - _ = x[AVX512BF16-10] - _ = x[AVX512BITALG-11] - _ = x[AVX512BW-12] - _ = x[AVX512CD-13] - _ = x[AVX512DQ-14] - _ = x[AVX512ER-15] - _ = x[AVX512F-16] - _ = x[AVX512FP16-17] - _ = x[AVX512IFMA-18] - _ = x[AVX512PF-19] - _ = x[AVX512VBMI-20] - _ = x[AVX512VBMI2-21] - _ = x[AVX512VL-22] - _ = x[AVX512VNNI-23] - _ = x[AVX512VP2INTERSECT-24] - _ = x[AVX512VPOPCNTDQ-25] - _ = x[AVXSLOW-26] - _ = x[BMI1-27] - _ = x[BMI2-28] - _ = x[CETIBT-29] - _ = x[CETSS-30] - _ = x[CLDEMOTE-31] - _ = x[CLMUL-32] - _ = x[CLZERO-33] - _ = x[CMOV-34] - _ = x[CMPXCHG8-35] - _ = x[CPBOOST-36] - _ = x[CX16-37] - _ = x[ENQCMD-38] - _ = x[ERMS-39] - _ = x[F16C-40] - _ = x[FMA3-41] - _ = x[FMA4-42] - _ = x[FXSR-43] - _ = x[FXSROPT-44] - _ = x[GFNI-45] - _ = x[HLE-46] - _ = x[HTT-47] - _ = x[HWA-48] - _ = x[HYPERVISOR-49] - _ = x[IBPB-50] - _ = x[IBS-51] - _ = x[IBSBRNTRGT-52] - _ = x[IBSFETCHSAM-53] - _ = x[IBSFFV-54] - _ = x[IBSOPCNT-55] - _ = x[IBSOPCNTEXT-56] - _ = x[IBSOPSAM-57] - _ = x[IBSRDWROPCNT-58] - _ = x[IBSRIPINVALIDCHK-59] - _ = x[INT_WBINVD-60] - _ = x[INVLPGB-61] - _ = x[LAHF-62] - _ = x[LZCNT-63] - _ = x[MCAOVERFLOW-64] - _ = x[MCOMMIT-65] - _ = x[MMX-66] - _ = x[MMXEXT-67] - _ = x[MOVBE-68] - _ = x[MOVDIR64B-69] - _ = x[MOVDIRI-70] - _ = x[MPX-71] - _ = x[MSRIRC-72] - _ = x[NX-73] - _ = x[OSXSAVE-74] - _ = x[POPCNT-75] - _ = x[RDPRU-76] - _ = x[RDRAND-77] - _ = x[RDSEED-78] - _ = x[RDTSCP-79] - _ = x[RTM-80] - _ = x[RTM_ALWAYS_ABORT-81] - _ = x[SCE-82] - _ = x[SERIALIZE-83] - _ = x[SGX-84] - _ = x[SGXLC-85] - _ = x[SHA-86] - _ = x[SSE-87] - _ = x[SSE2-88] - _ = x[SSE3-89] - _ = x[SSE4-90] - _ = x[SSE42-91] - _ = x[SSE4A-92] - _ = x[SSSE3-93] - _ = x[STIBP-94] - _ = x[SUCCOR-95] - _ = x[TBM-96] - _ = x[TSXLDTRK-97] - _ = x[VAES-98] - _ = x[VMX-99] - _ = x[VPCLMULQDQ-100] - _ = x[WAITPKG-101] - _ = x[WBNOINVD-102] - _ = x[X87-103] - _ = x[XOP-104] - _ = x[XSAVE-105] - _ = x[AESARM-106] - _ = x[ARMCPUID-107] - _ = x[ASIMD-108] - _ = x[ASIMDDP-109] - _ = x[ASIMDHP-110] - _ = x[ASIMDRDM-111] - _ = x[ATOMICS-112] - _ = x[CRC32-113] - _ = x[DCPOP-114] - _ = x[EVTSTRM-115] - _ = x[FCMA-116] - _ = x[FP-117] - _ = x[FPHP-118] - _ = x[GPA-119] - _ = x[JSCVT-120] - _ = x[LRCPC-121] - _ = x[PMULL-122] - _ = x[SHA1-123] - _ = x[SHA2-124] - _ = x[SHA3-125] - _ = x[SHA512-126] - _ = x[SM3-127] - _ = x[SM4-128] - _ = x[SVE-129] - _ = x[lastID-130] + _ = x[AMXFP16-6] + _ = x[AMXINT8-7] + _ = x[AMXTILE-8] + _ = x[AVX-9] + _ = x[AVX2-10] + _ = x[AVX512BF16-11] + _ = x[AVX512BITALG-12] + _ = x[AVX512BW-13] + _ = x[AVX512CD-14] + _ = x[AVX512DQ-15] + _ = x[AVX512ER-16] + _ = x[AVX512F-17] + _ = x[AVX512FP16-18] + _ = x[AVX512IFMA-19] + _ = x[AVX512PF-20] + _ = x[AVX512VBMI-21] + _ = x[AVX512VBMI2-22] + _ = x[AVX512VL-23] + _ = x[AVX512VNNI-24] + _ = x[AVX512VP2INTERSECT-25] + _ = x[AVX512VPOPCNTDQ-26] + _ = x[AVXIFMA-27] + _ = x[AVXNECONVERT-28] + _ = x[AVXSLOW-29] + _ = x[AVXVNNI-30] + _ = x[AVXVNNIINT8-31] + _ = x[BMI1-32] + _ = x[BMI2-33] + _ = x[CETIBT-34] + _ = x[CETSS-35] + _ = x[CLDEMOTE-36] + _ = x[CLMUL-37] + _ = x[CLZERO-38] + _ = x[CMOV-39] + _ = x[CMPCCXADD-40] + _ = x[CMPSB_SCADBS_SHORT-41] + _ = x[CMPXCHG8-42] + _ = x[CPBOOST-43] + _ = x[CPPC-44] + _ = x[CX16-45] + _ = x[EFER_LMSLE_UNS-46] + _ = x[ENQCMD-47] + _ = x[ERMS-48] + _ = x[F16C-49] + _ = x[FLUSH_L1D-50] + _ = x[FMA3-51] + _ = x[FMA4-52] + _ = x[FP128-53] + _ = x[FP256-54] + _ = x[FSRM-55] + _ = x[FXSR-56] + _ = x[FXSROPT-57] + _ = x[GFNI-58] + _ = x[HLE-59] + _ = x[HRESET-60] + _ = x[HTT-61] + _ = x[HWA-62] + _ = x[HYBRID_CPU-63] + _ = x[HYPERVISOR-64] + _ = x[IA32_ARCH_CAP-65] + _ = x[IA32_CORE_CAP-66] + _ = x[IBPB-67] + _ = x[IBRS-68] + _ = x[IBRS_PREFERRED-69] + _ = x[IBRS_PROVIDES_SMP-70] + _ = x[IBS-71] + _ = x[IBSBRNTRGT-72] + _ = x[IBSFETCHSAM-73] + _ = x[IBSFFV-74] + _ = x[IBSOPCNT-75] + _ = x[IBSOPCNTEXT-76] + _ = x[IBSOPSAM-77] + _ = x[IBSRDWROPCNT-78] + _ = x[IBSRIPINVALIDCHK-79] + _ = x[IBS_FETCH_CTLX-80] + _ = x[IBS_OPDATA4-81] + _ = x[IBS_OPFUSE-82] + _ = x[IBS_PREVENTHOST-83] + _ = x[IBS_ZEN4-84] + _ = x[INT_WBINVD-85] + _ = x[INVLPGB-86] + _ = x[LAHF-87] + _ = x[LAM-88] + _ = x[LBRVIRT-89] + _ = x[LZCNT-90] + _ = x[MCAOVERFLOW-91] + _ = x[MCDT_NO-92] + _ = x[MCOMMIT-93] + _ = x[MD_CLEAR-94] + _ = x[MMX-95] + _ = x[MMXEXT-96] + _ = x[MOVBE-97] + _ = x[MOVDIR64B-98] + _ = x[MOVDIRI-99] + _ = x[MOVSB_ZL-100] + _ = x[MOVU-101] + _ = x[MPX-102] + _ = x[MSRIRC-103] + _ = x[MSR_PAGEFLUSH-104] + _ = x[NRIPS-105] + _ = x[NX-106] + _ = x[OSXSAVE-107] + _ = x[PCONFIG-108] + _ = x[POPCNT-109] + _ = x[PPIN-110] + _ = x[PREFETCHI-111] + _ = x[PSFD-112] + _ = x[RDPRU-113] + _ = x[RDRAND-114] + _ = x[RDSEED-115] + _ = x[RDTSCP-116] + _ = x[RTM-117] + _ = x[RTM_ALWAYS_ABORT-118] + _ = x[SERIALIZE-119] + _ = x[SEV-120] + _ = x[SEV_64BIT-121] + _ = x[SEV_ALTERNATIVE-122] + _ = x[SEV_DEBUGSWAP-123] + _ = x[SEV_ES-124] + _ = x[SEV_RESTRICTED-125] + _ = x[SEV_SNP-126] + _ = x[SGX-127] + _ = x[SGXLC-128] + _ = x[SHA-129] + _ = x[SME-130] + _ = x[SME_COHERENT-131] + _ = x[SPEC_CTRL_SSBD-132] + _ = x[SRBDS_CTRL-133] + _ = x[SSE-134] + _ = x[SSE2-135] + _ = x[SSE3-136] + _ = x[SSE4-137] + _ = x[SSE42-138] + _ = x[SSE4A-139] + _ = x[SSSE3-140] + _ = x[STIBP-141] + _ = x[STIBP_ALWAYSON-142] + _ = x[STOSB_SHORT-143] + _ = x[SUCCOR-144] + _ = x[SVM-145] + _ = x[SVMDA-146] + _ = x[SVMFBASID-147] + _ = x[SVML-148] + _ = x[SVMNP-149] + _ = x[SVMPF-150] + _ = x[SVMPFT-151] + _ = x[SYSCALL-152] + _ = x[SYSEE-153] + _ = x[TBM-154] + _ = x[TLB_FLUSH_NESTED-155] + _ = x[TME-156] + _ = x[TOPEXT-157] + _ = x[TSCRATEMSR-158] + _ = x[TSXLDTRK-159] + _ = x[VAES-160] + _ = x[VMCBCLEAN-161] + _ = x[VMPL-162] + _ = x[VMSA_REGPROT-163] + _ = x[VMX-164] + _ = x[VPCLMULQDQ-165] + _ = x[VTE-166] + _ = x[WAITPKG-167] + _ = x[WBNOINVD-168] + _ = x[X87-169] + _ = x[XGETBV1-170] + _ = x[XOP-171] + _ = x[XSAVE-172] + _ = x[XSAVEC-173] + _ = x[XSAVEOPT-174] + _ = x[XSAVES-175] + _ = x[AESARM-176] + _ = x[ARMCPUID-177] + _ = x[ASIMD-178] + _ = x[ASIMDDP-179] + _ = x[ASIMDHP-180] + _ = x[ASIMDRDM-181] + _ = x[ATOMICS-182] + _ = x[CRC32-183] + _ = x[DCPOP-184] + _ = x[EVTSTRM-185] + _ = x[FCMA-186] + _ = x[FP-187] + _ = x[FPHP-188] + _ = x[GPA-189] + _ = x[JSCVT-190] + _ = x[LRCPC-191] + _ = x[PMULL-192] + _ = x[SHA1-193] + _ = x[SHA2-194] + _ = x[SHA3-195] + _ = x[SHA512-196] + _ = x[SM3-197] + _ = x[SM4-198] + _ = x[SVE-199] + _ = x[lastID-200] _ = x[firstID-0] } -const _FeatureID_name = "firstIDADXAESNIAMD3DNOWAMD3DNOWEXTAMXBF16AMXINT8AMXTILEAVXAVX2AVX512BF16AVX512BITALGAVX512BWAVX512CDAVX512DQAVX512ERAVX512FAVX512FP16AVX512IFMAAVX512PFAVX512VBMIAVX512VBMI2AVX512VLAVX512VNNIAVX512VP2INTERSECTAVX512VPOPCNTDQAVXSLOWBMI1BMI2CETIBTCETSSCLDEMOTECLMULCLZEROCMOVCMPXCHG8CPBOOSTCX16ENQCMDERMSF16CFMA3FMA4FXSRFXSROPTGFNIHLEHTTHWAHYPERVISORIBPBIBSIBSBRNTRGTIBSFETCHSAMIBSFFVIBSOPCNTIBSOPCNTEXTIBSOPSAMIBSRDWROPCNTIBSRIPINVALIDCHKINT_WBINVDINVLPGBLAHFLZCNTMCAOVERFLOWMCOMMITMMXMMXEXTMOVBEMOVDIR64BMOVDIRIMPXMSRIRCNXOSXSAVEPOPCNTRDPRURDRANDRDSEEDRDTSCPRTMRTM_ALWAYS_ABORTSCESERIALIZESGXSGXLCSHASSESSE2SSE3SSE4SSE42SSE4ASSSE3STIBPSUCCORTBMTSXLDTRKVAESVMXVPCLMULQDQWAITPKGWBNOINVDX87XOPXSAVEAESARMARMCPUIDASIMDASIMDDPASIMDHPASIMDRDMATOMICSCRC32DCPOPEVTSTRMFCMAFPFPHPGPAJSCVTLRCPCPMULLSHA1SHA2SHA3SHA512SM3SM4SVElastID" +const _FeatureID_name = "firstIDADXAESNIAMD3DNOWAMD3DNOWEXTAMXBF16AMXFP16AMXINT8AMXTILEAVXAVX2AVX512BF16AVX512BITALGAVX512BWAVX512CDAVX512DQAVX512ERAVX512FAVX512FP16AVX512IFMAAVX512PFAVX512VBMIAVX512VBMI2AVX512VLAVX512VNNIAVX512VP2INTERSECTAVX512VPOPCNTDQAVXIFMAAVXNECONVERTAVXSLOWAVXVNNIAVXVNNIINT8BMI1BMI2CETIBTCETSSCLDEMOTECLMULCLZEROCMOVCMPCCXADDCMPSB_SCADBS_SHORTCMPXCHG8CPBOOSTCPPCCX16EFER_LMSLE_UNSENQCMDERMSF16CFLUSH_L1DFMA3FMA4FP128FP256FSRMFXSRFXSROPTGFNIHLEHRESETHTTHWAHYBRID_CPUHYPERVISORIA32_ARCH_CAPIA32_CORE_CAPIBPBIBRSIBRS_PREFERREDIBRS_PROVIDES_SMPIBSIBSBRNTRGTIBSFETCHSAMIBSFFVIBSOPCNTIBSOPCNTEXTIBSOPSAMIBSRDWROPCNTIBSRIPINVALIDCHKIBS_FETCH_CTLXIBS_OPDATA4IBS_OPFUSEIBS_PREVENTHOSTIBS_ZEN4INT_WBINVDINVLPGBLAHFLAMLBRVIRTLZCNTMCAOVERFLOWMCDT_NOMCOMMITMD_CLEARMMXMMXEXTMOVBEMOVDIR64BMOVDIRIMOVSB_ZLMOVUMPXMSRIRCMSR_PAGEFLUSHNRIPSNXOSXSAVEPCONFIGPOPCNTPPINPREFETCHIPSFDRDPRURDRANDRDSEEDRDTSCPRTMRTM_ALWAYS_ABORTSERIALIZESEVSEV_64BITSEV_ALTERNATIVESEV_DEBUGSWAPSEV_ESSEV_RESTRICTEDSEV_SNPSGXSGXLCSHASMESME_COHERENTSPEC_CTRL_SSBDSRBDS_CTRLSSESSE2SSE3SSE4SSE42SSE4ASSSE3STIBPSTIBP_ALWAYSONSTOSB_SHORTSUCCORSVMSVMDASVMFBASIDSVMLSVMNPSVMPFSVMPFTSYSCALLSYSEETBMTLB_FLUSH_NESTEDTMETOPEXTTSCRATEMSRTSXLDTRKVAESVMCBCLEANVMPLVMSA_REGPROTVMXVPCLMULQDQVTEWAITPKGWBNOINVDX87XGETBV1XOPXSAVEXSAVECXSAVEOPTXSAVESAESARMARMCPUIDASIMDASIMDDPASIMDHPASIMDRDMATOMICSCRC32DCPOPEVTSTRMFCMAFPFPHPGPAJSCVTLRCPCPMULLSHA1SHA2SHA3SHA512SM3SM4SVElastID" -var _FeatureID_index = [...]uint16{0, 7, 10, 15, 23, 34, 41, 48, 55, 58, 62, 72, 84, 92, 100, 108, 116, 123, 133, 143, 151, 161, 172, 180, 190, 208, 223, 230, 234, 238, 244, 249, 257, 262, 268, 272, 280, 287, 291, 297, 301, 305, 309, 313, 317, 324, 328, 331, 334, 337, 347, 351, 354, 364, 375, 381, 389, 400, 408, 420, 436, 446, 453, 457, 462, 473, 480, 483, 489, 494, 503, 510, 513, 519, 521, 528, 534, 539, 545, 551, 557, 560, 576, 579, 588, 591, 596, 599, 602, 606, 610, 614, 619, 624, 629, 634, 640, 643, 651, 655, 658, 668, 675, 683, 686, 689, 694, 700, 708, 713, 720, 727, 735, 742, 747, 752, 759, 763, 765, 769, 772, 777, 782, 787, 791, 795, 799, 805, 808, 811, 814, 820} +var _FeatureID_index = [...]uint16{0, 7, 10, 15, 23, 34, 41, 48, 55, 62, 65, 69, 79, 91, 99, 107, 115, 123, 130, 140, 150, 158, 168, 179, 187, 197, 215, 230, 237, 249, 256, 263, 274, 278, 282, 288, 293, 301, 306, 312, 316, 325, 343, 351, 358, 362, 366, 380, 386, 390, 394, 403, 407, 411, 416, 421, 425, 429, 436, 440, 443, 449, 452, 455, 465, 475, 488, 501, 505, 509, 523, 540, 543, 553, 564, 570, 578, 589, 597, 609, 625, 639, 650, 660, 675, 683, 693, 700, 704, 707, 714, 719, 730, 737, 744, 752, 755, 761, 766, 775, 782, 790, 794, 797, 803, 816, 821, 823, 830, 837, 843, 847, 856, 860, 865, 871, 877, 883, 886, 902, 911, 914, 923, 938, 951, 957, 971, 978, 981, 986, 989, 992, 1004, 1018, 1028, 1031, 1035, 1039, 1043, 1048, 1053, 1058, 1063, 1077, 1088, 1094, 1097, 1102, 1111, 1115, 1120, 1125, 1131, 1138, 1143, 1146, 1162, 1165, 1171, 1181, 1189, 1193, 1202, 1206, 1218, 1221, 1231, 1234, 1241, 1249, 1252, 1259, 1262, 1267, 1273, 1281, 1287, 1293, 1301, 1306, 1313, 1320, 1328, 1335, 1340, 1345, 1352, 1356, 1358, 1362, 1365, 1370, 1375, 1380, 1384, 1388, 1392, 1398, 1401, 1404, 1407, 1413} func (i FeatureID) String() string { if i < 0 || i >= FeatureID(len(_FeatureID_index)-1) { diff --git a/vendor/github.com/klauspost/cpuid/v2/go.mod b/vendor/github.com/klauspost/cpuid/v2/go.mod index 3ad3f845..68f47a56 100644 --- a/vendor/github.com/klauspost/cpuid/v2/go.mod +++ b/vendor/github.com/klauspost/cpuid/v2/go.mod @@ -1,3 +1,5 @@ module github.com/klauspost/cpuid/v2 go 1.15 + +require golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e diff --git a/vendor/github.com/klauspost/cpuid/v2/go.sum b/vendor/github.com/klauspost/cpuid/v2/go.sum new file mode 100644 index 00000000..0ece4158 --- /dev/null +++ b/vendor/github.com/klauspost/cpuid/v2/go.sum @@ -0,0 +1,2 @@ +golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e h1:CsOuNlbOuf0mzxJIefr6Q4uAUetRUwZE4qt7VfzP+xo= +golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= diff --git a/vendor/github.com/klauspost/cpuid/v2/mockcpu_test.go b/vendor/github.com/klauspost/cpuid/v2/mockcpu_test.go index c44b7fc1..c2264efe 100644 --- a/vendor/github.com/klauspost/cpuid/v2/mockcpu_test.go +++ b/vendor/github.com/klauspost/cpuid/v2/mockcpu_test.go @@ -5,6 +5,7 @@ import ( "fmt" "io/ioutil" "math" + "path/filepath" "sort" "strings" "testing" @@ -163,53 +164,56 @@ func TestMocks(t *testing.T) { } defer zr.Close() for _, f := range zr.File { - rc, err := f.Open() - if err != nil { - t.Fatal(err) - } - content, err := ioutil.ReadAll(rc) - if err != nil { - t.Fatal(err) - } - rc.Close() - t.Log("Opening", f.FileInfo().Name()) - restore := mockCPU(content) - Detect() - t.Log("Name:", CPU.BrandName) - n := maxFunctionID() - t.Logf("Max Function:0x%x", n) - n = maxExtendedFunction() - t.Logf("Max Extended Function:0x%x", n) - t.Log("VendorString:", CPU.VendorString) - t.Log("VendorID:", CPU.VendorID) - t.Log("PhysicalCores:", CPU.PhysicalCores) - t.Log("ThreadsPerCore:", CPU.ThreadsPerCore) - t.Log("LogicalCores:", CPU.LogicalCores) - t.Log("Family", CPU.Family, "Model:", CPU.Model) - t.Log("Features:", strings.Join(CPU.FeatureSet(), ",")) - t.Log("Microarchitecture level:", CPU.X64Level()) - t.Log("Cacheline bytes:", CPU.CacheLine) - t.Log("L1 Instruction Cache:", CPU.Cache.L1I, "bytes") - t.Log("L1 Data Cache:", CPU.Cache.L1D, "bytes") - t.Log("L2 Cache:", CPU.Cache.L2, "bytes") - t.Log("L3 Cache:", CPU.Cache.L3, "bytes") - t.Log("Hz:", CPU.Hz, "Hz") - t.Log("Boost:", CPU.BoostFreq, "Hz") - if CPU.LogicalCores > 0 && CPU.PhysicalCores > 0 { - if CPU.LogicalCores != CPU.PhysicalCores*CPU.ThreadsPerCore { - t.Fatalf("Core count mismatch, LogicalCores (%d) != PhysicalCores (%d) * CPU.ThreadsPerCore (%d)", - CPU.LogicalCores, CPU.PhysicalCores, CPU.ThreadsPerCore) + t.Run(filepath.Base(f.Name), func(t *testing.T) { + rc, err := f.Open() + if err != nil { + t.Fatal(err) + } + content, err := ioutil.ReadAll(rc) + if err != nil { + t.Fatal(err) + } + rc.Close() + t.Log("Opening", f.FileInfo().Name()) + restore := mockCPU(content) + Detect() + t.Log("Name:", CPU.BrandName) + n := maxFunctionID() + t.Logf("Max Function:0x%x", n) + n = maxExtendedFunction() + t.Logf("Max Extended Function:0x%x", n) + t.Log("VendorString:", CPU.VendorString) + t.Log("VendorID:", CPU.VendorID) + t.Log("PhysicalCores:", CPU.PhysicalCores) + t.Log("ThreadsPerCore:", CPU.ThreadsPerCore) + t.Log("LogicalCores:", CPU.LogicalCores) + t.Log("Family", CPU.Family, "Model:", CPU.Model, "Stepping:", CPU.Stepping) + t.Log("Features:", strings.Join(CPU.FeatureSet(), ",")) + t.Log("Microarchitecture level:", CPU.X64Level()) + t.Log("Cacheline bytes:", CPU.CacheLine) + t.Log("L1 Instruction Cache:", CPU.Cache.L1I, "bytes") + t.Log("L1 Data Cache:", CPU.Cache.L1D, "bytes") + t.Log("L2 Cache:", CPU.Cache.L2, "bytes") + t.Log("L3 Cache:", CPU.Cache.L3, "bytes") + t.Log("Hz:", CPU.Hz, "Hz") + t.Log("Boost:", CPU.BoostFreq, "Hz") + if CPU.LogicalCores > 0 && CPU.PhysicalCores > 0 { + if CPU.LogicalCores != CPU.PhysicalCores*CPU.ThreadsPerCore { + t.Fatalf("Core count mismatch, LogicalCores (%d) != PhysicalCores (%d) * CPU.ThreadsPerCore (%d)", + CPU.LogicalCores, CPU.PhysicalCores, CPU.ThreadsPerCore) + } } - } - if CPU.ThreadsPerCore > 1 && !CPU.Supports(HTT) { - t.Fatalf("Hyperthreading not detected") - } - if CPU.ThreadsPerCore == 1 && CPU.Supports(HTT) { - t.Fatalf("Hyperthreading detected, but only 1 Thread per core") - } - restore() + if CPU.ThreadsPerCore > 1 && !CPU.Supports(HTT) { + t.Fatalf("Hyperthreading not detected") + } + if CPU.ThreadsPerCore == 1 && CPU.Supports(HTT) { + t.Fatalf("Hyperthreading detected, but only 1 Thread per core") + } + restore() + }) } + Detect() } diff --git a/vendor/github.com/klauspost/cpuid/v2/os_darwin_arm64.go b/vendor/github.com/klauspost/cpuid/v2/os_darwin_arm64.go index 8d2cb036..84b1acd2 100644 --- a/vendor/github.com/klauspost/cpuid/v2/os_darwin_arm64.go +++ b/vendor/github.com/klauspost/cpuid/v2/os_darwin_arm64.go @@ -2,18 +2,120 @@ package cpuid -import "runtime" +import ( + "runtime" + "strings" + + "golang.org/x/sys/unix" +) func detectOS(c *CPUInfo) bool { + if runtime.GOOS != "ios" { + tryToFillCPUInfoFomSysctl(c) + } // There are no hw.optional sysctl values for the below features on Mac OS 11.0 // to detect their supported state dynamically. Assume the CPU features that // Apple Silicon M1 supports to be available as a minimal set of features // to all Go programs running on darwin/arm64. // TODO: Add more if we know them. c.featureSet.setIf(runtime.GOOS != "ios", AESARM, PMULL, SHA1, SHA2) - c.PhysicalCores = runtime.NumCPU() - // For now assuming 1 thread per core... - c.ThreadsPerCore = 1 - c.LogicalCores = c.PhysicalCores + return true } + +func sysctlGetBool(name string) bool { + value, err := unix.SysctlUint32(name) + if err != nil { + return false + } + return value != 0 +} + +func sysctlGetString(name string) string { + value, err := unix.Sysctl(name) + if err != nil { + return "" + } + return value +} + +func sysctlGetInt(unknown int, names ...string) int { + for _, name := range names { + value, err := unix.SysctlUint32(name) + if err != nil { + continue + } + if value != 0 { + return int(value) + } + } + return unknown +} + +func sysctlGetInt64(unknown int, names ...string) int { + for _, name := range names { + value64, err := unix.SysctlUint64(name) + if err != nil { + continue + } + if int(value64) != unknown { + return int(value64) + } + } + return unknown +} + +func setFeature(c *CPUInfo, name string, feature FeatureID) { + c.featureSet.setIf(sysctlGetBool(name), feature) +} +func tryToFillCPUInfoFomSysctl(c *CPUInfo) { + c.BrandName = sysctlGetString("machdep.cpu.brand_string") + + if len(c.BrandName) != 0 { + c.VendorString = strings.Fields(c.BrandName)[0] + } + + c.PhysicalCores = sysctlGetInt(runtime.NumCPU(), "hw.physicalcpu") + c.ThreadsPerCore = sysctlGetInt(1, "machdep.cpu.thread_count", "kern.num_threads") / + sysctlGetInt(1, "hw.physicalcpu") + c.LogicalCores = sysctlGetInt(runtime.NumCPU(), "machdep.cpu.core_count") + c.Family = sysctlGetInt(0, "machdep.cpu.family", "hw.cpufamily") + c.Model = sysctlGetInt(0, "machdep.cpu.model") + c.CacheLine = sysctlGetInt64(0, "hw.cachelinesize") + c.Cache.L1I = sysctlGetInt64(-1, "hw.l1icachesize") + c.Cache.L1D = sysctlGetInt64(-1, "hw.l1dcachesize") + c.Cache.L2 = sysctlGetInt64(-1, "hw.l2cachesize") + c.Cache.L3 = sysctlGetInt64(-1, "hw.l3cachesize") + + // from https://developer.arm.com/downloads/-/exploration-tools/feature-names-for-a-profile + setFeature(c, "hw.optional.arm.FEAT_AES", AESARM) + setFeature(c, "hw.optional.AdvSIMD", ASIMD) + setFeature(c, "hw.optional.arm.FEAT_DotProd", ASIMDDP) + setFeature(c, "hw.optional.arm.FEAT_RDM", ASIMDRDM) + setFeature(c, "hw.optional.FEAT_CRC32", CRC32) + setFeature(c, "hw.optional.arm.FEAT_DPB", DCPOP) + // setFeature(c, "", EVTSTRM) + setFeature(c, "hw.optional.arm.FEAT_FCMA", FCMA) + setFeature(c, "hw.optional.arm.FEAT_FP", FP) + setFeature(c, "hw.optional.arm.FEAT_FP16", FPHP) + setFeature(c, "hw.optional.arm.FEAT_PAuth", GPA) + setFeature(c, "hw.optional.arm.FEAT_JSCVT", JSCVT) + setFeature(c, "hw.optional.arm.FEAT_LRCPC", LRCPC) + setFeature(c, "hw.optional.arm.FEAT_PMULL", PMULL) + setFeature(c, "hw.optional.arm.FEAT_SHA1", SHA1) + setFeature(c, "hw.optional.arm.FEAT_SHA256", SHA2) + setFeature(c, "hw.optional.arm.FEAT_SHA3", SHA3) + setFeature(c, "hw.optional.arm.FEAT_SHA512", SHA512) + // setFeature(c, "", SM3) + // setFeature(c, "", SM4) + setFeature(c, "hw.optional.arm.FEAT_SVE", SVE) + + // from empirical observation + setFeature(c, "hw.optional.AdvSIMD_HPFPCvt", ASIMDHP) + setFeature(c, "hw.optional.armv8_1_atomics", ATOMICS) + setFeature(c, "hw.optional.floatingpoint", FP) + setFeature(c, "hw.optional.armv8_2_sha3", SHA3) + setFeature(c, "hw.optional.armv8_2_sha512", SHA512) + setFeature(c, "hw.optional.armv8_3_compnum", FCMA) + setFeature(c, "hw.optional.armv8_crc32", CRC32) +} diff --git a/vendor/github.com/klauspost/cpuid/v2/os_darwin_test.go b/vendor/github.com/klauspost/cpuid/v2/os_darwin_test.go new file mode 100644 index 00000000..7462816b --- /dev/null +++ b/vendor/github.com/klauspost/cpuid/v2/os_darwin_test.go @@ -0,0 +1,44 @@ +package cpuid + +import ( + "os/exec" + "strconv" + "strings" + "testing" +) + +// Tests that the returned L1 instruction cache value matches the value returned from +// a call to the OS `sysctl` utility. Skips the test if we can't run it. +func TestDarwinL1ICache(t *testing.T) { + out, err := exec.Command("/usr/sbin/sysctl", "-n", "hw.l1icachesize").Output() + if err != nil { + t.Skipf("cannot run sysctl utility: %v", err) + return + } + v, err := strconv.ParseInt(strings.TrimSpace(string(out)), 10, 0) + if err != nil { + t.Skipf("sysctl output %q could not be parsed as int: %v", string(out), err) + return + } + if CPU.Cache.L1I != int(v) { + t.Fatalf("sysctl output %q did not match CPU.Cache.L1I %d", string(out), CPU.Cache.L1I) + } +} + +// Tests that the returned L1 data cache value matches the value returned from a call +// to the OS `sysctl` utility. Skips the test if we can't run it. +func TestDarwinL1DCache(t *testing.T) { + out, err := exec.Command("/usr/sbin/sysctl", "-n", "hw.l1dcachesize").Output() + if err != nil { + t.Skipf("cannot run sysctl utility: %v", err) + return + } + v, err := strconv.ParseInt(strings.TrimSpace(string(out)), 10, 0) + if err != nil { + t.Skipf("sysctl output %q could not be parsed as int: %v", string(out), err) + return + } + if CPU.Cache.L1D != int(v) { + t.Fatalf("sysctl output %q did not match CPU.Cache.L1D %d", string(out), CPU.Cache.L1D) + } +} diff --git a/vendor/github.com/klauspost/cpuid/v2/test-architectures.sh b/vendor/github.com/klauspost/cpuid/v2/test-architectures.sh old mode 100755 new mode 100644 diff --git a/vendor/github.com/klauspost/cpuid/v2/testdata/cpuid_data.zip b/vendor/github.com/klauspost/cpuid/v2/testdata/cpuid_data.zip deleted file mode 100644 index 2d9a0458a7d00b3c4abc21492303902c37953fe9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 385527 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�t#mg(___(#o|Q3KBE${U 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%0D4UWB!uy!;s`_70WBqH`z!QsGZVcp)n6Xw0Ep}c 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

*k;<`*o4Z`Bk!bJ~9z-9cPg;Q{ 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

?9kKCo}4pCXP! zHcI$pj@O%?Z!y-2cD!c8cc!%Q5C#p~)^SfS=I>(UO$`YLYD~12e%6PRQq`3KkJ5cI zs6dZg(4G_#RaM!og9*mWVBHbLpi!t*L2EqqCmFEmZ`lSuO1xRg7#r)I8C`hjrLau7 zC6+T-l+6YdgU40x-qZ8rUz8QFkQ*rm|ByU1{xNf!9!#Vk@`5jbE}=?%)D_q14-f|r zccT}S&~?+M=zh((6@m{k-ATV$W{1M!o-*?{3+}4ewu_!%B8A5#21i0riU(%&OMsR1 z03#$fD$fhVL&A!0hD?gng8zglOyY1AhN)`hee z=oBPX>9N}v%SQw*%1=l)YgWZlbT`69#$u*7)S{Cgw(yC#sRC)=Uuy-)B--4{ zhUI_^*v8@^5$gJn4@nR_{&E?k|26iC8E+0Y6j<)-0NVDdFRb$RX(5 zP72vwHoc5w!}em20Q;#kE|$?eTy*R>0d1RV!j=Yd&ndM^O-!RS{&*FSIxH!ahFb?% zTOKW!?cc71B$Vx0WWzF2<`oT`}G&+hc@3C^zh zQRz#V`=~SYae9*GM3cBn((1k&AG0^ZFsFI*JkO{x(%#-RBNy?(1zXf~PHaoNx-R_ zA~-|U411KskYdG1Mqv}O;H7Xgx-px-sfw{?pg?e3G9%Iy)Xw>PBgmmujL`mC`Lf?0 zN36+0p*N*6kuKQJpdp9L2vXC7z}%mS$}lQ?ZMS-QnYs3vBj(;cQ5-d)Uw#q{v*|3n!Vf%t8(reVN?q-PZ?B3&aFgT)n0On=rqjC%&XoBl51i%m8V9(Y?CHd4~-LsRyJRjx#8xU*TL>A%Ns8?%Evy=AoNac z6l~8o2Lh(*3dT&SHP5r&ZVQu*#M%ym!rum)%?%ysH=Fs^HYr8GL>iH(7eOSxOwanQ z&uEH5;@BJq;Q0QO^qGgoAiGbwj|v^rFpP7*S54y@FBz$*rPsSF-Y^ASO1~a(1WbuS zBJ3@IntxFIu};X`QcbJT#z zhmOB+T5Ef1n9Iwghts6*AyUI@)5rE($6uJBwQ5GmdqsKxRSi{!OsVf(G)FI0OO z62P1#0sWpIwf~tjRFnRPj=%7H^OF1e+USxEXH&p{`9^(nM#U%D1z0E+aGxkXq3w9s z-5^+OXTuh@YpQpJ!yw`TGac}X~Z(}I-ei(a;I=>Dvw~c3%9{A$0MgA-n z#Dqpwrnlz*Gv1iG)k4sis;orF8HP)GzH+xLh)?M#f~wA@+i18bPOB#NERnj|#)bW2 z)#LK`E-S^Vy#P@0gCV-91F6NbO?T$tTpWhq=@<9T;E?Uqrq}5hfRorc8aHAEx0V}C zR5Q9%#yd(4=!*stqWolRu?<)K7Q3a1wHTTnav|oi6LN8}PwIzQ{t@AD9(3XspGjqKT(dv7eC_-T>&5Mlxe5pJtN=-P@gDo!v* zv;@fzjj|Mm>@F4)xrjJ~5+rvt(aISv0PI!_ItUtzsd-`OhBaK`hgQD4Mn0oBF6w+J z5wG3}>@tYTxEJqGBF%ID_t}JwQ>?tQ;a7uQL0^dB*jKdLFJFTr!TRiAlz{BRi5%;p zA)yo!EzAv3@7e|tzetP12eIYrAKX!yHz0(>jek9tX&Ni{3N*1ZLXGDw8 zz+{SVtxE8l)i1z1>x!-A{ZZO9I=Mg$`dpU`9-KIi+c!dPJ(Fpqln5flD3fp8UlPAl z@uI)WG8RlEJe+1Yq(&X>zu$n$1lk?SDbYJNKO6>6!fR#(nUpyOTMHHl9^7*O63oW5 zA4*HCq|`5nf`uSZ6NCw34NA@3gIOkKr1?c9L6*#5&motRjhU&SW-^~BxCJ=RB=}eS zyS^7@4>$cx?ZKP((?!_sPmDZr8B-{ z0#tn|lSOP~+aU*PBe}v0GTq$1JBzuqc*>E5?P9 zM9-n{`OBD*id?V>Q(`BSPr1zrUK%^*DCYoX1v z0a`v;#10c31$wbqXT|Q!+b<29&Io&Nv>Zt7OrT}&2FhspaNABb+!T8jn$J<5>chnY zzsk_%Vxs=*p?%(pU%%f00{~6(|A$Nt|GK;s|7T2&13aV(8v}#9os9I2EX{b6B0~v- z09Y{ecP#;xY=Gj4(6BWgG{|N7;W|^vD}qEF^Xy_+(@)``ZYE}4FEn{J67f5x%&ubL z+_df|%ev^_Ylqd3wZp^5+QG5BQdesseb8fq-_z%H>#-4GBm0MkMyB8>v&OHlmO#MR zA1jIC+LOGq?e7uVk;W$3shdPP0+OOmbYdChQiAjVd8)Ks$R_+mDT-isfv{l%BteHN zRIAw?2=)Xwjeef+(r^`;*sGD`R9C~JVG0_})NQ_dY8o<^uZqx`por2UBYgpqk4f8z z!kx?q-zvx1t!#r<)kKzWr7lw|cQXTD#DjQ7o``AK zA6xcI$lPT^A0DeI2$Wnd}Rz3 zT)&+5Y8sE3FCcr4Zq7rKO7t?9_e>IwQ(=y`&c1Noa4nK| zou%!LC0*mn9w1JTN#YbOlXg1#iP0h5SG`eoaL*djQU6dv+RSxE8*rSGXQd|Fyu5%; zIR_Qkw{3U+{J{x>03xUN=zWYr2(`83&|%ip7iZKLsp=46YHLK*7Hbe;9MwXDeq&Kr zjpL)K77>QJu0~vK@$c&&O&mIEzY6N@^oY>E7;S~t{1y!UV86z0U47B}h$izx1DZMq z$sge_g`6~6uITrk=yWuFJ>fK3NWTT4Kj^_lKj(%q<%4k*{jKL562=uC=HtG9VInI? zjt@rePg6D|%tZ6w!-QyF{t@^6_dZQ~dH#9(<3-w+`TzYQsr~asDwv<^Ss}y(-`rW^ zWl(LJ@SV(OZTPviwx(U>tvtk~k*r&0yDMn8wcWS|_!c~oljCu_Hzv?6_v<0ZVsO4; zp)_v968t9c3%B9mN2Cs$+D>0|qZ_yS!CV%~#JZ2i-P=;>gKkbohianV3=_{{?E(OD z5@3e0!_Z_sYmM7n8&zA820o&$H|i@XY9<@W)l3!Cl^{=rzYE%iFGU6t1SAkE-%AQ~ z(AE|^n?-G!(4yKu8&Mk`#M(u?uV$bT#raJ(6@y{m$Kp6c%HnPu@}wx>Gf+@$ve?Kt zYU|OA-RaJ6)k>Z0!r!em2kN-a*QBH`y4!N{7KqY?eH!Ec#V zzo54;2wWQ!`Ls-ik#FcZT09L_D&0Ye3CRKhr5lTau(sPrEbPK57zVf)J#Q*!JHYfRk{IIqa`pkH*@fTPsebf&l0RRa!pUYGvo^{Q~Fjw3%&d zfReWcO$t%iUIqYwa?Z4eKplyLAc}vwZjpKX$vKmiBcMKS@TP%8M`t^>R5fiLY@t_<3YiHUc4|9{@ zE`ggt*{)*Z<;7#ck{R0y?s~$8D|=nFqz}d zibf0Xpt@b3&+Ql-KKpH0dF~LWR2$P8{A4DRZk^Jz#s`v#%#hZiKa3KiGqD2ey!q+e zo@Y!c_r+2zG^#?WYJ9pGB%nOdZsM~OF`96V2^eM)LRLEwk&jCk0;J!sH;RTAz~|KD zh6(*V|Cu^;6JmCp0X<3G)Pzi;a{uEfWe*tjagqrfH&esBrLC_1dF+J(Zt}4Kp+pTl zW^HYL{pHlpu7brHnOzqGxIPyG@jrh~Gg}g`e~T2cA^gh-T|j1X&dhi>oKPg?6NHD zfw4$XCR6aXnB8g$aUlMHimwop8W9*DoCEsem#XM1xP3+8zSUw%Cw=5)94u6QWdg<`8_oH_YcmKpQ1Q~_zPh*67w)#Ec@dTq(PrKmFyB<}vb-~Oi ztlHfW$USC&jd4UHQ0m7KW!_lx_D^LX$+|z+mL*3XPEU1Q?`j|wtyUIbCt0ig1csTE z`h`sBX>5PEo(WPfNfxfKE_h!EFNE8&ZMX7w7)&+`ij9QIIY{S#zspR+7n`aIe{4mo?AfXU#ubkTKuy-U=R5cjP)+m5L!Rsm6;bS3{YJ0-2n8T}q zy0nGa6K+E9H0mp`;OQzR=^8$TD*-9ju*tbi&yUwC;WlN5AM!(@7GZBdkPz_gM-N2c zDx1KyvNYR5vDQV$gU;IV^;uCEUoF?B0%}fxP{6C-jAwok z0SM@GWvcgQ0#&dr6YWp|sN=CYOqTTv>iNrGRKsR0MHXZIcDnsMVPIuyEIJcddmMhV zpC$%N79`!gt z<|i2X^6zIZm2cRFtAz*>w|bLwoT7FE5q`z;-uf(_9uJXNl7`!cG?xN_tZ{sWm=}aq z2V+j#7+rGJ0k`{Mhmw*KZu`=npN@+(e}3ehYX+Uw0Eb_l9NA|oFsuOv{aCj-d+p8a zNzjGNXIdgio0DF4qp4PfFSpOowE4dX1_JO4!h4)#TSC%-80Bl6vu=8*&87$cP(VI^ zD4@55VXgD%Nb~=J0_x8;no(8M;W$k20l}S^PP8ScUhnj*o!fo+W~_MA$tJOHF?~qk zL_0Vzv%lCfTpRPVvU$V%#q(*4fZN3vixIKk{udRm5QStsXsorqAAW(rgGto^lwV%gWEaFgg(7+yQnm zTeF7uKiHsN7ZEFZl|_6H(6gXgEbf5X6m&!Se^O9*Q;U{awe8?%XifUuAWaMCR@MI` zukesoG|`%h@dZ5$tp>*RPAmHtasEjqiL>16n4VS%dW8I8zB<5Gxc^B)iTAmDt(?AJ z%{L>6g(0IY>g+ok{LV8mnsY#02nb6wNt4&T*t~Yg?v~1k69g4I#}N zK-7p8>0><^9vNtnTqSBDq6=k+h~P5;6j`B=pCn9cA=IH$m1`F4-4TIg5#xai2YI^{ zrp>8~y8GC$z)|fXlZno;8S@#83MTU%3K>3+5C#!6S|@;aU;_7n`Ri29vyYPmpDIBX z_>9H@ZyxNBo+I|p9dbybKBRd&YfOwW<*5$U2(n!p;-n>qI!Zy?t+t7kxsqblS*F8v zAr;?rGY4`QBnoI0mfVL0!}-tj#j)i3INQ6u=hvLP^-?{DO-dwu3v=-Y?k8gss{Gow zz0Dk${${@&>U8ui1sd4`8u{0*F=o)b?~3;89jUNbv>7V+C#zm>-d2IcfXGvDAdCM; z+*=1!k-h)pfONN%v~)L0H_|N#T)MkUP(hGxkd{zVB&53=q#LALQaZi^F7I7jciqqL zpWkrqWoGW2=XIVq&xtuv7#~35$6II{`c7A3A`&P4{u-(sX26RW98x8CU_)JQQTXD( za1t7liUM%~;(S!6t1_@B(l~U&-RQQ~;y#FlQsk|)w7%tATNDp)=DA5fGC4&nmXm$t z)aiaB3#}9c6GAe`_YeY}N%gwls>pm>;j4QTYVl0^(}{Fje;2AvG+{)Y4G4CD=-j>+ z-8}=FX9E&=rZ{OiJw}epf&yS2VOt?wnGnLQ5PB7j$^zAT?fDh(u(%Dx1T81X?A>I( z#8S-2KI9$N%qoh)Oqt=Wv{n?8duD-oOIl*`TPv~R=FRuzK9^hq%(rqVy4T|(mcTb~ zjPy5$&9}_Oym64>Uc*i62z-ID*OC>E*6l)ydmaMxQ+2Z%sQ{|&lA296j=0`TX z#^`|cB~fOXWNyYn9YEaOIzh5D&?L=&Bi)0EB4fY)B7E6-a_C*`_o-Lg9d{mx{N6N=?hB0 z)E%43W|Mij__r&YafYIp9KI4>J*4bGvRBR_6+rni?XsOo;K=Xg^Es)Gk)~6(|h2w z)AGp*nA<@KZumrogO%*uXs;UoV#T`aXpVVxQtSYCZkRy`g}Pb(KA+@7x};SCxg~dY z;gOE4lOpWUy^#n561XGt%gdg#vZiUS={l*Ch0ZGNZ%N4Po0o}tS1goi+rx?FmLvJ% zu6gQ@XU*x@yQ+m(&3Y{QID1yBH+y!CHr%}pErodrtSQEyCHXHMsaeaIUZn64fiCJj z75f{`pFi6K+k3X2?^V@i*0Elm-{n7?-Oq@BVWy%6W}j5*$<`kN(W3X@q_|E%J~B)N z;y(7mxiig3VVrj>>^W=1mG(b4?D*+HU9bwAG^{tH39h2#l!w! zsvCd(g^yios+)jaYL*&!#Ol!6tSO!~wf(~7!Kfp5;Umja^%@7qg36pB|1*`1u`H$c z`8g+M`3X<7T21q-d}qI8$t^u92iv=kwv$L_4AYBTEta{$oo?=$9>}%@}9rbTQQWE7>#T zNbMu5&LX-D_-5_x8lpmfIYzs>%e8c0L0D2=YTk`U5i6Xmh~_hLGJJ&fEf+}*s(d~N z>-5JsbNvSwC^Hvdr#-l)9=V`34SQ^idSrt642FFp0(Rl;3kmSRXY!pqu_@r~B~sxU zg-LwgT>K^o{$6C9fL~_@1#C%2R7m%64J=_I^`SQ6VSv4RU*KH27*hPun=c0bLgXTW zSwbsr43ddYG-Jw}E1;X1eV|)l2Vm{q;;blh4^c@N60i~br#@MOj}HrZsVE{N4c~_L zWLz>QX6I|GsDQ^1+`i)5N4oUzg~);CjZ?@{PmCa?kSKu7)ZwKtkUK?9m4m@V(ZY@N zECh_;ZC4vvV!MdfC#;^h;6cZwgbvFbb@QkV9`!KYk6#tvr1&hQNppCcy8NEF5pmOFO?SrCT26aZhJB z_Z;aUB=o2Z`eeVMYaX9T^bjYyfQ zXModb;`JNE^b=K2u8)0=&>x(g8$0*1vDhA)DRjkXTlPxRcW*lk*?KVfxYYT_-G^<< zbxnoeuNn$#fZs+ExJoZ6AN}#;^_}adpQ+keoIEC&JSQT!iCFBfpWyZ8XHxD>{ve{! zEw=+aFecxbVf!_ck6`)@+EJEZnnPRYnU8w6xEvQW+Z-SFPL~ha4u(kKYg;Z41aH{X zjNuaSGlndWu$~H^(823-*(R;S@RUF5P6>7MLOC#D;0Ns1QJo{;^v!onxOHknTP?Xl zm1yGJ$`PdjiwHd|jlxc}2))OIc{nJq?S&0>)nx+}VoFrhXQ9(!xE8jJ@N5If_Mc^c zf4Rv83(Q}jxdK)`6~Hb?`tb3Hzwbkv-Oksz^N3SA<*5lxU&4A_Q{U#tyYzy_9bXeR zD8}R&Fo~7uV8|(L@-whfn-ebAm!e6Is6KzGsYC0}JMvxJiSo^mF@m*{+KZ{C073iE zWt*cfJWN#>*_INXU^@wlXlLVK7iJ%4&X}G~+=6t@MMqL* zJI)M5i2~{&a7hb^1gDof(qk`k!~`;y_Bv4qyPyog4_|f{*3v$f;w6O=(s)JUnaop% zK5DVID~%1^JmQ=-rr+)_U>_|ra>ioIO;wUZVyF$8p6trne!j57Zs8C}(&XLrxu?z4 zZYF9~g!c_y1Diewd#%mjT_RFP@g&u*;V15(!J@aw+T$~^zU8Ls1Tf8_!UGvu!-Sr`+qEBME)paejcF-vYuc<1>12ZuWgca zAJ3?)Demh{$wc$6GLz0JEn&<;!R?tac_SP3Z8j4mB-DziUilSnhQTilZz>0!&~?112zpk{0A3@?_|leE1B_H;>a!$|8yWR4l7B zE*=cci0H%Xa?_R~3?*8lhp6V7&xpF3o~pAzsj}x=dds|y4t3NN4{Ah^ha=UKMCUc2 zA-|VdX1~PouJjvpRj7#ANO?2djJD(^MM-EQUmx?jw-^*WCMj7NiFc>4WTbz!7^>bz z$gXWq-pUSL4$hu$7(kg^O99f>dSuR^J%Z z+P>CkkrOpGFJtb)BsOS!Dlsw>s_#0#@O6%n$1B|Vet&C9Vl46AI@P9ymiI&%j3oNN z013H%mh623I9yX|Vg1*ns(IuAd%~#$Op^rc+O=L#BN1W+o-H)cV*VQDm`}R=X+>Nj>Y;yxO;^}4B{9vu z2bw*@n!Mtgy!PyBe*{M?HAek>+29SR0`RJP1+lON_itla03zkM#?-hXK7nH#ka9+o}h24A(J0>Njx&0%ixMq!-?f;^(s}U{a%LZ-*deS;1UWzXu5T<3D;-Wp(?0glth;Z*YV;T7y!263^`(bi)miK zaBssBaU|REV(l7iQ%+#Y<$Z1x{})XRO;oSb}F~w^pZ>p*&F;qAr{#5}gYp5n3$ZX{Z{xmQZl2zQLZR?Fyga=ec~myIe4H^oLwND< zu!P{$?n~Eq@$cqDqer$2eDB)oYY9sBToKpLzLbX!>eD?xNsI2&KducWIuhg+TkY~z z`n53xk$ATjh61l-RNZwEj1yE-duZu{Pk=(1If{#p@%bO1$ zzwhN!YE48^%C}c1jt_{2@_+0*&o;xV(2t(A??ag2LE9h=MjWI@;<^=AlBjx zRC#NzeeXomZU%X!^((G$T4!D;Nfvc77vd8M!lqboaLJM6W{GcM8nHXC6vHg>_?}75 z57d$iCXy!yeT01VBarUYKrbeMAp#} zcsT!gKn2gfg{t@_J>}0121A;E)u6#bJ4F0uTeA9cQ6TIK#_}^7!TE)y zWiCfabi~%z!m<68RWuT&2D(kO#YJLgPDTi=r!Rb82!vVIihVB-8#!LU+cgP(A{X%> zFPwO$(PGqfBdWOXnMKR$k>q!1UN=Dr`a?f5WBpuFK|(chv7A>?;BYLBkBI#t$3GN< zm7>{EoDT6#b6`9W7i`vqfHuxL7ERp9p-bN1mtbRfgbfKZmkKKsx`@NaQ6!JAq4I&) zp8;%`Dg1u6W1O%X;rO8`q+q9qt*T|L;4q)cp(YEt+J@i{|aRTkv&wE|cQ=hDo`SLJI3RLF0H1qaRrTxFlg&4=X;GIYpFx*|ic zqBj;Gz>-$I2;OroK-+Rch3GvSOcKaZYxGzpI%L=*S@F6%X`^xO%Puhn7?>Ib#P64E z6$Ez1W(R5nmWB>@D+E5uy4Op#UW7Dz;bdPg*@^*SsG!0Q86*18-2ubt)5p_>gtuQO zb;#PLijFoO+wQRUXKP5k?XNzfu%>YGHM&5OlaAI5K)=jpot7;tR$);)FkyZxSfCAw zK@>x}@`@P>L>a>A)OtDentSl`WE^WaA$CIWaCg0PYwu9g><-IrRgy6S%ZVz7nHY~s zQItCpwmsa}^xZy^5O*n$QQS!C1B%O?*BhQ?#d>(Vn~CcsV^Z~ai$dLa;hkk$)KlN; znecd3Di$xA>lu`*3~-*bgypJ(Q!JJV$4;T|oq@GJy`Oew{RJPRoH*`agGI2xbesyK zlWedc^^*n8Xpp7gckP^XLkrcH8)%B&g+`ee_bZ^T>d!TzG;~4326`W4E?JTgb1b=b zVNgX=U{Kqnid~I}=B%z_Y8SMx&=8aP5|EmzsOoLhf$_`4Y4g>Y*?hDgj0*JTyP;Sw zo!Y=qTM4kMs zb}&gWY(B69r+Jlj&Xy}DCEhzm zhj#XDQ8b+~WdKb>5v|8yJNbEgQ1wGcTSUdh3pcuBt3Cek)^Hu-r ztaki;=7`h!0(6yel>0@m={J=<)kQWylRD(AsyH?+_NROKxaUjy_g*TmpvOS9iJ+FU z&%I1}@?i_SR=fY>q7ceH}L5}d&W4p)VO{uYyH$Pg^;nQF&#(CQkrFlG?6t= zAMK-U_!z5<#!BT~{^nch2`%s>sCqoK*I~ro7BJxm3>OUV!K5DAPC91f6k4Huc9`9% zv;q@2jW8%kv4hQ_{z57g0uGr0ss0r)r%$cXLKszNr5sB)ofCZx0-{@|d(NnHwtPy! zC!vWndlg|DCOIT!=D~eTunGupXu`m;NGwcVfq}?-eZrfI0qW!t32Cp==R3cj<p2rpX>`OX6XjG5e26el2 ze0WvG#*7UU3lt>IGNjHjx|9Z@r_ZP}>Z1p@bR*2{Gi|@3HohKYw~y9(Lnq9H#|?Ij zTXnx3%PIY7MTkgtWMgN{s|Ny$NT2vg4oFi@lQB;UKW?P%?FtCVAR!ADHfnJ`jQ-Gx z>N;s6&H;;IqK-#m9sH=ft&?ZrsYSkps6g~`z{~KMc!6~sA;chN;ymPiTehQS^nn2G zh<7c4fi5&v&nztGPH++sx?4glM#Tj;pH6(ky4sl6G=edN)e*c5>vz2xTz45;ZdGck z7RXM~AoYxxv=(kU5JdKT2Qyf~FQH;6(#vs+>riIS_`4!#c`8M7LS zeu4?>DzyK$`kkL0nWBFP`KS-X>pn4PU?JW`)l=m#3fYS}fp$7?4|lnx`6{8p;KR4t z)AR3>>1B1}#VAUWX*ggy^jir$i@_JM4iBbS--aS(A*R;Bbb?_DfJec}i$PPRBgun7 z{TX6V<;6r3=`dn#;9_k$B5XSvA8P(D475Hp?|%5+wg>|L9atwMl{qvO?K?2w{6~0# z|IUKs9UYc!k?nQl=7-N(A3npsp#)stgiYqysMZcX@S6ymxbHSCUqDd(8SH#s6sb0M zFki=qizUE~C9wPx9Y}^5=QYTA|j zp!5UWrsILVq-o+5#!Z4dlfXNX{(?OKO|^iA-l@$@*#{?G4=G*0827RR`xMp?4sIzcEAj}ELI;9EXRo(@5$Wa(xB$Wc42Ahk z{J0;_^Wmm?{1hJnZYeJ-a{G_?J@tzScjLR?#83DU%M&;C{BHauShyvctjJw33?}f% zt0n^;bS7LBCUD^DM~LKO;?`%%&WmKG5F)`8B8dt|>m&yL--b1^C|dHUsx;Y{9}+O= zs5kgCHU`t$y~xMVkpqv^DSt#~CyR={mc);6S!fK62iu~9^ZbL?WGRvjmZr!$JA|9p zMCDFL2obENfNhAk*Y27o)zveq$&D(}nMWe6Dwp<7ms@O`!BvloP1wrjJ(I$ z5^PJz;YXQ8naA6TtFS9ko)SJ3Ig(tDtG>HA|5jm0X(YKFS7mp7{%!xzAW$L3)!O|w zAEoP-22B~y+$3#lZ`%#K{t|;e5e+MpuoqX7*Cs8RwP=34i90%KO>sH%F`C1?mRk7(zY;n15US{&G+^3b|1HFajRi;~rL86YN& zV<(mmHg=bUsJ%zkS~JNwT7)MIaxV!}>j;jILa*FZK%Qx!D7mItlUyutgn8*^Sp%Q3 zdvS3%pE@3fk=7X39uLhQ@el8<<(>q2MTK3EHA&lTHK)TIpr@jt7d-fQYWx{iB`~Mz zy?*J}B-qb-tzOSqtukJ>_Scah39U+E?KZ+9&GelZL`^-f`w9!n+6#a;t9@aF%c)lj8@O=(n zqSlO_Tat*d@>k7itaNhGLE@ChWFk~N+v zq5i-`@Rw8xqDYPyD-_2J(yYa&Xlv?OC9(|akRb!{q_J_-&aVUxM25&hh1tTgABl#< z9d}_zl3G!G)XG&{{JtCLE>CVUPeAaEx@)htoF)RgFczLrHvG)NO5%kd29tqAco9*0 zPFq&wf@{!(S!f5txySt~=8EI5|k4R?{ zawIfRGo{)Q(1S<~ClP$SaePNQxuk3@Ow&$T?2x_$u$z5MX@|9ta+T9S%zCpK$oWYm zN39t}2-?FO?c1|}Jfh+IDqc@%A`Zz@dRTIdjd4JOZn6P+*f9Ij&DMdDOp)>)K4ePr zNwzf4ZMJxE?WF^nRSX5g9Y(mJ%X(NcB>jmc0>w*1r9@p+)D@Z;VV{YcXnn!Ak0@K^US66`skCi6~i8gXFO%oXR=DsKC zfG~+@>BfN6SY##XRk1T8^~9tArmvbZar8G~t)sdO0SOkf)YiGO>5CftozE^@EA8JW zJIlOePcCAqW}O)67l|#uiCD!(T4;sGym~IyS8+k6wGuL*;uYx7b)+2dq$`qU+G94Z zXYDwALfG8|Ws4oI)t9qlvnRmp3Zx)a%%XmIm}>30|oX{9&pY?c2= znWPXUWm37R0loQqRqNUj|08uHYpI+M$6>N=7pVXQ7LbPPptP!%q1ft^HAPxD^Sq?oflRK)aDkB14CdT}OwOCbFTlFB>od3IKxFv) zWni&F^EtTx#n_wU$=)ZG`+9u`9(cI_Tg%dNOVBXKV5EA6`CFD6_W;UTX5N!j9#gO6 zKTzg{YeOk_$nju+Xidj~JhnTF&5=xL+q-SbzzpR%2=E>a!*q+BakwqJH$zn1tW2lqb*okMI7$Hvj{-ZUsCZcgqc0a-z$;P}r(?)Y#TU1||2C z)r$6_Y2Idxguk*6pG+Qn-xcCo0Fu{iELQr2t61PB9FQka4=xj@$F{k!l>JXy5ONx| zfMm&s0)N~xaIu^BH`lU&qtS0UXP2vHW?_dmU8q9uv9QIcazOKw| z2X_nxM+OEr&2kP~LQMrfQJhYVIuoxu8WJiku&sT5(1rm2{xaohGWGDp)Hy9t@w*Xc zWDeQk<`n)+d}HG$uECM3#9`sa4W9_vixv{>iAXfmrSO&9 zCd3ABqfI*mg7T%kkMn2>Q4Il%KS-$o?y_ihR)<=S`z|?j#=_+0+b}*|&eP;tU z(;XQ?{H2o5hDj~*lo*$sEc7=$&+2_S*g?>t{h@Gn-z5!LE%Ko56TgxW=yk65=^B|Z z>(Wo!N_vrpmZ+1AnwDi(pw|PUdWRnQqzXyHS?c%n%adgKxC&?a!AF|6u=_Y=F;!>> z_(4TkeVw`lsr z(U(8N1{Ev`{{P>Vn{VI3QO@gYd;tdo3&g&iNup|M=isPoaXn20#Q4VrF>pc51RP>) zf*>Jb85S;9P9dg0XOe8aRgh|8LT#IcIYWlw6W?YqP59n1kPQ#tl+E~FAWk0{q0@ob z(=Ea30sF>hRUO0#h>LqCT5cpK;8=}8koh2^eaRSMo=QJ5ALXd@*^Q$jo|I|^VI0HA z6$=h1AB;C3>|C3p&u@)FUy$$^oSgS}Gty`xfsc~q4ah^%=y-iSdDXwqqg({*xvBJ3 zaE}R8%{bbXsfwgA%B2=AAYy2T_E}5}9n)k;#6VC};9iu31O&5yWi8mKJ_enHZvp#~ zTKfjXiPpP!2pLrZ-VE|XPytl}O{%Em3+4jSBqv`4Peak8u(x-|KltSLIz=DM_La^& znjBd-c=dth8LD4>xm)u$Fu12p+L|20%vw#DG&mk0h`lyK@e#>B zmX0Z7RMdb9%Pakgx%zajWy$!Xv|nI`SEWSIYP#7A4G?)z>N+WN5qm6}q2+r|IX3QS z4esc}Ib}Op$D2Q1woE(P%ssxu&fe@Fe}2o#V{)Yr_3pHh@*hdW=0$4-H=aM<3BTXI@rJeo5^ zWoeyjWmyl=o#60&9&1q)TbP|R(pdFd2Gcpd@CA1~Ap4gk)KuqtD4zPC_r%#$gJI96o;2raKDH_C6t^U($itz+)`u@59VU)i6E1OiAx2q5Du`?_ZLu z+qL4`;O!W!^}VNwCT=;n5T#kxhNyXW$v17zKF+d+#K*Octl>Vbsl(o9^ya*in*d~}*q$`jmD z{xrFKQ$?88=}WDVuw4NMDZ>XG{l^Cdv)XNbAm6w{T3ni(4bdVy$O)WxwNl5%@hXyCo2d zfE}5r2QN+!*M8=U=9%v+4a$qwPP7x6NbG6sZ4Pg=$~N%?V+=_m171!S73w#{)$aGP z0?kmXPyR1yQ-)D(wL~CkoirEqf>?=31sp}75D~)26t?2g9XZ=yWPuqf?Fr`7CH@}}o96MWBb+IqqJbMMze-#&ZiHQ$fY>%es4i?tJ~g~Lx~zvfNk0%@ zL)nYsw@Gb-rf$c6PygiE7h_9>^Fl#{J@K{B0itE4OXAmr_(p=IRF(=8jcy~@EkyXL zf|pbm3a3q;okX9%=r=L^h{)A9k#?-#bmDdMV>-87OWSza3*u0p<#&_li(ms7C|5nN z+hkFp+8z7K*fb(@oz)u5En?3=TC7=D{+v?XfEho&OtJE1n1>Yo z(|9tMDh5#`bk8bWB>ux@iHCJGrhBH!xtJ)W>&*olEEKyuweC`z3A z?&OripcZ)&^#OGEC6g=O4#XDV%v^yLGk@#MeiV3rb7l?^#*qnpz$(%1zS{*?5mp%f z$%M}Cdgb#m$*TgT(f2yY%1_tGcGi5&^XvCbj>_Jv)YLY->P&=7ZVH{oNY`aMeE(D` z!W2nc*nP^}9r@rS-uB7E#L8vbSqB~zVL$9<69=kL&YBL96j!7W(*)12pL;F4Oz3ds zn$@)faf+S>Xy(Cx!4rFjp39FBH+IC#!7K!u>?XVM2CMH06Vmi_O4HjK_%P`CU0Eon(RrcE&oKpOf?FEEx&v>ZpAKm_9bcEzK(nw2yJSaG2?C)H`)OT}Smv z!cSt{x-hXW%pA6>LT3jhnWEFDAs-gJ=C$lU%cdWkp>#my3fXG1Bhae)pv)5S$|-ol zqyk5@CW-HYrKZ6aLpYn0OI!E_%&|rl_>NA^gyu?la6j($^qUXp^i|K!+$?aK#uc&%!N&XOyxTKccuw(YHN2tsS2fpc(-W*f- zxU3&FYhY)0_w%!p%|^PunE}K!3Cc1X^0PCtS@-j3&9}3rPbX@i-G*(9GUh7fA1x?T zi@vvcO*qg^RkY4|y=lr=G>y`SE>XKoG7Jy*}NGa&LGVs`PF_=qz0|hkQ>o zfkwf(s9B*LssNB?xJc*1LTHJGs4O zWeA#?%twI4Ee`awMlQ=T!Qn%^vNu5{Y{{`8F?SlF(%h zqZ2#hZD@ou)0FzNSBFZuqt)zatQ)flk^*E!ft!=d$_gFXX>geVrQBG5+%tTb*-4Q| z1N`Jb^XU4fN_1jQyiJZ-!ZnTSn<{E{IaZC?l|bL#55mey9oZk?GUKtiZi#diZ`0Ny zg}Pzv7;^J7FE+w~r(V*jq4VcVG{l7#bM+2z9oZ7Lx#HdDW0)_OSQuzCB#1TDJSh)Y zpa}*>XxM6I+Ab_mge1UzOQ8j6kO!XmwUs%aacY~_>w8{7_qJGrHot|=Y=UODL7RM$ zaz0pzjl&x$sl{E>N-U9mo3jtJzBNF~wr`{sZ%s}vOmi|A`O*=kY|n<-S#KL%9mb$? zt}HxXu>iK#ddcpf&nK9>l;lNjL%qauGGtn#ZR@;0^)cqdhtzdh&&ZGloU8Y*2tL5a zNx|vYGa@|{dl6T`@BLVKM2WoRi*i7!ijqsd2oIFlrE|byHf9F~b%W}d=Q=8znkWx~ zScG~wd9o5d#R=JPqydBao})3N^gsvsMbU5v=}BT{N~ZM>_jy|v)J{7q(+6grTL3eJ z|1a*7{jaTs_?Cz%CQQ+zmtH`(-($3XmuOuh;5a^&SdfiPYsV6O8Mo#cJZh7#V7xSc zQi3>*QS8mjR8r;T^1RsH5ecNT=y7G^zTZs$QVvozmz}@%?AU65(co;p)W^SPYoX^t zi`Z%F+kP%hH-YAs)i*F|UEpV%wvQmk$kyERWH)$vHl+uOSV0oh{$Dw=tVBzEmMWTZ z6DC`i)x41>R#!2SUSF^>-1os1#+ic}_QiQ(3dW4!h$>5!iaijrUYP2}E(~Ui@H+P# zJ%T%|^Q8l_f!(_hf-F{;_1>3m5yVfE3BiR_bx#^rhxxPKmFl@wmZ|H;A2|UNTIsFRzjSNp_>{`rVuM9h+uiTa;Z)E}Cv15{N0e8e## z<~#66S=ud7#s1<6rk4AuV>Fm-K@x`dbSXhS?y)hx@cGLn_)I?81+I^6H~DYf_S*ta z$iAEAarv8tG{RUuhK2IHw&>7YuKab|t%XM+8?fJ|vC;>XB>RdeS=qdGaS{7;M4-u7 zaiSYcQcj@n8ZCmwxCJni0n8lu0Co#BV8jir98Ccy2T~LfzP%tO1}?4}x$ImV*Z2Qy zyx1edes@q{dI3R;(8iO`tY zGcTNaGirbR9CIPzT#GnS5`v5Y4Sv8KQE;=V;gFv=ohe{qlao7h&*PBrezk=@d8V1R zzaB2W+9o8{ftGP*)Dx2r-PHQZmdAbXl5K5vYO`n5{qAY3a~nQEz|3?XYx@wibKiQ$ zsI4iG*?81baXJD4Lh z{WOu%#Jte_FL8TL3OB}j&XpwduzA)T&lDKH`Km=ri8hQsl(R_L@2p>hTq*O4yoeG-)tb&PMrPH3~>e`6fVknbD1dT);2h;hz;+ zvrzEEpTbZ)rIVKzHh6HTi)7zX;*fN8*R@La-EDc17#+b2n85<4TBm9! zJ9s($I`MYvN22Y(@JW&~HD~9I0#hc>&`S;qG0(_q38Vr$7wBiHxQ^g^WrL$Qsg{E_ zn-V@>ZO$oieClVG@d*g=7ZwZ;BDR^vgJ+&2fjU14rvPgK3+_9j+oE7eBf39JRTi?3 z4&)M4@vM_JLUnhK6+IlG*({U?W|Gj$E3>Vu`w=WeMoQ&@NzAk&nxVKOxnK{YK2g=GN$u(&mQO8@GM_;LyxOv1IL3#49*dCMZZQ825_kQZkKx z8047rO_wD!Rm;ttvdtzah71dS+%T3}G#tT@q|NcAe`{D>BZ2%Qb|K1Op7|l9F@!`t z)O4MSq;bxdSO@RZmkMGb?y9FC>UESTpdK|qJuEjl|F0SB@41bO=~_LKl7HqmKtThu z0;oh}tge0^li>I!ORpMx9Q6rvGOaUAIU6rrW;<~kFj&4lWcHK%F0P`y zsoEuVb;U+JcLR$hkKsraVlgNIh6sl}KA*$lHM>{ywgqciC3=KMyafF4Nb?0CZeWF| z`~C|G=rO~ys~7X+h^927U;TY%oK;NozPpXYb1qB{%omk>t~9y4+C%ABP4hH&IAx@T zYF%xss;={X?7+hiw(D70O+)dtkz-jSHH&3HAK%JQI{LT3*m>@-ijImx1 zb-(9`6_gb@=TLW*g54a{zyK)26!@^-C`HLs33U5m1Wt%=KR;X``}L3Pf2~5?^~mk@ zLu1_oLpYHQw?4RD`A;7V{*wp(Xq*1|+WS5RdbfVS|4|w!%eZiH+?ED67dP;1tRP`K zM|MI|>#4e89j*xtj&W2am@Wn{^bN1yxI z&AluFBVq*y+iV#96pB)t9bfuQ)$;9ToH=J@tg2TxAmlca#C>@>iXu9V56+~sQrp&60C+BULFH_ge zpWy0mUp>`Q-MBvt(_~W%N=g3Ind|wkOb187)v=^<&F)ai)$#Jv?3k19R;Rw`6jja8 z6Fk}Yyh6K%=pkK3eE;U@44zX&1X@e676~72sqv&136XnfdK_fBtbJz8(M}_QpS4!0 zigslS2d3m05otQ26^SJgtQwQBeHHsJAH&gRNr=wL7B+ljJgOs~_yYHkM27=C{64i7 z4oiT3X==q45f-scoy?^RPjYu$1T3^;16+GV1VZh1sX_cVLriw+m~(zos9+Ec_jLr@ z3njKa5>W-+;P`5UG8`(e z-n=2NLvNlTiJw)4i`a6G6Z2srg;;@Osj?>_%ypPL$rn?9MfZ)Q^j!-o$=IACCR`E! z{l*K}EpdZh5m=7mm~#0>GR1Cmk!kye!oZL>UvRjC;q<;$yul5)9Go7WYs$`3&Ci0Zal{qDF@5a)zg z*{+}Bi9t1C=Q04!(6Q}R;v4w=@o5M78byfWfpLYsn}eG}TyvSEO;+z0%#WTLTA!>u z1^SLf8hs>k`lk#U*7~PJ=BD?~wrQOLR(<5M(zJ)gHwn#)46wyqUT%B0n!o4#L~c^?G~bO7C85?tmA`AjrhG z`b*(}(R?p)EwxQ@mG^$ex8z*fb4L8Etpi*gKK1k*IrYdZ$VuUx=k(ol)Aquo49;et z!^|ruO79E4>b}g?Or5%uQOl_CIb9jrK;4InPvG;JBBg12VxQWq9abm5VT;o{T8|H< z^?Q4YFni=tN15hGu2>uzocv}u4eEo3uCOV};5?)UqDXg~ulmCQ6`APwg+0ksG+fw1 zV8#(TOJ*80BN*S!)-%PiyD4R4D)Y19<h}&G z((iY1tHe}z_la_#2*=7Wdv^}o#H;-CgBKqibWvrEdBY!AozTNTdQX1sb&*GU-?o|P z!b})|s~<%T{kCW7F%;c%_#mbkjPbdcS!zW+csmmRg96ME)PTwdsTQ`p;RS0SamJ+d zz$mEoJu=+yH9Y{HbaI0d;>97}2uqq>HRc>$otUy3=q69%C;ayAoj)gS&3tdLQ`m_T ztV37}lVS$2mQV1Qg?X-bSY~w?avHu53gjN10W)eAO{EoylhzjT$26?`kH|$h;xXy4 z-nKqLWDW$n3$R4u&0N4nLhLWb_{%A5y{x^d*gW+vyJRqHMN&v8qA1I4no%Z&cOWiw zkdG+frmi3lalSNe4$34a6JDU)Ef-&sJiPx1C=X4559dv}sA_HJUG z;NqrWVqpQ@-V^!DvTk?F#;NA1_HJPD_t9n?30!>KRlEe;XK$aqjoY(JHDU2FV_|0* zcpc~6%EZP7`A0cFf$pMmin;e<{&&era8vILgz#%ZfFab&Ycn@W4qmG~o zROaM?!kZDed-q^q6m)bjF|=|p)fbczxpVQO7QqCP`pXL`d8xa^dtr7X)dAv)e)rC zfGu5jO#XSK0Ye*pha<=W5;wFqFqHm_XK zCrH`E(aONkPS4cN;P33*N^GB?go+0Mf&$$2U3Qwue-Cu+sQ`)TT3B0}TKz(3w7_ZjyvqAQvM$0+GTNqWUTFsb^lU@|5;>SP)$qMoFD+409(QTtS04YCm#Gn6wE+NU6!~Z6Br*RUhaC_Z7f8v%(7@R6pO9`jQZUg@EeDWx zfqL6rGw1*u=kGXTzv1ZLk#2cXE)Wb|0Q3_L7~EaiO#&t7zalX+i3tPx;R30dTIrh@ z+B^J8cDEe87>rk({R8K2k&F#k-|uk5Zg7AsYG`NqiyV3j0+E^X3=ODf5dx+BU1pvD zm;VaF!XzeiqaYdG-!p?8)go5|sAmpP&s}DUd4G>14EP(aYk%|a%*@cg-|q)NAONer z>uy>Eeh>0PVycE#K%c?i9p|mU6vJ0ZPyvC_0Rp?r$hz=vFxZ&HSXuwjzJa~$fk~TM>i#nVt@EUX z0>H<0fqB=2X=VN$ff*QU1H2rOVrBvX4pZOI!rJN=IJcVj5+$;V0&vJkezvY5`Tu|e zm@t4NXl(c^j9Y1O8&wx`0`;UEq@OD?)yn??15iAGA?5fhaow`9BHD_?2b5s7K)$;x zE-}^r00B74|0XUZtsp6J0LPX8=hAXYLyF&^&;|uz?ch zZlUZ3`p+=Jx)v6u_P?tB-7049rAvqw0Kn!8S4GBv>bygoU{Qp7=W7hUFCxt|KBi_)ua^vj&o~d@)9uJwE!>s7(eq; zX7YQS>*^(7WQvByzjBhd7@B(UEhPX3Hjr2DI>`=;|BRue3)C)u;UsVMj{l;#E)K9_ zcg>&8YtZKRAlJ1^fDuW12VE;Y$D8r(KZYj%>?ONZay?f7y{Iew%uAEwe}MVn!=wRU z{HsdeEiaqa211NL@ko&UbK~O5`S&2#&0>HT8C_#5S7B>MyI%DRL0AB{f88Jh`nbgH zOo4X?6R63&qcd{OQHNqp$)f02@+316JBX_upDc3FTEDB!Kcg0T*^x zTm`TH9fKXfV7k@|8%W4nPha;JeImEwN?D7JVFo~?0g$`mqVW4Y$PFX6AT0l^6#AgD zW42$Se0=kNL}C4B6z1dh`Rf4?PyQw_&Vb*euv{zUmY079dH>NcuL5u{Fo4IutCi`% z--Fx{*gu2#^e)d;jusXM)^5LQOWbN7`eEf)c_5=O z0yUz$e*baA?{TjCV3^rK8oHKxhHj=De;K9pvmbl#CD|JdsC_R3Uh6K-!rT8V4%ffn z)ahY~K>%H<_g%q%QjT=mf5MTp0@_{{y2jT3;>HwQMuk=Zp``*ve#TifVb zIX7m;4pKF>H!-yPMX`UYnk*>V%XPp6EC3U@+vPI{^i%&U3ecRq$^Gmgc~hW~Y-j59 zZ#DpKfa%cyG`~EBelE($OMefs~DSouY*@767k7JRo602)WfVn5p%OZ$HY5z@6V5Y;ud_(kjG7N>o4&5i`X zQ3W`;Tf6M+`8^KT51ENu8|XUe{)(MjnN6thC_%u0fl&ZG7k4d9Xz({MKvV1w8xYpD zvom%3MO*(Ch0-tKX*yufT0q+vsQmxsh@bd9%5`T9U;x)GJ_lrOv!z^Lys^mgt)L;WK|x7xX4S)jjuVe$V;I}@;|tM!i$8s?U`eX3JI4)NC=$T(i_LOEdRtnyBTH>DBu^ zgGV^$x18VHd>)<~&vT#i;a$#q-t(UKoL>pDS!k}-ztFP+3ig%(WF0`84+>>wmx4T$ zbhF-qf+(nNEc}3V>hCY8lfr474l^Vfvn@6ir@nf=)bK96ASi)Xn(2y%5Sb;KiW0Tx z(CfPpZ#q87i(B?>kASf$^5m&=`l2L6( zmiG4P$V9kUes?}IoA)09g2tIJLyQ@MNZpv~>b5b=F22K_x^$k>}Q zO6yr@UOEHeDEICG}Q)Z2%B89&{FRceeYL2MF z`d4$afP%o~UWvmEu|}&(n6ER{(ri6SZF#S>;t=yD2oMM=5A2eTM<|tDxFE7;)cE!~ zU6Yr*xt#LVFEu0dMrV=LoMtxWD}!FDKeTiO7L#JcdSn%~{$>6`Kzj7X7>gYV#$v0J z`K7wcHIN*H=<_UvdX?6Moq3bJQ5Mmy!Vhcs#8VzJWM&HuEJN4M=;?qYH?gF!lKifP z5~M|vgeKlk-2~$~I2gM-+I&VVNknK3L;b{kNb~DsZi6!g99EWk=QVJ`DJLjeYI!!vvI}$x)_4Ou0Av?*^p|^GZ$ElDp~!2 zKc7DE5;$=ZPKz5FIK=R(9BP-!EqhWXKd=ic&!1X2AtDYnPVoK(3sK9{k@gXma{ysl zUw^V2T^`NsAPSu3af!goM_@} zgAH*`G_*RTzD6O})>yxf0;Es^dH=2$f{rvb2sMmhMdjEVFw9&ijFlwnz8Hc-V|{8g zPF;+u-hA!qv-Ru4Dz_w%nON9F>KcU5r2?Vqx_IGCk9$zp1SI0DB&WSJKw$dR7@;I9 zSJr={HzXN_-5m=F_0|AE981+JLZ~Dyu4ec3fvS@Ic*rJnr3%%BVs7eCMF=(gv4KO* zx&Rs8lZW^=(g2AABwZ0gB{|ukYXVN}btLqo3#rz>UwzyVm%~z;XhV07(bPv@>zC>d z_y9u~X^)p=6Lk0&6UtYoU{LAsv$6I=QME>7esK?vgDLgllb391{R52M0BT~_#V+XM z6b&DO6FjrYVvNr!P?lhO->yj}AjqZrfLiL&=~7z=5vY9|Qfl93j2@^ydi>j5 z5TAu0qLeQdKDIt(Ef}Qlmu0-)TFgKpwfc{U&r(T$u77-@%|~DymoWa-Mg!wPZ!zRh zVXPT9`cgdNxbObzo2oUYUe}f|5?tuIeQ;5c`6VEdR5gPP?*D^SPjn{q(_iRD*1HM# zVf`qfW3>$K8}Z~U#!Bx%x_=?I2*Kfbh}t|WKl^I|DP!C4(+58_|GpKE9*RO!n#$FT zDzDQv(kMZkl#LN1(FOeQGQa$v9vXxbna~iK^DC;EQK6wxq@6@Md_D9r3x^LA48P}( ziO-^3p|eZ=`t_YP46hdqe`foPl`AoPC+zxJ<>dN{hYt=iqy>e@q_b2xP0klaPsQ*N zlHo_9H(I0|T%An|MP4qMy>$4+VZ&x5!day8xm$Pf@Mua_H*LxO-RH?+gatqBdEPb+ z!=rrY{_8U>R;#hVZkMUOP&sZLxiskus3`~w0qg(6dI;qRBmS?lh?!4poUjaoAAt?n z!HvB%3?3;vI9=seob{cGb~YV})2#m_ZQg}Kk7?I)Gbm)qf z;o(0h6GQt(xw{`!`^MDV?T4Wt(hqQy2|wNd-6ZU=Kvf6^7g z$Smf|K&_ZqvonWWQ*$b-%<=8z!?ec6Vr~a(z_?XLFnPsAau}+#(I-zkNinCHM4Gol z#26G>ptKaT&1BC}y>^f_%uz8E#$SdXR+{VR-xt{?48dCyX2b zf-kfA%)-8&QItJw@A{|irhw5F8zGkQ4YuDRn^a4ZX|&nY_NK$8blB&OCGR4%#qQ^A z1H_C7x3=_l9M(B-twp80-tW*OgUNn=AN0j?_6^j)!Rn1thzf_=rEG2f{5K#^eH?qR zI%}X8b5Ng1OF?6^&7#)e_{@>%XI8+i-hn)9u>31dDUtDs=qzO;dJ#kv++~1SGVu(tu}G~WuxfMP zBjoB#ASkR+$_9%mvAD*NVu;1HLb={XYWVp2OPv*Pt{XmlWLcIXX2d~XDTa|~W>=}@ zWu}!kngc{GY6fiZS~*k$!YzgXapXez4pNrL#FP)NiCp-vX~V<_Qed&$9JQZ7p*u;c zrr+N-?^_NTE<#N#fIPk6JUhhZpv}sqK`B%QXz`Z zE#3NWOmKgk*RevhGiYEShZ6{~yyvHTzkv|mP5E73dafowirHaTsTLe8`}A;UMBI8v z<=6;fpP*s8AZ?X_DC;&N72u=dYUdLQiB(vnw zSrU{yrP7F~y9DJ5mh;sVF((j9yEe|CR_BhBve!~@*wnFXnwW#P2f#_i3mSPPnE6uE zQ*m~E8PWBhz{H`Ig%u}!rUndF_7FonF0GKIN-eW{E9CIY)4`c5SrYwcd&*IkW@*#4 zdrhD$hSCNyf&SkAYoK5!T1#nqGj93G`83ttrZn4_@t_eCvCI6nmpq}#TZo1M-*tb~ zgNk(XpgGPF=4+r}16)fcsp=@^!^vG|`eW|YK`T3(O^kU(jKOmhZcL8s#Wl+46*KEK za?o)fs|>5K%2%~A(y)l-*o#!wv6fpC{_!6u?6LYhB^aJASd0gSAp3$aiWDl#mO<0E z--V0CBA~Id%vz+CqIVc=xpuYN@zcJx2K7PMG&Sape{``1iaXjQI!Y`y6RxaEjZZzf z$2X?~1As9D!wNHYnO2Ol$|xmcO2dt04d@998*9$4&`61k(_oqn&nEb{2d9ICV_Btv z<96kY0!vX|^(w8nZ0_-Iw09WX`3a=0tkzDf*1$pL3Y4*QB32z4+fYYqRT=ofC`j{c zOWp-uT%&>FUf49az{GW-^D}@U_X^qMsqaT(3@*w&m^Fx*Qa_`z9BjU|g9Z%t-XYlJS)DRnzf@iO^{zc+-*OxoIlDF5vPlEN?O*~#!);Y}c0q`8NPdY@$*%HmSwtX58 zcT!AUcpVuwXS**+_=Xzqzsu4z(UposETIhcys_D4}

8?$A?W2%gl4wcv!wW)dufPv`eP774reYtCcFp3{WMuvp3V9#8DZ)l_M`s{9~g z+F+<`^%MNDS=D(>nA+0Ren_1!8jX3m<4*Ga!76~*jC;W)4IoSu)P^To%q1!(P$Ms{ zyX3+=*^8qA){{G56*JHz6bWoqA$4?i1#l)k}w9&+u521uYL$l8HPuPlM} zCwAwxHRG-r5*J`dcG+wSj!aFzXxEhV$Dyt7aa_t;#CcBxBUFt+m8CmZc{UXThOF#=EYW#F=_ z3zr^MuRCT|{(0_KP-4;L!m7)T$CXsQ3nq!iYlCVOI!`{ocBt)}P*t7IJmsSn8Yp;w zPK`n}_VtJ^8Bv&xTL$v+{_QrNQdG*UGrxLs^EzN=>3K|O2Tw67HP(vIUd5ynW-$tF z>>}B}i>DZz7bul-4IfQgb^+2fcJQ8j+h2^)qa&=?nk!!cr`Er6;g76kK=_W}5h1-a zAkYvdL@fVnWyK4a@$0c!WGe;!L1IKK?$Xvcm|PA)!QHCK@?`H_9XZG;o;d z5~pmG-?o`PK8ytEz@L1^YK#?QaEcaV&dFCTuQ%Rv<;y$R!W~`36J{l7AmBE&h~U+3 zU(@9v6u-$64ku|KkQ=T78Qyc`l#Rj$XzV60E(q^T6%%ku=f2shs-~CDji|`RBy55G z54$Wnh6@nESh27db)OKCq)XY_y*hR9F#@s$c`BPlbk7n)$cC2`ALJQy4(_@+c19K= z@aAT`ASXt8#!!ijr9 z)I}Nm>SM)kLX?@fn$J2{|9mk7S1S@H3X_O?@xBAdo7(w(_~kvo;TdB@hIE=xbxnG_ z$w3_Z>IOgzHs>lX5>xcSsMn%A6zMWGvu~e8m7uJU>`Rhniz%^KKOA&G(EUV-O0NHq{n!3k%_jR$g3sdUBB%5*J+Ky=tp^+2(bJP=MFfeVI2( z?`0Y&A%BfsDW4z}g*w-&!ApC!LMGo)vMxSWvC zM?qm7`tyPQ@;ObE7)N!amkL6?%N7`1K%QMchTB@~TC%uGj6f?~I$rn0alg!|64h0k z;-e?-KvzyQ{jgPMpKD?SLRUt<%WBM5Iq0)B4=A62-Qml~;n^uN1~F4)a@1@dMtPO3 z$VAIi2J(2txaar?>|6H{bx0_tNC*`}eZlIw?LuKWiCPW$RDLFIi>ZpjQj|@eb^QFG ze$bX<2am8f_XMF*JZ<8Cs<Q2#Qm_0)!HqJPnT0vfMejXJq zwlpxViv|w*)@nE-q#C0hyyU_+h0P$&6BaM-)vYu5l84YJ42GCrB@lNV`t;#5u>Z2s zI$V?7kiP#5N-7kc`R$JBuM9+LlvBY+(JP;<+za#QMk3O%F(4UV-VoUc50<9b?GCd-DUw2l z_P_GZ3Fz#(0erM5PhT}-flI?Z&RpQS`Qu8bPgP#Qw*QBM6K`$q2gqvOAFU$ zLRaa~RZy*iYqS@v5i?=~@m;Awi82q1P#M1X@qU{mWW%mkk=zZ>!=t)b`8rzb9b!my#6ypge}aW#Qh%6!dIxFhd53r0D|^KloSh`* zm`N}msXPI94!UpLg&;ZB#GAzXr~nax0(zi{w{;6>W#u5Pq)RIGO;=T zc39MTF#~mAcS|o3Mp;*%7XLP*4|H`ODG{4>t-c{<#6^;K2o-W7>b(bkej=NcI}S(l z-rM7@CPXw|ighU1oa(A-ed|%X0ZE4UvT}5&>#ZISVe>dVM6W0ZMTEy!ymt!qx>v{X z%T#1T4Tu=Sh&+ok-|Uh%2&HW8ZO&+nO~d$7UXVf`0VNWGs2PMJCa1eT#i6e5<1~JL zeB0I|M7-3mDC3!*j@&s7#`$EP(Wbpej4Wlwk$o>$RU(w^U&}jIs-Ff1mJNGuuGwr= zogluSy;kf4$7+m)mW{ooy){5c)4MW+YHOVC+X0^;_Fmh~LyiY)fFS>ML)1NM`>F4) z`Jre&;z_LUCqFN3+;0-*;ik^~nm%i&fPvHZ@Ii(Qo3St= zSmwSyHHWL+)jF3!a3PYgSwjZCNT@*yMFN#!>|1v>k(&Wlobj@Rg`>3-YJX6g)*C6I zk@ZI_TvnHlA3$pTiyun}4_;z07}8_O(-rQw6a4(}3$a8fo=U)fN^L+jv~bbvz0bqW zze5Ig^uzAa)jv`m5W;>#p8wnVZ_?NN@o$YIf4lnV{1@u^(fLoR*Nh&WEgl^YNpK%n z=f~&24qh||J#K1vIzI+W-In diff --git a/vendor/github.com/klauspost/cpuid/v2/testdata/getall.go b/vendor/github.com/klauspost/cpuid/v2/testdata/getall.go deleted file mode 100644 index 116456bd..00000000 --- a/vendor/github.com/klauspost/cpuid/v2/testdata/getall.go +++ /dev/null @@ -1,80 +0,0 @@ -//go:build ignore - -package main - -import ( - "archive/zip" - _ "bytes" - "fmt" - "io" - "net/http" - "os" - "strings" - - "golang.org/x/net/html" -) - -// Download all CPUID dumps from http://users.atw.hu/instlatx64/ -func main() { - resp, err := http.Get("http://users.atw.hu/instlatx64/?") - if err != nil { - panic(err) - } - - node, err := html.Parse(resp.Body) - if err != nil { - panic(err) - } - - file, err := os.Create("cpuid_data.zip") - if err != nil { - panic(err) - } - defer file.Close() - gw := zip.NewWriter(file) - - var f func(*html.Node) - f = func(n *html.Node) { - if n.Type == html.ElementNode && n.Data == "a" { - for _, a := range n.Attr { - if a.Key == "href" { - err := ParseURL(a.Val, gw) - if err != nil { - panic(err) - } - break - } - } - } - for c := n.FirstChild; c != nil; c = c.NextSibling { - f(c) - } - } - - f(node) - err = gw.Close() - if err != nil { - panic(err) - } -} - -func ParseURL(s string, gw *zip.Writer) error { - if strings.HasSuffix(s, "CPUID.txt") { - fmt.Println("Adding", "http://users.atw.hu/instlatx64/"+s) - resp, err := http.Get("http://users.atw.hu/instlatx64/" + s) - if err != nil { - fmt.Println("Error getting ", s, ":", err) - } - defer resp.Body.Close() - w, err := gw.Create(s) - if err != nil { - return err - } - - _, err = io.Copy(w, resp.Body) - if err != nil { - return err - } - } - return nil -} diff --git a/vendor/github.com/minio/sha256-simd/.github/workflows/go.yml b/vendor/github.com/minio/sha256-simd/.github/workflows/go.yml deleted file mode 100644 index 20a639ab..00000000 --- a/vendor/github.com/minio/sha256-simd/.github/workflows/go.yml +++ /dev/null @@ -1,42 +0,0 @@ -name: Go - -on: - pull_request: - branches: - - master - push: - branches: - - master - -jobs: - build: - name: Test on Go ${{ matrix.go-version }} and ${{ matrix.os }} - runs-on: ${{ matrix.os }} - strategy: - max-parallel: 4 - matrix: - go-version: [1.16.x, 1.15.x, 1.14.x] - os: [ubuntu-latest, windows-latest, macos-latest] - steps: - - name: Set up Go ${{ matrix.go-version }} - uses: actions/setup-go@v1 - with: - go-version: ${{ matrix.go-version }} - id: go - - - name: Check out code into the Go module directory - uses: actions/checkout@v1 - - - name: Build on ${{ matrix.os }} - if: matrix.os == 'windows-latest' - run: go test -race -v ./... - - name: Build on ${{ matrix.os }} - if: matrix.os == 'macos-latest' - run: go test -race -v ./... - - name: Build on ${{ matrix.os }} - if: matrix.os == 'ubuntu-latest' - run: | - diff -au <(gofmt -d .) <(printf "") - go test -race -v ./... - go vet -asmdecl . - ./test-architectures.sh diff --git a/vendor/github.com/minio/sha256-simd/.gitignore b/vendor/github.com/minio/sha256-simd/.gitignore deleted file mode 100644 index c56069fe..00000000 --- a/vendor/github.com/minio/sha256-simd/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.test \ No newline at end of file diff --git a/vendor/github.com/minio/sha256-simd/cpuid_other.go b/vendor/github.com/minio/sha256-simd/cpuid_other.go index cd9fbf2d..97af6a19 100644 --- a/vendor/github.com/minio/sha256-simd/cpuid_other.go +++ b/vendor/github.com/minio/sha256-simd/cpuid_other.go @@ -23,6 +23,11 @@ import ( "github.com/klauspost/cpuid/v2" ) +var ( + hasIntelSha = runtime.GOARCH == "amd64" && cpuid.CPU.Supports(cpuid.SHA, cpuid.SSSE3, cpuid.SSE4) + hasAvx512 = cpuid.CPU.Supports(cpuid.AVX512F, cpuid.AVX512DQ, cpuid.AVX512BW, cpuid.AVX512VL) +) + func hasArmSha2() bool { if cpuid.CPU.Has(cpuid.SHA2) { return true @@ -42,5 +47,4 @@ func hasArmSha2() bool { return false } return bytes.Contains(cpuInfo, []byte(sha256Feature)) - } diff --git a/vendor/github.com/minio/sha256-simd/go.mod b/vendor/github.com/minio/sha256-simd/go.mod index b254fa3f..68dace0d 100644 --- a/vendor/github.com/minio/sha256-simd/go.mod +++ b/vendor/github.com/minio/sha256-simd/go.mod @@ -1,5 +1,7 @@ module github.com/minio/sha256-simd -go 1.13 +go 1.17 -require github.com/klauspost/cpuid/v2 v2.0.6 +require github.com/klauspost/cpuid/v2 v2.2.3 + +require golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e // indirect diff --git a/vendor/github.com/minio/sha256-simd/go.sum b/vendor/github.com/minio/sha256-simd/go.sum index 5b8b0f4d..6e094429 100644 --- a/vendor/github.com/minio/sha256-simd/go.sum +++ b/vendor/github.com/minio/sha256-simd/go.sum @@ -1,2 +1,4 @@ -github.com/klauspost/cpuid/v2 v2.0.6 h1:dQ5ueTiftKxp0gyjKSx5+8BtPWkyQbd95m8Gys/RarI= -github.com/klauspost/cpuid/v2 v2.0.6/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= +github.com/klauspost/cpuid/v2 v2.2.3 h1:sxCkb+qR91z4vsqw4vGGZlDgPz3G7gjaLyK3V8y70BU= +github.com/klauspost/cpuid/v2 v2.2.3/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= +golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e h1:CsOuNlbOuf0mzxJIefr6Q4uAUetRUwZE4qt7VfzP+xo= +golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= diff --git a/vendor/github.com/minio/sha256-simd/sha256.go b/vendor/github.com/minio/sha256-simd/sha256.go index b137ead9..f146bbdb 100644 --- a/vendor/github.com/minio/sha256-simd/sha256.go +++ b/vendor/github.com/minio/sha256-simd/sha256.go @@ -19,10 +19,8 @@ package sha256 import ( "crypto/sha256" "encoding/binary" + "errors" "hash" - "runtime" - - "github.com/klauspost/cpuid/v2" ) // Size - The size of a SHA256 checksum in bytes. @@ -68,42 +66,34 @@ func (d *digest) Reset() { type blockfuncType int const ( - blockfuncGeneric blockfuncType = iota - blockfuncSha blockfuncType = iota - blockfuncArm blockfuncType = iota + blockfuncStdlib blockfuncType = iota + blockfuncIntelSha + blockfuncArmSha2 + blockfuncForceGeneric = -1 ) var blockfunc blockfuncType func init() { - blockfunc = blockfuncGeneric switch { - case hasSHAExtensions(): - blockfunc = blockfuncSha + case hasIntelSha: + blockfunc = blockfuncIntelSha case hasArmSha2(): - blockfunc = blockfuncArm - default: - blockfunc = blockfuncGeneric + blockfunc = blockfuncArmSha2 } } -var avx512 = cpuid.CPU.Supports(cpuid.AVX512F, cpuid.AVX512DQ, cpuid.AVX512BW, cpuid.AVX512VL) - -// hasSHAExtensions return whether the cpu supports SHA extensions. -func hasSHAExtensions() bool { - return cpuid.CPU.Supports(cpuid.SHA, cpuid.SSSE3, cpuid.SSE4) && runtime.GOARCH == "amd64" -} - // New returns a new hash.Hash computing the SHA256 checksum. func New() hash.Hash { - if blockfunc != blockfuncGeneric { - d := new(digest) - d.Reset() - return d + if blockfunc == blockfuncStdlib { + // Fallback to the standard golang implementation + // if no features were found. + return sha256.New() } - // Fallback to the standard golang implementation - // if no features were found. - return sha256.New() + + d := new(digest) + d.Reset() + return d } // Sum256 - single caller sha256 helper @@ -272,11 +262,11 @@ func (d *digest) checkSum() (digest [Size]byte) { } func block(dig *digest, p []byte) { - if blockfunc == blockfuncSha { - blockShaGo(dig, p) - } else if blockfunc == blockfuncArm { - blockArmGo(dig, p) - } else if blockfunc == blockfuncGeneric { + if blockfunc == blockfuncIntelSha { + blockIntelShaGo(dig, p) + } else if blockfunc == blockfuncArmSha2 { + blockArmSha2Go(dig, p) + } else { blockGeneric(dig, p) } } @@ -397,3 +387,82 @@ var _K = []uint32{ 0xbef9a3f7, 0xc67178f2, } + +const ( + magic256 = "sha\x03" + marshaledSize = len(magic256) + 8*4 + chunk + 8 +) + +func (d *digest) MarshalBinary() ([]byte, error) { + b := make([]byte, 0, marshaledSize) + b = append(b, magic256...) + b = appendUint32(b, d.h[0]) + b = appendUint32(b, d.h[1]) + b = appendUint32(b, d.h[2]) + b = appendUint32(b, d.h[3]) + b = appendUint32(b, d.h[4]) + b = appendUint32(b, d.h[5]) + b = appendUint32(b, d.h[6]) + b = appendUint32(b, d.h[7]) + b = append(b, d.x[:d.nx]...) + b = b[:len(b)+len(d.x)-d.nx] // already zero + b = appendUint64(b, d.len) + return b, nil +} + +func (d *digest) UnmarshalBinary(b []byte) error { + if len(b) < len(magic256) || string(b[:len(magic256)]) != magic256 { + return errors.New("crypto/sha256: invalid hash state identifier") + } + if len(b) != marshaledSize { + return errors.New("crypto/sha256: invalid hash state size") + } + b = b[len(magic256):] + b, d.h[0] = consumeUint32(b) + b, d.h[1] = consumeUint32(b) + b, d.h[2] = consumeUint32(b) + b, d.h[3] = consumeUint32(b) + b, d.h[4] = consumeUint32(b) + b, d.h[5] = consumeUint32(b) + b, d.h[6] = consumeUint32(b) + b, d.h[7] = consumeUint32(b) + b = b[copy(d.x[:], b):] + b, d.len = consumeUint64(b) + d.nx = int(d.len % chunk) + return nil +} + +func appendUint32(b []byte, v uint32) []byte { + return append(b, + byte(v>>24), + byte(v>>16), + byte(v>>8), + byte(v), + ) +} + +func appendUint64(b []byte, v uint64) []byte { + return append(b, + byte(v>>56), + byte(v>>48), + byte(v>>40), + byte(v>>32), + byte(v>>24), + byte(v>>16), + byte(v>>8), + byte(v), + ) +} + +func consumeUint64(b []byte) ([]byte, uint64) { + _ = b[7] + x := uint64(b[7]) | uint64(b[6])<<8 | uint64(b[5])<<16 | uint64(b[4])<<24 | + uint64(b[3])<<32 | uint64(b[2])<<40 | uint64(b[1])<<48 | uint64(b[0])<<56 + return b[8:], x +} + +func consumeUint32(b []byte) ([]byte, uint32) { + _ = b[3] + x := uint32(b[3]) | uint32(b[2])<<8 | uint32(b[1])<<16 | uint32(b[0])<<24 + return b[4:], x +} diff --git a/vendor/github.com/minio/sha256-simd/sha256_test.go b/vendor/github.com/minio/sha256-simd/sha256_test.go index 602a2989..729c1aef 100644 --- a/vendor/github.com/minio/sha256-simd/sha256_test.go +++ b/vendor/github.com/minio/sha256-simd/sha256_test.go @@ -50,12 +50,14 @@ package sha256 import ( + "bytes" + "encoding" "encoding/hex" "fmt" + "hash" + "io" "strings" "testing" - - "github.com/klauspost/cpuid/v2" ) type sha256Test struct { @@ -2217,7 +2219,7 @@ func TestGolden(t *testing.T) { }() if true { - blockfunc = blockfuncGeneric + blockfunc = blockfuncForceGeneric for _, g := range golden { s := fmt.Sprintf("%x", Sum256([]byte(g.in))) if Sum256([]byte(g.in)) != g.out { @@ -2226,8 +2228,8 @@ func TestGolden(t *testing.T) { } } - if cpuid.CPU.Supports(cpuid.SHA, cpuid.SSSE3, cpuid.SSE4) { - blockfunc = blockfuncSha + if hasIntelSha { + blockfunc = blockfuncIntelSha for _, g := range golden { s := fmt.Sprintf("%x", Sum256([]byte(g.in))) if Sum256([]byte(g.in)) != g.out { @@ -2237,7 +2239,7 @@ func TestGolden(t *testing.T) { } if hasArmSha2() { - blockfunc = blockfuncArm + blockfunc = blockfuncArmSha2 for _, g := range golden { s := fmt.Sprintf("%x", Sum256([]byte(g.in))) if Sum256([]byte(g.in)) != g.out { @@ -2269,20 +2271,26 @@ func benchmarkSize(b *testing.B, size int) { b.ResetTimer() for i := 0; i < b.N; i++ { bench.Reset() - bench.Write(buf[:size]) + bench.Write(buf) bench.Sum(sum[:0]) } } func BenchmarkHash(b *testing.B) { - algos := []struct { + type alg struct { n string t blockfuncType - f bool - }{ - {"SHA_", blockfuncSha, hasSHAExtensions()}, - {"GEN_", blockfuncGeneric, true}, } + algos := make([]alg, 0, 2) + + algos = append(algos, alg{"Generic", blockfuncForceGeneric}) + if hasIntelSha { + algos = append(algos, alg{"IntelSHA", blockfuncIntelSha}) + } + if hasArmSha2() { + algos = append(algos, alg{"ArmSha2", blockfuncArmSha2}) + } + algos = append(algos, alg{"GoStdlib", blockfuncStdlib}) sizes := []struct { n string @@ -2290,6 +2298,7 @@ func BenchmarkHash(b *testing.B) { s int }{ {"8Bytes", benchmarkSize, 1 << 3}, + {"64Bytes", benchmarkSize, 1 << 6}, {"1K", benchmarkSize, 1 << 10}, {"8K", benchmarkSize, 1 << 13}, {"1M", benchmarkSize, 1 << 20}, @@ -2298,14 +2307,180 @@ func BenchmarkHash(b *testing.B) { } for _, a := range algos { - if a.f { - blockfuncSaved := blockfunc + func() { + orig := blockfunc + defer func() { blockfunc = orig }() + blockfunc = a.t for _, y := range sizes { s := a.n + "/" + y.n b.Run(s, func(b *testing.B) { y.f(b, y.s) }) } - blockfunc = blockfuncSaved + }() + } +} + +type sha256TestGo struct { + out string + in string + halfState string // marshaled hash state after first half of in written, used by TestGoldenMarshal +} + +var golden256 = []sha256TestGo{ + {"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "", "sha\x03j\t\xe6g\xbbg\xae\x85 0 { + t.Errorf("allocs = %d, want 0", n) + } +} diff --git a/vendor/github.com/minio/sha256-simd/sha256blockAvx512_amd64.go b/vendor/github.com/minio/sha256-simd/sha256blockAvx512_amd64.go index b7d7c163..4b9473a4 100644 --- a/vendor/github.com/minio/sha256-simd/sha256blockAvx512_amd64.go +++ b/vendor/github.com/minio/sha256-simd/sha256blockAvx512_amd64.go @@ -1,4 +1,5 @@ -//+build !noasm,!appengine,gc +//go:build !noasm && !appengine && gc +// +build !noasm,!appengine,gc /* * Minio Cloud Storage, (C) 2017 Minio, Inc. diff --git a/vendor/github.com/minio/sha256-simd/sha256blockAvx512_amd64_test.go b/vendor/github.com/minio/sha256-simd/sha256blockAvx512_amd64_test.go index f4eab629..a8e65364 100644 --- a/vendor/github.com/minio/sha256-simd/sha256blockAvx512_amd64_test.go +++ b/vendor/github.com/minio/sha256-simd/sha256blockAvx512_amd64_test.go @@ -1,4 +1,5 @@ -//+build !noasm,!appengine,gc +//go:build !noasm && !appengine && gc +// +build !noasm,!appengine,gc /* * Minio Cloud Storage, (C) 2017 Minio, Inc. @@ -31,7 +32,7 @@ import ( func TestGoldenAVX512(t *testing.T) { - if !avx512 { + if !hasAvx512 { t.SkipNow() return } @@ -75,7 +76,7 @@ func initDigests() *[512]byte { func testSha256Avx512(t *testing.T, offset, padding int) [16][]byte { - if !avx512 { + if !hasAvx512 { t.SkipNow() return [16][]byte{} } @@ -118,7 +119,7 @@ func TestAvx512_3Blocks(t *testing.T) { testSha256Avx512(t, 47, 55) } func TestAvx512_MixedBlocks(t *testing.T) { - if !avx512 { + if !hasAvx512 { t.SkipNow() return } @@ -153,7 +154,7 @@ func TestAvx512_MixedBlocks(t *testing.T) { func TestAvx512_MixedWithNilBlocks(t *testing.T) { - if !avx512 { + if !hasAvx512 { t.SkipNow() return } @@ -200,7 +201,7 @@ func TestAvx512_MixedWithNilBlocks(t *testing.T) { func TestAvx512Server(t *testing.T) { - if !avx512 { + if !hasAvx512 { t.SkipNow() return } @@ -251,7 +252,7 @@ func TestAvx512Server(t *testing.T) { func TestAvx512Digest(t *testing.T) { - if !avx512 { + if !hasAvx512 { t.SkipNow() return } @@ -295,7 +296,7 @@ func benchmarkAvx512SingleCore(h512 []hash.Hash, body []byte) { func benchmarkAvx512(b *testing.B, size int) { - if !avx512 { + if !hasAvx512 { b.SkipNow() return } @@ -325,7 +326,7 @@ func BenchmarkAvx512_10M(b *testing.B) { benchmarkAvx512(b, 10*1024*1024) } func benchmarkAvx512MultiCore(b *testing.B, size, cores int) { - if !avx512 { + if !hasAvx512 { b.SkipNow() return } diff --git a/vendor/github.com/minio/sha256-simd/sha256blockSha_amd64.go b/vendor/github.com/minio/sha256-simd/sha256blockSha_amd64.go deleted file mode 100644 index bef94941..00000000 --- a/vendor/github.com/minio/sha256-simd/sha256blockSha_amd64.go +++ /dev/null @@ -1,6 +0,0 @@ -//+build !noasm,!appengine,gc - -package sha256 - -//go:noescape -func blockSha(h *[8]uint32, message []uint8) diff --git a/vendor/github.com/minio/sha256-simd/sha256block_amd64.go b/vendor/github.com/minio/sha256-simd/sha256block_amd64.go index 0c48d45f..e536f54e 100644 --- a/vendor/github.com/minio/sha256-simd/sha256block_amd64.go +++ b/vendor/github.com/minio/sha256-simd/sha256block_amd64.go @@ -1,4 +1,5 @@ -//+build !noasm,!appengine,gc +//go:build !noasm && !appengine && gc +// +build !noasm,!appengine,gc /* * Minio Cloud Storage, (C) 2016 Minio, Inc. @@ -18,10 +19,13 @@ package sha256 -func blockArmGo(dig *digest, p []byte) { - panic("blockArmGo called unexpectedly") +func blockArmSha2Go(dig *digest, p []byte) { + panic("blockArmSha2Go called unexpectedly") } -func blockShaGo(dig *digest, p []byte) { - blockSha(&dig.h, p) +//go:noescape +func blockIntelSha(h *[8]uint32, message []uint8) + +func blockIntelShaGo(dig *digest, p []byte) { + blockIntelSha(&dig.h, p) } diff --git a/vendor/github.com/minio/sha256-simd/sha256blockSha_amd64.s b/vendor/github.com/minio/sha256-simd/sha256block_amd64.s similarity index 99% rename from vendor/github.com/minio/sha256-simd/sha256blockSha_amd64.s rename to vendor/github.com/minio/sha256-simd/sha256block_amd64.s index 14cf2c63..c98a1d8f 100644 --- a/vendor/github.com/minio/sha256-simd/sha256blockSha_amd64.s +++ b/vendor/github.com/minio/sha256-simd/sha256block_amd64.s @@ -106,7 +106,7 @@ GLOBL SHUF_MASK<>(SB), RODATA|NOPTR, $16 // X13 saved hash state // CDGH // X15 data shuffle mask (constant) -TEXT ·blockSha(SB), NOSPLIT, $0-32 +TEXT ·blockIntelSha(SB), NOSPLIT, $0-32 MOVQ h+0(FP), DX MOVQ message_base+8(FP), SI MOVQ message_len+16(FP), DI diff --git a/vendor/github.com/minio/sha256-simd/sha256blockSha_amd64_test.go b/vendor/github.com/minio/sha256-simd/sha256block_amd64_test.go similarity index 88% rename from vendor/github.com/minio/sha256-simd/sha256blockSha_amd64_test.go rename to vendor/github.com/minio/sha256-simd/sha256block_amd64_test.go index 1ca144f6..da3d60c8 100644 --- a/vendor/github.com/minio/sha256-simd/sha256blockSha_amd64_test.go +++ b/vendor/github.com/minio/sha256-simd/sha256block_amd64_test.go @@ -1,4 +1,5 @@ -//+build !noasm,!appengine,gc +//go:build !noasm && !appengine && gc +// +build !noasm,!appengine,gc package sha256 @@ -20,7 +21,7 @@ func sha256hash(m []byte) (r [32]byte) { h[6] = 0x1f83d9ab h[7] = 0x5be0cd19 - blockSha(&h, m) + blockIntelSha(&h, m) l0 := len(m) l := l0 & (BlockSize - 1) m = m[l0-l:] @@ -31,7 +32,7 @@ func sha256hash(m []byte) (r [32]byte) { k[l] = 0x80 if l >= 56 { - blockSha(&h, k[:]) + blockIntelSha(&h, k[:]) binary.LittleEndian.PutUint64(k[0:8], 0) binary.LittleEndian.PutUint64(k[8:16], 0) binary.LittleEndian.PutUint64(k[16:24], 0) @@ -41,7 +42,7 @@ func sha256hash(m []byte) (r [32]byte) { binary.LittleEndian.PutUint64(k[48:56], 0) } binary.BigEndian.PutUint64(k[56:64], uint64(l0)<<3) - blockSha(&h, k[:]) + blockIntelSha(&h, k[:]) binary.BigEndian.PutUint32(r[0:4], h[0]) binary.BigEndian.PutUint32(r[4:8], h[1]) @@ -71,7 +72,7 @@ func TestSha0(t *testing.T) { } func TestSha1(t *testing.T) { - if hasSHAExtensions() && !runTestSha(sha256hash) { + if hasIntelSha && !runTestSha(sha256hash) { t.Errorf("FAILED") } } diff --git a/vendor/github.com/minio/sha256-simd/sha256block_arm64.go b/vendor/github.com/minio/sha256-simd/sha256block_arm64.go index 58ccf6eb..d4369e24 100644 --- a/vendor/github.com/minio/sha256-simd/sha256block_arm64.go +++ b/vendor/github.com/minio/sha256-simd/sha256block_arm64.go @@ -1,4 +1,5 @@ -//+build !noasm,!appengine,gc +//go:build !noasm && !appengine && gc +// +build !noasm,!appengine,gc /* * Minio Cloud Storage, (C) 2016 Minio, Inc. @@ -18,18 +19,18 @@ package sha256 -func blockShaGo(dig *digest, p []byte) { - panic("blockShaGoc called unexpectedly") +func blockIntelShaGo(dig *digest, p []byte) { + panic("blockIntelShaGo called unexpectedly") } //go:noescape -func blockArm(h []uint32, message []uint8) +func blockArmSha2(h []uint32, message []uint8) -func blockArmGo(dig *digest, p []byte) { +func blockArmSha2Go(dig *digest, p []byte) { h := []uint32{dig.h[0], dig.h[1], dig.h[2], dig.h[3], dig.h[4], dig.h[5], dig.h[6], dig.h[7]} - blockArm(h[:], p[:]) + blockArmSha2(h[:], p[:]) dig.h[0], dig.h[1], dig.h[2], dig.h[3], dig.h[4], dig.h[5], dig.h[6], dig.h[7] = h[0], h[1], h[2], h[3], h[4], h[5], h[6], h[7] diff --git a/vendor/github.com/minio/sha256-simd/sha256block_arm64.s b/vendor/github.com/minio/sha256-simd/sha256block_arm64.s index d85170d9..7ab88b16 100644 --- a/vendor/github.com/minio/sha256-simd/sha256block_arm64.s +++ b/vendor/github.com/minio/sha256-simd/sha256block_arm64.s @@ -25,7 +25,7 @@ // their Plan9 equivalents // -TEXT ·blockArm(SB), 7, $0 +TEXT ·blockArmSha2(SB), 7, $0 MOVD h+0(FP), R0 MOVD message+24(FP), R1 MOVD message_len+32(FP), R2 // length of message diff --git a/vendor/github.com/minio/sha256-simd/sha256block_other.go b/vendor/github.com/minio/sha256-simd/sha256block_other.go index ec586c06..94d7eb0b 100644 --- a/vendor/github.com/minio/sha256-simd/sha256block_other.go +++ b/vendor/github.com/minio/sha256-simd/sha256block_other.go @@ -1,4 +1,5 @@ -//+build appengine noasm !amd64,!arm64 !gc +//go:build appengine || noasm || (!amd64 && !arm64) || !gc +// +build appengine noasm !amd64,!arm64 !gc /* * Minio Cloud Storage, (C) 2019 Minio, Inc. @@ -18,11 +19,11 @@ package sha256 -func blockShaGo(dig *digest, p []byte) { - panic("blockShaGo called unexpectedly") +func blockIntelShaGo(dig *digest, p []byte) { + panic("blockIntelShaGo called unexpectedly") } -func blockArmGo(dig *digest, p []byte) { - panic("blockArmGo called unexpectedly") +func blockArmSha2Go(dig *digest, p []byte) { + panic("blockArmSha2Go called unexpectedly") } diff --git a/vendor/github.com/minio/sha256-simd/test-architectures.sh b/vendor/github.com/minio/sha256-simd/test-architectures.sh old mode 100755 new mode 100644