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.
65 lines
1.1 KiB
65 lines
1.1 KiB
// 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. |
|
|
|
// +build amd64,!gccgo,!appengine |
|
|
|
// func cswap(inout *[4][5]uint64, v uint64) |
|
TEXT ·cswap(SB),7,$0 |
|
MOVQ inout+0(FP),DI |
|
MOVQ v+8(FP),SI |
|
|
|
SUBQ $1, SI |
|
NOTQ SI |
|
MOVQ SI, X15 |
|
PSHUFD $0x44, X15, X15 |
|
|
|
MOVOU 0(DI), X0 |
|
MOVOU 16(DI), X2 |
|
MOVOU 32(DI), X4 |
|
MOVOU 48(DI), X6 |
|
MOVOU 64(DI), X8 |
|
MOVOU 80(DI), X1 |
|
MOVOU 96(DI), X3 |
|
MOVOU 112(DI), X5 |
|
MOVOU 128(DI), X7 |
|
MOVOU 144(DI), X9 |
|
|
|
MOVO X1, X10 |
|
MOVO X3, X11 |
|
MOVO X5, X12 |
|
MOVO X7, X13 |
|
MOVO X9, X14 |
|
|
|
PXOR X0, X10 |
|
PXOR X2, X11 |
|
PXOR X4, X12 |
|
PXOR X6, X13 |
|
PXOR X8, X14 |
|
PAND X15, X10 |
|
PAND X15, X11 |
|
PAND X15, X12 |
|
PAND X15, X13 |
|
PAND X15, X14 |
|
PXOR X10, X0 |
|
PXOR X10, X1 |
|
PXOR X11, X2 |
|
PXOR X11, X3 |
|
PXOR X12, X4 |
|
PXOR X12, X5 |
|
PXOR X13, X6 |
|
PXOR X13, X7 |
|
PXOR X14, X8 |
|
PXOR X14, X9 |
|
|
|
MOVOU X0, 0(DI) |
|
MOVOU X2, 16(DI) |
|
MOVOU X4, 32(DI) |
|
MOVOU X6, 48(DI) |
|
MOVOU X8, 64(DI) |
|
MOVOU X1, 80(DI) |
|
MOVOU X3, 96(DI) |
|
MOVOU X5, 112(DI) |
|
MOVOU X7, 128(DI) |
|
MOVOU X9, 144(DI) |
|
RET
|
|
|