1// Code generated by command: go run asm.go -out sip13_amd64.s. DO NOT EDIT.
2
3// +build !noasm
4
5#include "textflag.h"
6
7// func Sum64(k0 uint64, k1 uint64, p []byte) uint64
8TEXT ·Sum64(SB), NOSPLIT, $0-48
9	MOVQ k0+0(FP), AX
10	MOVQ AX, DX
11	MOVQ k1+8(FP), CX
12	MOVQ CX, BX
13	MOVQ $0x736f6d6570736575, BP
14	XORQ BP, AX
15	MOVQ $0x646f72616e646f6d, BP
16	XORQ BP, CX
17	MOVQ $0x6c7967656e657261, BP
18	XORQ BP, DX
19	MOVQ $0x7465646279746573, BP
20	XORQ BP, BX
21	MOVQ p_base+16(FP), BP
22	MOVQ p_len+24(FP), SI
23	MOVQ SI, DI
24	SHLQ $0x38, DI
25	CMPQ SI, $0x08
26	JL   loop_end
27
28loop_begin:
29	MOVQ (BP), R8
30	XORQ R8, BX
31	ADDQ CX, AX
32	ADDQ BX, DX
33	ROLQ $0x0d, CX
34	ROLQ $0x10, BX
35	XORQ AX, CX
36	XORQ DX, BX
37	ROLQ $0x20, AX
38	ADDQ CX, DX
39	ADDQ BX, AX
40	ROLQ $0x11, CX
41	ROLQ $0x15, BX
42	XORQ DX, CX
43	XORQ AX, BX
44	ROLQ $0x20, DX
45	XORQ R8, AX
46	ADDQ $0x08, BP
47	SUBQ $0x08, SI
48	CMPQ SI, $0x08
49	JGE  loop_begin
50
51loop_end:
52	CMPQ    SI, $0x00
53	JE      sw0
54	CMPQ    SI, $0x01
55	JE      sw1
56	CMPQ    SI, $0x02
57	JE      sw2
58	CMPQ    SI, $0x03
59	JE      sw3
60	CMPQ    SI, $0x04
61	JE      sw4
62	CMPQ    SI, $0x05
63	JE      sw5
64	CMPQ    SI, $0x06
65	JE      sw6
66	MOVBQZX 6(BP), SI
67	SHLQ    $0x30, SI
68	ORQ     SI, DI
69
70sw6:
71	MOVBQZX 5(BP), SI
72	SHLQ    $0x28, SI
73	ORQ     SI, DI
74
75sw5:
76	MOVBQZX 4(BP), SI
77	SHLQ    $0x20, SI
78	ORQ     SI, DI
79
80sw4:
81	MOVBQZX 3(BP), SI
82	SHLQ    $0x18, SI
83	ORQ     SI, DI
84
85sw3:
86	MOVBQZX 2(BP), SI
87	SHLQ    $0x10, SI
88	ORQ     SI, DI
89
90sw2:
91	MOVBQZX 1(BP), SI
92	SHLQ    $0x08, SI
93	ORQ     SI, DI
94
95sw1:
96	MOVBQZX (BP), SI
97	SHLQ    $0x00, SI
98	ORQ     SI, DI
99
100sw0:
101	XORQ DI, BX
102	ADDQ CX, AX
103	ADDQ BX, DX
104	ROLQ $0x0d, CX
105	ROLQ $0x10, BX
106	XORQ AX, CX
107	XORQ DX, BX
108	ROLQ $0x20, AX
109	ADDQ CX, DX
110	ADDQ BX, AX
111	ROLQ $0x11, CX
112	ROLQ $0x15, BX
113	XORQ DX, CX
114	XORQ AX, BX
115	ROLQ $0x20, DX
116	XORQ DI, AX
117	XORQ $0xff, DX
118	ADDQ CX, AX
119	ADDQ BX, DX
120	ROLQ $0x0d, CX
121	ROLQ $0x10, BX
122	XORQ AX, CX
123	XORQ DX, BX
124	ROLQ $0x20, AX
125	ADDQ CX, DX
126	ADDQ BX, AX
127	ROLQ $0x11, CX
128	ROLQ $0x15, BX
129	XORQ DX, CX
130	XORQ AX, BX
131	ROLQ $0x20, DX
132	ADDQ CX, AX
133	ADDQ BX, DX
134	ROLQ $0x0d, CX
135	ROLQ $0x10, BX
136	XORQ AX, CX
137	XORQ DX, BX
138	ROLQ $0x20, AX
139	ADDQ CX, DX
140	ADDQ BX, AX
141	ROLQ $0x11, CX
142	ROLQ $0x15, BX
143	XORQ DX, CX
144	XORQ AX, BX
145	ROLQ $0x20, DX
146	ADDQ CX, AX
147	ADDQ BX, DX
148	ROLQ $0x0d, CX
149	ROLQ $0x10, BX
150	XORQ AX, CX
151	XORQ DX, BX
152	ROLQ $0x20, AX
153	ADDQ CX, DX
154	ADDQ BX, AX
155	ROLQ $0x11, CX
156	ROLQ $0x15, BX
157	XORQ DX, CX
158	XORQ AX, BX
159	ROLQ $0x20, DX
160	XORQ CX, AX
161	XORQ BX, DX
162	XORQ DX, AX
163	MOVQ AX, ret+40(FP)
164	RET
165
166// func Sum64Str(k0 uint64, k1 uint64, p string) uint64
167TEXT ·Sum64Str(SB), NOSPLIT, $0-40
168	MOVQ k0+0(FP), AX
169	MOVQ AX, DX
170	MOVQ k1+8(FP), CX
171	MOVQ CX, BX
172	MOVQ $0x736f6d6570736575, BP
173	XORQ BP, AX
174	MOVQ $0x646f72616e646f6d, BP
175	XORQ BP, CX
176	MOVQ $0x6c7967656e657261, BP
177	XORQ BP, DX
178	MOVQ $0x7465646279746573, BP
179	XORQ BP, BX
180	MOVQ p_base+16(FP), BP
181	MOVQ p_len+24(FP), SI
182	MOVQ SI, DI
183	SHLQ $0x38, DI
184	CMPQ SI, $0x08
185	JL   loop_end
186
187loop_begin:
188	MOVQ (BP), R8
189	XORQ R8, BX
190	ADDQ CX, AX
191	ADDQ BX, DX
192	ROLQ $0x0d, CX
193	ROLQ $0x10, BX
194	XORQ AX, CX
195	XORQ DX, BX
196	ROLQ $0x20, AX
197	ADDQ CX, DX
198	ADDQ BX, AX
199	ROLQ $0x11, CX
200	ROLQ $0x15, BX
201	XORQ DX, CX
202	XORQ AX, BX
203	ROLQ $0x20, DX
204	XORQ R8, AX
205	ADDQ $0x08, BP
206	SUBQ $0x08, SI
207	CMPQ SI, $0x08
208	JGE  loop_begin
209
210loop_end:
211	CMPQ    SI, $0x00
212	JE      sw0
213	CMPQ    SI, $0x01
214	JE      sw1
215	CMPQ    SI, $0x02
216	JE      sw2
217	CMPQ    SI, $0x03
218	JE      sw3
219	CMPQ    SI, $0x04
220	JE      sw4
221	CMPQ    SI, $0x05
222	JE      sw5
223	CMPQ    SI, $0x06
224	JE      sw6
225	MOVBQZX 6(BP), SI
226	SHLQ    $0x30, SI
227	ORQ     SI, DI
228
229sw6:
230	MOVBQZX 5(BP), SI
231	SHLQ    $0x28, SI
232	ORQ     SI, DI
233
234sw5:
235	MOVBQZX 4(BP), SI
236	SHLQ    $0x20, SI
237	ORQ     SI, DI
238
239sw4:
240	MOVBQZX 3(BP), SI
241	SHLQ    $0x18, SI
242	ORQ     SI, DI
243
244sw3:
245	MOVBQZX 2(BP), SI
246	SHLQ    $0x10, SI
247	ORQ     SI, DI
248
249sw2:
250	MOVBQZX 1(BP), SI
251	SHLQ    $0x08, SI
252	ORQ     SI, DI
253
254sw1:
255	MOVBQZX (BP), SI
256	SHLQ    $0x00, SI
257	ORQ     SI, DI
258
259sw0:
260	XORQ DI, BX
261	ADDQ CX, AX
262	ADDQ BX, DX
263	ROLQ $0x0d, CX
264	ROLQ $0x10, BX
265	XORQ AX, CX
266	XORQ DX, BX
267	ROLQ $0x20, AX
268	ADDQ CX, DX
269	ADDQ BX, AX
270	ROLQ $0x11, CX
271	ROLQ $0x15, BX
272	XORQ DX, CX
273	XORQ AX, BX
274	ROLQ $0x20, DX
275	XORQ DI, AX
276	XORQ $0xff, DX
277	ADDQ CX, AX
278	ADDQ BX, DX
279	ROLQ $0x0d, CX
280	ROLQ $0x10, BX
281	XORQ AX, CX
282	XORQ DX, BX
283	ROLQ $0x20, AX
284	ADDQ CX, DX
285	ADDQ BX, AX
286	ROLQ $0x11, CX
287	ROLQ $0x15, BX
288	XORQ DX, CX
289	XORQ AX, BX
290	ROLQ $0x20, DX
291	ADDQ CX, AX
292	ADDQ BX, DX
293	ROLQ $0x0d, CX
294	ROLQ $0x10, BX
295	XORQ AX, CX
296	XORQ DX, BX
297	ROLQ $0x20, AX
298	ADDQ CX, DX
299	ADDQ BX, AX
300	ROLQ $0x11, CX
301	ROLQ $0x15, BX
302	XORQ DX, CX
303	XORQ AX, BX
304	ROLQ $0x20, DX
305	ADDQ CX, AX
306	ADDQ BX, DX
307	ROLQ $0x0d, CX
308	ROLQ $0x10, BX
309	XORQ AX, CX
310	XORQ DX, BX
311	ROLQ $0x20, AX
312	ADDQ CX, DX
313	ADDQ BX, AX
314	ROLQ $0x11, CX
315	ROLQ $0x15, BX
316	XORQ DX, CX
317	XORQ AX, BX
318	ROLQ $0x20, DX
319	XORQ CX, AX
320	XORQ BX, DX
321	XORQ DX, AX
322	MOVQ AX, ret+32(FP)
323	RET
324