summaryrefslogtreecommitdiff
path: root/vendor/github.com/cloudwego/base64x/internal/native/dispatch.go
diff options
context:
space:
mode:
authorLibravatar dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>2025-04-14 09:43:56 +0200
committerLibravatar GitHub <noreply@github.com>2025-04-14 09:43:56 +0200
commit51b9ef5c346f333e558eca38fd954464322f3b7d (patch)
treebf5cd0de887a27c1afc66345b1a464921d96e503 /vendor/github.com/cloudwego/base64x/internal/native/dispatch.go
parent[docs] Remind the user that password resets don't work without restarting. (#... (diff)
downloadgotosocial-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.go63
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.")
+ }
+}