forked from mystiq/dex
88 lines
1.5 KiB
ArmAsm
88 lines
1.5 KiB
ArmAsm
// Copyright 2012 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.
|
|
|
|
// This code was translated into a form compatible with 6a from the public
|
|
// domain sources in SUPERCOP: http://bench.cr.yp.to/supercop.html
|
|
|
|
// +build amd64,!gccgo,!appengine
|
|
|
|
// func cswap(inout *[5]uint64, v uint64)
|
|
TEXT ·cswap(SB),7,$0
|
|
MOVQ inout+0(FP),DI
|
|
MOVQ v+8(FP),SI
|
|
|
|
CMPQ SI,$1
|
|
MOVQ 0(DI),SI
|
|
MOVQ 80(DI),DX
|
|
MOVQ 8(DI),CX
|
|
MOVQ 88(DI),R8
|
|
MOVQ SI,R9
|
|
CMOVQEQ DX,SI
|
|
CMOVQEQ R9,DX
|
|
MOVQ CX,R9
|
|
CMOVQEQ R8,CX
|
|
CMOVQEQ R9,R8
|
|
MOVQ SI,0(DI)
|
|
MOVQ DX,80(DI)
|
|
MOVQ CX,8(DI)
|
|
MOVQ R8,88(DI)
|
|
MOVQ 16(DI),SI
|
|
MOVQ 96(DI),DX
|
|
MOVQ 24(DI),CX
|
|
MOVQ 104(DI),R8
|
|
MOVQ SI,R9
|
|
CMOVQEQ DX,SI
|
|
CMOVQEQ R9,DX
|
|
MOVQ CX,R9
|
|
CMOVQEQ R8,CX
|
|
CMOVQEQ R9,R8
|
|
MOVQ SI,16(DI)
|
|
MOVQ DX,96(DI)
|
|
MOVQ CX,24(DI)
|
|
MOVQ R8,104(DI)
|
|
MOVQ 32(DI),SI
|
|
MOVQ 112(DI),DX
|
|
MOVQ 40(DI),CX
|
|
MOVQ 120(DI),R8
|
|
MOVQ SI,R9
|
|
CMOVQEQ DX,SI
|
|
CMOVQEQ R9,DX
|
|
MOVQ CX,R9
|
|
CMOVQEQ R8,CX
|
|
CMOVQEQ R9,R8
|
|
MOVQ SI,32(DI)
|
|
MOVQ DX,112(DI)
|
|
MOVQ CX,40(DI)
|
|
MOVQ R8,120(DI)
|
|
MOVQ 48(DI),SI
|
|
MOVQ 128(DI),DX
|
|
MOVQ 56(DI),CX
|
|
MOVQ 136(DI),R8
|
|
MOVQ SI,R9
|
|
CMOVQEQ DX,SI
|
|
CMOVQEQ R9,DX
|
|
MOVQ CX,R9
|
|
CMOVQEQ R8,CX
|
|
CMOVQEQ R9,R8
|
|
MOVQ SI,48(DI)
|
|
MOVQ DX,128(DI)
|
|
MOVQ CX,56(DI)
|
|
MOVQ R8,136(DI)
|
|
MOVQ 64(DI),SI
|
|
MOVQ 144(DI),DX
|
|
MOVQ 72(DI),CX
|
|
MOVQ 152(DI),R8
|
|
MOVQ SI,R9
|
|
CMOVQEQ DX,SI
|
|
CMOVQEQ R9,DX
|
|
MOVQ CX,R9
|
|
CMOVQEQ R8,CX
|
|
CMOVQEQ R9,R8
|
|
MOVQ SI,64(DI)
|
|
MOVQ DX,144(DI)
|
|
MOVQ CX,72(DI)
|
|
MOVQ R8,152(DI)
|
|
MOVQ DI,AX
|
|
MOVQ SI,DX
|
|
RET
|