| // Copyright 2025 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| //go:build !purego |
| |
| package subtle |
| |
| import ( |
| "crypto/internal/fips140deps/cpu" |
| "crypto/internal/impl" |
| ) |
| |
| var useLSX = cpu.LOONG64HasLSX |
| var useLASX = cpu.LOONG64HasLASX |
| |
| func init() { |
| impl.Register("subtle", "LSX", &useLSX) |
| impl.Register("subtle", "LASX", &useLASX) |
| } |
| |
| //go:noescape |
| func xorBytesBasic(dst, a, b *byte, n int) |
| |
| //go:noescape |
| func xorBytesLSX(dst, a, b *byte, n int) |
| |
| //go:noescape |
| func xorBytesLASX(dst, a, b *byte, n int) |
| |
| func xorBytes(dst, a, b *byte, n int) { |
| if useLASX { |
| xorBytesLASX(dst, a, b, n) |
| } else if useLSX { |
| xorBytesLSX(dst, a, b, n) |
| } else { |
| xorBytesBasic(dst, a, b, n) |
| } |
| } |