diff options
| author | 2025-04-14 09:43:56 +0200 | |
|---|---|---|
| committer | 2025-04-14 09:43:56 +0200 | |
| commit | 51b9ef5c346f333e558eca38fd954464322f3b7d (patch) | |
| tree | bf5cd0de887a27c1afc66345b1a464921d96e503 /vendor/github.com/cloudwego/base64x/internal/native/dispatch.go | |
| parent | [docs] Remind the user that password resets don't work without restarting. (#... (diff) | |
| download | gotosocial-51b9ef5c346f333e558eca38fd954464322f3b7d.tar.xz | |
[chore]: Bump github.com/gin-contrib/gzip from 1.2.2 to 1.2.3 (#4000)
Bumps [github.com/gin-contrib/gzip](https://github.com/gin-contrib/gzip) from 1.2.2 to 1.2.3.
- [Release notes](https://github.com/gin-contrib/gzip/releases)
- [Changelog](https://github.com/gin-contrib/gzip/blob/master/.goreleaser.yaml)
- [Commits](https://github.com/gin-contrib/gzip/compare/v1.2.2...v1.2.3)
---
updated-dependencies:
- dependency-name: github.com/gin-contrib/gzip
dependency-version: 1.2.3
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Diffstat (limited to 'vendor/github.com/cloudwego/base64x/internal/native/dispatch.go')
| -rw-r--r-- | vendor/github.com/cloudwego/base64x/internal/native/dispatch.go | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/vendor/github.com/cloudwego/base64x/internal/native/dispatch.go b/vendor/github.com/cloudwego/base64x/internal/native/dispatch.go new file mode 100644 index 000000000..c4f489b10 --- /dev/null +++ b/vendor/github.com/cloudwego/base64x/internal/native/dispatch.go @@ -0,0 +1,63 @@ +package native + +import ( + "unsafe" + + `github.com/klauspost/cpuid/v2` + "github.com/cloudwego/base64x/internal/rt" + "github.com/cloudwego/base64x/internal/native/avx2" + "github.com/cloudwego/base64x/internal/native/sse" +) + +var ( + hasAVX2 = cpuid.CPU.Has(cpuid.AVX2) + hasSSE = cpuid.CPU.Has(cpuid.SSE) +) + +var ( + S_b64decode uintptr + S_b64encode uintptr +) + +var ( + F_b64decode func(out unsafe.Pointer, src unsafe.Pointer, len int, mod int) (ret int) + F_b64encode func(out unsafe.Pointer, src unsafe.Pointer, mod int) +) + +func useAVX2() { + avx2.Use() + S_b64decode = avx2.S_b64decode + S_b64encode = avx2.S_b64encode + + F_b64decode = avx2.F_b64decode + F_b64encode = avx2.F_b64encode +} + +func useSSE() { + sse.Use() + S_b64decode = sse.S_b64decode + S_b64encode = sse.S_b64encode + + F_b64decode = sse.F_b64decode + F_b64encode = sse.F_b64encode +} + +//go:nosplit +func B64Decode(out *[]byte, src unsafe.Pointer, len int, mod int) (ret int) { + return F_b64decode(rt.NoEscape(unsafe.Pointer(out)), rt.NoEscape(unsafe.Pointer(src)), len, mod) +} + +//go:nosplit +func B64Encode(out *[]byte, src *[]byte, mod int) { + F_b64encode(rt.NoEscape(unsafe.Pointer(out)), rt.NoEscape(unsafe.Pointer(src)), mod) +} + +func init() { + if hasAVX2 { + useAVX2() + } else if hasSSE { + useSSE() + } else { + panic("Unsupported CPU, lacks of AVX2 or SSE CPUID Flag. maybe it's too old to run Sonic.") + } +} |
