You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
29 lines
653 B
29 lines
653 B
// Copyright 2020 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. |
|
|
|
package xor |
|
|
|
// xorBytes xors the bytes in a and b. The destination should have enough |
|
// space, otherwise xorBytes will panic. Returns the number of bytes xor'd. |
|
func xorBytes(dst, a, b []byte) int { |
|
n := len(a) |
|
if len(b) < n { |
|
n = len(b) |
|
} |
|
if n == 0 { |
|
return 0 |
|
} |
|
// make sure dst has enough space |
|
_ = dst[n-1] |
|
|
|
xorBytesARM64(&dst[0], &a[0], &b[0], n) |
|
return n |
|
} |
|
|
|
func xorWords(dst, a, b []byte) { |
|
xorBytes(dst, a, b) |
|
} |
|
|
|
//go:noescape |
|
func xorBytesARM64(dst, a, b *byte, n int)
|
|
|