Use the recently added CPU feature detection API rather than custom assembly. While we are here also make vet happy by renaming params in the asm file to chain to match the go function declaration. Change-Id: Ide0171793c9fa5ef6671b394e97a27f2c6e44a9f Reviewed-on: https://go-review.googlesource.com/c/164381 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
34 lines
959 B
ArmAsm
34 lines
959 B
ArmAsm
// Copyright 2017 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.
|
|
|
|
//+build !gccgo,!appengine
|
|
|
|
#include "textflag.h"
|
|
|
|
// func kimd(function code, chain *[200]byte, src []byte)
|
|
TEXT ·kimd(SB), NOFRAME|NOSPLIT, $0-40
|
|
MOVD function+0(FP), R0
|
|
MOVD chain+8(FP), R1
|
|
LMG src+16(FP), R2, R3 // R2=base, R3=len
|
|
|
|
continue:
|
|
WORD $0xB93E0002 // KIMD --, R2
|
|
BVS continue // continue if interrupted
|
|
MOVD $0, R0 // reset R0 for pre-go1.8 compilers
|
|
RET
|
|
|
|
// func klmd(function code, chain *[200]byte, dst, src []byte)
|
|
TEXT ·klmd(SB), NOFRAME|NOSPLIT, $0-64
|
|
// TODO: SHAKE support
|
|
MOVD function+0(FP), R0
|
|
MOVD chain+8(FP), R1
|
|
LMG dst+16(FP), R2, R3 // R2=base, R3=len
|
|
LMG src+40(FP), R4, R5 // R4=base, R5=len
|
|
|
|
continue:
|
|
WORD $0xB93F0024 // KLMD R2, R4
|
|
BVS continue // continue if interrupted
|
|
MOVD $0, R0 // reset R0 for pre-go1.8 compilers
|
|
RET
|