• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Copyright 2012 The Go Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style
3// license that can be found in the LICENSE file.
4
5// This code was translated into a form compatible with 6a from the public
6// domain sources in SUPERCOP: http://bench.cr.yp.to/supercop.html
7
8// +build amd64,!gccgo,!appengine
9
10// func freeze(inout *[5]uint64)
11TEXT ·freeze(SB),7,$96-8
12	MOVQ inout+0(FP), DI
13
14	MOVQ SP,R11
15	MOVQ $31,CX
16	NOTQ CX
17	ANDQ CX,SP
18	ADDQ $32,SP
19
20	MOVQ R11,0(SP)
21	MOVQ R12,8(SP)
22	MOVQ R13,16(SP)
23	MOVQ R14,24(SP)
24	MOVQ R15,32(SP)
25	MOVQ BX,40(SP)
26	MOVQ BP,48(SP)
27	MOVQ 0(DI),SI
28	MOVQ 8(DI),DX
29	MOVQ 16(DI),CX
30	MOVQ 24(DI),R8
31	MOVQ 32(DI),R9
32	MOVQ ·REDMASK51(SB),AX
33	MOVQ AX,R10
34	SUBQ $18,R10
35	MOVQ $3,R11
36REDUCELOOP:
37	MOVQ SI,R12
38	SHRQ $51,R12
39	ANDQ AX,SI
40	ADDQ R12,DX
41	MOVQ DX,R12
42	SHRQ $51,R12
43	ANDQ AX,DX
44	ADDQ R12,CX
45	MOVQ CX,R12
46	SHRQ $51,R12
47	ANDQ AX,CX
48	ADDQ R12,R8
49	MOVQ R8,R12
50	SHRQ $51,R12
51	ANDQ AX,R8
52	ADDQ R12,R9
53	MOVQ R9,R12
54	SHRQ $51,R12
55	ANDQ AX,R9
56	IMUL3Q $19,R12,R12
57	ADDQ R12,SI
58	SUBQ $1,R11
59	JA REDUCELOOP
60	MOVQ $1,R12
61	CMPQ R10,SI
62	CMOVQLT R11,R12
63	CMPQ AX,DX
64	CMOVQNE R11,R12
65	CMPQ AX,CX
66	CMOVQNE R11,R12
67	CMPQ AX,R8
68	CMOVQNE R11,R12
69	CMPQ AX,R9
70	CMOVQNE R11,R12
71	NEGQ R12
72	ANDQ R12,AX
73	ANDQ R12,R10
74	SUBQ R10,SI
75	SUBQ AX,DX
76	SUBQ AX,CX
77	SUBQ AX,R8
78	SUBQ AX,R9
79	MOVQ SI,0(DI)
80	MOVQ DX,8(DI)
81	MOVQ CX,16(DI)
82	MOVQ R8,24(DI)
83	MOVQ R9,32(DI)
84	MOVQ 0(SP),R11
85	MOVQ 8(SP),R12
86	MOVQ 16(SP),R13
87	MOVQ 24(SP),R14
88	MOVQ 32(SP),R15
89	MOVQ 40(SP),BX
90	MOVQ 48(SP),BP
91	MOVQ R11,SP
92	MOVQ DI,AX
93	MOVQ SI,DX
94	RET
95