66 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
		
			1.1 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.
 | |
| 
 | |
| // +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
 |