1
2
3
4
5 package main
6
7 import (
8 "os"
9
10 . "github.com/mmcloughlin/avo/build"
11 . "github.com/mmcloughlin/avo/operand"
12 . "github.com/mmcloughlin/avo/reg"
13 )
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57 const ThatPeskyUnicodeDot = "\u00b7"
58
59 var _K = []uint64{
60 0x428a2f98d728ae22,
61 0x7137449123ef65cd,
62 0xb5c0fbcfec4d3b2f,
63 0xe9b5dba58189dbbc,
64 0x3956c25bf348b538,
65 0x59f111f1b605d019,
66 0x923f82a4af194f9b,
67 0xab1c5ed5da6d8118,
68 0xd807aa98a3030242,
69 0x12835b0145706fbe,
70 0x243185be4ee4b28c,
71 0x550c7dc3d5ffb4e2,
72 0x72be5d74f27b896f,
73 0x80deb1fe3b1696b1,
74 0x9bdc06a725c71235,
75 0xc19bf174cf692694,
76 0xe49b69c19ef14ad2,
77 0xefbe4786384f25e3,
78 0x0fc19dc68b8cd5b5,
79 0x240ca1cc77ac9c65,
80 0x2de92c6f592b0275,
81 0x4a7484aa6ea6e483,
82 0x5cb0a9dcbd41fbd4,
83 0x76f988da831153b5,
84 0x983e5152ee66dfab,
85 0xa831c66d2db43210,
86 0xb00327c898fb213f,
87 0xbf597fc7beef0ee4,
88 0xc6e00bf33da88fc2,
89 0xd5a79147930aa725,
90 0x06ca6351e003826f,
91 0x142929670a0e6e70,
92 0x27b70a8546d22ffc,
93 0x2e1b21385c26c926,
94 0x4d2c6dfc5ac42aed,
95 0x53380d139d95b3df,
96 0x650a73548baf63de,
97 0x766a0abb3c77b2a8,
98 0x81c2c92e47edaee6,
99 0x92722c851482353b,
100 0xa2bfe8a14cf10364,
101 0xa81a664bbc423001,
102 0xc24b8b70d0f89791,
103 0xc76c51a30654be30,
104 0xd192e819d6ef5218,
105 0xd69906245565a910,
106 0xf40e35855771202a,
107 0x106aa07032bbd1b8,
108 0x19a4c116b8d2d0c8,
109 0x1e376c085141ab53,
110 0x2748774cdf8eeb99,
111 0x34b0bcb5e19b48a8,
112 0x391c0cb3c5c95a63,
113 0x4ed8aa4ae3418acb,
114 0x5b9cca4f7763e373,
115 0x682e6ff3d6b2b8a3,
116 0x748f82ee5defb2fc,
117 0x78a5636f43172f60,
118 0x84c87814a1f0ab72,
119 0x8cc702081a6439ec,
120 0x90befffa23631e28,
121 0xa4506cebde82bde9,
122 0xbef9a3f7b2c67915,
123 0xc67178f2e372532b,
124 0xca273eceea26619c,
125 0xd186b8c721c0c207,
126 0xeada7dd6cde0eb1e,
127 0xf57d4f7fee6ed178,
128 0x06f067aa72176fba,
129 0x0a637dc5a2c898a6,
130 0x113f9804bef90dae,
131 0x1b710b35131c471b,
132 0x28db77f523047d84,
133 0x32caab7b40c72493,
134 0x3c9ebe0a15c9bebc,
135 0x431d67c49c100d4c,
136 0x4cc5d4becb3e42b6,
137 0x597f299cfc657e2a,
138 0x5fcb6fab3ad6faec,
139 0x6c44198c4a475817,
140 }
141
142 func main() {
143
144 os.Setenv("GOOS", "linux")
145 os.Setenv("GOARCH", "amd64")
146
147 Package("crypto/internal/fips140/sha512")
148 ConstraintExpr("!purego")
149 blockAVX2()
150 Generate()
151 }
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166 var (
167 YFER_SIZE int = (4 * 8)
168 SRND_SIZE = (1 * 8)
169 INP_SIZE = (1 * 8)
170
171 frame_YFER = (0)
172 frame_SRND = (frame_YFER + YFER_SIZE)
173 frame_INP = (frame_SRND + SRND_SIZE)
174 frame_INPEND = (frame_INP + INP_SIZE)
175 )
176
177
178 func addm(p1 Mem, p2 GPPhysical) {
179 ADDQ(p1, p2)
180 MOVQ(p2, p1)
181 }
182
183
184 func COPY_YMM_AND_BSWAP(p1 VecPhysical, p2 Mem, p3 VecPhysical) {
185 VMOVDQU(p2, p1)
186 VPSHUFB(p3, p1, p1)
187 }
188
189
190 func MY_VPALIGNR(YDST, YSRC1, YSRC2 VecPhysical, RVAL int) {
191 VPERM2F128(U8(0x3), YSRC2, YSRC1, YDST)
192 VPALIGNR(U8(RVAL), YSRC2, YDST, YDST)
193 }
194
195
196 func blockAVX2() {
197 Implement("blockAVX2")
198 Attributes(NOSPLIT)
199 AllocLocal(56)
200
201 Load(Param("dig"), RSI)
202 Load(Param("p").Base(), RDI)
203 Load(Param("p").Len(), RDX)
204
205 SHRQ(Imm(7), RDX)
206 SHLQ(Imm(7), RDX)
207
208 JZ(LabelRef("done_hash"))
209 ADDQ(RDI, RDX)
210 MOVQ(RDX, Mem{Base: SP}.Offset(frame_INPEND))
211
212 MOVQ(Mem{Base: SI}.Offset(0*8), RAX)
213 MOVQ(Mem{Base: SI}.Offset(1*8), RBX)
214 MOVQ(Mem{Base: SI}.Offset(2*8), RCX)
215 MOVQ(Mem{Base: SI}.Offset(3*8), R8)
216 MOVQ(Mem{Base: SI}.Offset(4*8), RDX)
217 MOVQ(Mem{Base: SI}.Offset(5*8), R9)
218 MOVQ(Mem{Base: SI}.Offset(6*8), R10)
219 MOVQ(Mem{Base: SI}.Offset(7*8), R11)
220
221 PSHUFFLE_BYTE_FLIP_MASK := PSHUFFLE_BYTE_FLIP_MASK_DATA()
222 VMOVDQU(PSHUFFLE_BYTE_FLIP_MASK, Y9)
223
224 loop0()
225 loop1()
226 loop2()
227 done_hash()
228 }
229
230
231 func loop0() {
232 Label("loop0")
233
234 _K := NewDataAddr(Symbol{Name: "$" + ThatPeskyUnicodeDot + "_K"}, 0)
235 MOVQ(_K, RBP)
236
237
238 COPY_YMM_AND_BSWAP(Y4, Mem{Base: DI}.Offset(0*32), Y9)
239 COPY_YMM_AND_BSWAP(Y5, Mem{Base: DI}.Offset(1*32), Y9)
240 COPY_YMM_AND_BSWAP(Y6, Mem{Base: DI}.Offset(2*32), Y9)
241 COPY_YMM_AND_BSWAP(Y7, Mem{Base: DI}.Offset(3*32), Y9)
242
243 MOVQ(RDI, Mem{Base: SP}.Offset(frame_INP))
244
245
246 MOVQ(U32(4), Mem{Base: SP}.Offset(frame_SRND))
247 }
248
249
250 func loop1() {
251 Label("loop1")
252 VPADDQ(Mem{Base: BP}, Y4, Y0)
253 VMOVDQU(Y0, Mem{Base: SP}.Offset(frame_YFER))
254
255 MY_VPALIGNR(Y0, Y7, Y6, 8)
256
257 VPADDQ(Y4, Y0, Y0)
258
259 MY_VPALIGNR(Y1, Y5, Y4, 8)
260
261 VPSRLQ(Imm(1), Y1, Y2)
262 VPSLLQ(Imm(64-1), Y1, Y3)
263 VPOR(Y2, Y3, Y3)
264
265 VPSRLQ(Imm(7), Y1, Y8)
266
267 MOVQ(RAX, RDI)
268 RORXQ(Imm(41), RDX, R13)
269 RORXQ(Imm(18), RDX, R14)
270 ADDQ(Mem{Base: SP}.Offset(frame_YFER), R11)
271 ORQ(RCX, RDI)
272 MOVQ(R9, R15)
273 RORXQ(Imm(34), RAX, R12)
274
275 XORQ(R14, R13)
276 XORQ(R10, R15)
277 RORXQ(Imm(14), RDX, R14)
278
279 ANDQ(RDX, R15)
280 XORQ(R14, R13)
281 RORXQ(Imm(39), RAX, R14)
282 ADDQ(R11, R8)
283
284 ANDQ(RBX, RDI)
285 XORQ(R12, R14)
286 RORXQ(Imm(28), RAX, R12)
287
288 XORQ(R10, R15)
289 XORQ(R12, R14)
290 MOVQ(RAX, R12)
291 ANDQ(RCX, R12)
292
293 ADDQ(R13, R15)
294 ORQ(R12, RDI)
295 ADDQ(R14, R11)
296
297 ADDQ(R15, R8)
298
299 ADDQ(R15, R11)
300 ADDQ(RDI, R11)
301
302 VPSRLQ(Imm(8), Y1, Y2)
303 VPSLLQ(Imm(64-8), Y1, Y1)
304 VPOR(Y2, Y1, Y1)
305
306 VPXOR(Y8, Y3, Y3)
307 VPXOR(Y1, Y3, Y1)
308
309 VPADDQ(Y1, Y0, Y0)
310
311 VPERM2F128(Imm(0x0), Y0, Y0, Y4)
312
313 MASK_YMM_LO := MASK_YMM_LO_DATA()
314 VPAND(MASK_YMM_LO, Y0, Y0)
315
316 VPERM2F128(Imm(0x11), Y7, Y7, Y2)
317 VPSRLQ(Imm(6), Y2, Y8)
318
319 MOVQ(R11, RDI)
320 RORXQ(Imm(41), R8, R13)
321 RORXQ(Imm(18), R8, R14)
322 ADDQ(Mem{Base: SP}.Offset(1*8+frame_YFER), R10)
323 ORQ(RBX, RDI)
324
325 MOVQ(RDX, R15)
326 RORXQ(Imm(34), R11, R12)
327 XORQ(R14, R13)
328 XORQ(R9, R15)
329
330 RORXQ(Imm(14), R8, R14)
331 XORQ(R14, R13)
332 RORXQ(Imm(39), R11, R14)
333 ANDQ(R8, R15)
334 ADDQ(R10, RCX)
335
336 ANDQ(RAX, RDI)
337 XORQ(R12, R14)
338
339 RORXQ(Imm(28), R11, R12)
340 XORQ(R9, R15)
341
342 XORQ(R12, R14)
343 MOVQ(R11, R12)
344 ANDQ(RBX, R12)
345 ADDQ(R13, R15)
346
347 ORQ(R12, RDI)
348 ADDQ(R14, R10)
349
350 ADDQ(R15, RCX)
351 ADDQ(R15, R10)
352 ADDQ(RDI, R10)
353
354 VPSRLQ(Imm(19), Y2, Y3)
355 VPSLLQ(Imm(64-19), Y2, Y1)
356 VPOR(Y1, Y3, Y3)
357 VPXOR(Y3, Y8, Y8)
358 VPSRLQ(Imm(61), Y2, Y3)
359 VPSLLQ(Imm(64-61), Y2, Y1)
360 VPOR(Y1, Y3, Y3)
361 VPXOR(Y3, Y8, Y8)
362
363 VPADDQ(Y8, Y4, Y4)
364
365 VPSRLQ(Imm(6), Y4, Y8)
366
367 MOVQ(R10, RDI)
368 RORXQ(Imm(41), RCX, R13)
369 ADDQ(Mem{Base: SP}.Offset(2*8+frame_YFER), R9)
370
371 RORXQ(Imm(18), RCX, R14)
372 ORQ(RAX, RDI)
373 MOVQ(R8, R15)
374 XORQ(RDX, R15)
375
376 RORXQ(Imm(34), R10, R12)
377 XORQ(R14, R13)
378 ANDQ(RCX, R15)
379
380 RORXQ(Imm(14), RCX, R14)
381 ADDQ(R9, RBX)
382 ANDQ(R11, RDI)
383
384 XORQ(R14, R13)
385 RORXQ(Imm(39), R10, R14)
386 XORQ(RDX, R15)
387
388 XORQ(R12, R14)
389 RORXQ(Imm(28), R10, R12)
390
391 XORQ(R12, R14)
392 MOVQ(R10, R12)
393 ANDQ(RAX, R12)
394 ADDQ(R13, R15)
395
396 ORQ(R12, RDI)
397 ADDQ(R14, R9)
398 ADDQ(R15, RBX)
399 ADDQ(R15, R9)
400
401 ADDQ(RDI, R9)
402
403 VPSRLQ(Imm(19), Y4, Y3)
404 VPSLLQ(Imm(64-19), Y4, Y1)
405 VPOR(Y1, Y3, Y3)
406 VPXOR(Y3, Y8, Y8)
407 VPSRLQ(Imm(61), Y4, Y3)
408 VPSLLQ(Imm(64-61), Y4, Y1)
409 VPOR(Y1, Y3, Y3)
410 VPXOR(Y3, Y8, Y8)
411
412 VPADDQ(Y8, Y0, Y2)
413
414 VPBLENDD(Imm(0xF0), Y2, Y4, Y4)
415
416 MOVQ(R9, RDI)
417 RORXQ(Imm(41), RBX, R13)
418 RORXQ(Imm(18), RBX, R14)
419 ADDQ(Mem{Base: SP}.Offset(3*8+frame_YFER), RDX)
420 ORQ(R11, RDI)
421
422 MOVQ(RCX, R15)
423 RORXQ(Imm(34), R9, R12)
424 XORQ(R14, R13)
425 XORQ(R8, R15)
426
427 RORXQ(Imm(14), RBX, R14)
428 ANDQ(RBX, R15)
429 ADDQ(RDX, RAX)
430 ANDQ(R10, RDI)
431
432 XORQ(R14, R13)
433 XORQ(R8, R15)
434
435 RORXQ(Imm(39), R9, R14)
436 ADDQ(R13, R15)
437
438 XORQ(R12, R14)
439 ADDQ(R15, RAX)
440
441 RORXQ(Imm(28), R9, R12)
442
443 XORQ(R12, R14)
444 MOVQ(R9, R12)
445 ANDQ(R11, R12)
446 ORQ(R12, RDI)
447
448 ADDQ(R14, RDX)
449 ADDQ(R15, RDX)
450 ADDQ(RDI, RDX)
451
452 VPADDQ(Mem{Base: BP}.Offset(1*32), Y5, Y0)
453 VMOVDQU(Y0, Mem{Base: SP}.Offset(frame_YFER))
454
455 MY_VPALIGNR(Y0, Y4, Y7, 8)
456
457 VPADDQ(Y5, Y0, Y0)
458
459 MY_VPALIGNR(Y1, Y6, Y5, 8)
460
461 VPSRLQ(Imm(1), Y1, Y2)
462 VPSLLQ(Imm(64-1), Y1, Y3)
463 VPOR(Y2, Y3, Y3)
464
465 VPSRLQ(Imm(7), Y1, Y8)
466
467 MOVQ(RDX, RDI)
468 RORXQ(Imm(41), RAX, R13)
469 RORXQ(Imm(18), RAX, R14)
470 ADDQ(Mem{Base: SP}.Offset(frame_YFER), R8)
471 ORQ(R10, RDI)
472 MOVQ(RBX, R15)
473 RORXQ(Imm(34), RDX, R12)
474
475 XORQ(R14, R13)
476 XORQ(RCX, R15)
477 RORXQ(Imm(14), RAX, R14)
478
479 ANDQ(RAX, R15)
480 XORQ(R14, R13)
481 RORXQ(Imm(39), RDX, R14)
482 ADDQ(R8, R11)
483
484 ANDQ(R9, RDI)
485 XORQ(R12, R14)
486 RORXQ(Imm(28), RDX, R12)
487
488 XORQ(RCX, R15)
489 XORQ(R12, R14)
490 MOVQ(RDX, R12)
491 ANDQ(R10, R12)
492
493 ADDQ(R13, R15)
494 ORQ(R12, RDI)
495 ADDQ(R14, R8)
496
497 ADDQ(R15, R11)
498
499 ADDQ(R15, R8)
500 ADDQ(RDI, R8)
501
502 VPSRLQ(Imm(8), Y1, Y2)
503 VPSLLQ(Imm(64-8), Y1, Y1)
504 VPOR(Y2, Y1, Y1)
505
506 VPXOR(Y8, Y3, Y3)
507 VPXOR(Y1, Y3, Y1)
508
509 VPADDQ(Y1, Y0, Y0)
510
511 VPERM2F128(Imm(0x0), Y0, Y0, Y5)
512
513 VPAND(MASK_YMM_LO, Y0, Y0)
514
515 VPERM2F128(Imm(0x11), Y4, Y4, Y2)
516 VPSRLQ(Imm(6), Y2, Y8)
517
518 MOVQ(R8, RDI)
519 RORXQ(Imm(41), R11, R13)
520 RORXQ(Imm(18), R11, R14)
521 ADDQ(Mem{Base: SP}.Offset(1*8+frame_YFER), RCX)
522 ORQ(R9, RDI)
523
524 MOVQ(RAX, R15)
525 RORXQ(Imm(34), R8, R12)
526 XORQ(R14, R13)
527 XORQ(RBX, R15)
528
529 RORXQ(Imm(14), R11, R14)
530 XORQ(R14, R13)
531 RORXQ(Imm(39), R8, R14)
532 ANDQ(R11, R15)
533 ADDQ(RCX, R10)
534
535 ANDQ(RDX, RDI)
536 XORQ(R12, R14)
537
538 RORXQ(Imm(28), R8, R12)
539 XORQ(RBX, R15)
540
541 XORQ(R12, R14)
542 MOVQ(R8, R12)
543 ANDQ(R9, R12)
544 ADDQ(R13, R15)
545
546 ORQ(R12, RDI)
547 ADDQ(R14, RCX)
548
549 ADDQ(R15, R10)
550 ADDQ(R15, RCX)
551 ADDQ(RDI, RCX)
552
553 VPSRLQ(Imm(19), Y2, Y3)
554 VPSLLQ(Imm(64-19), Y2, Y1)
555 VPOR(Y1, Y3, Y3)
556 VPXOR(Y3, Y8, Y8)
557 VPSRLQ(Imm(61), Y2, Y3)
558 VPSLLQ(Imm(64-61), Y2, Y1)
559 VPOR(Y1, Y3, Y3)
560 VPXOR(Y3, Y8, Y8)
561
562 VPADDQ(Y8, Y5, Y5)
563
564 VPSRLQ(Imm(6), Y5, Y8)
565
566 MOVQ(RCX, RDI)
567 RORXQ(Imm(41), R10, R13)
568 ADDQ(Mem{Base: SP}.Offset(2*8+frame_YFER), RBX)
569
570 RORXQ(Imm(18), R10, R14)
571 ORQ(RDX, RDI)
572 MOVQ(R11, R15)
573 XORQ(RAX, R15)
574
575 RORXQ(Imm(34), RCX, R12)
576 XORQ(R14, R13)
577 ANDQ(R10, R15)
578
579 RORXQ(Imm(14), R10, R14)
580 ADDQ(RBX, R9)
581 ANDQ(R8, RDI)
582
583 XORQ(R14, R13)
584 RORXQ(Imm(39), RCX, R14)
585 XORQ(RAX, R15)
586
587 XORQ(R12, R14)
588 RORXQ(Imm(28), RCX, R12)
589
590 XORQ(R12, R14)
591 MOVQ(RCX, R12)
592 ANDQ(RDX, R12)
593 ADDQ(R13, R15)
594
595 ORQ(R12, RDI)
596 ADDQ(R14, RBX)
597 ADDQ(R15, R9)
598 ADDQ(R15, RBX)
599
600 ADDQ(RDI, RBX)
601
602 VPSRLQ(Imm(19), Y5, Y3)
603 VPSLLQ(Imm(64-19), Y5, Y1)
604 VPOR(Y1, Y3, Y3)
605 VPXOR(Y3, Y8, Y8)
606 VPSRLQ(Imm(61), Y5, Y3)
607 VPSLLQ(Imm(64-61), Y5, Y1)
608 VPOR(Y1, Y3, Y3)
609 VPXOR(Y3, Y8, Y8)
610
611 VPADDQ(Y8, Y0, Y2)
612
613 VPBLENDD(Imm(0xF0), Y2, Y5, Y5)
614
615 MOVQ(RBX, RDI)
616 RORXQ(Imm(41), R9, R13)
617 RORXQ(Imm(18), R9, R14)
618 ADDQ(Mem{Base: SP}.Offset(3*8+frame_YFER), RAX)
619 ORQ(R8, RDI)
620
621 MOVQ(R10, R15)
622 RORXQ(Imm(34), RBX, R12)
623 XORQ(R14, R13)
624 XORQ(R11, R15)
625
626 RORXQ(Imm(14), R9, R14)
627 ANDQ(R9, R15)
628 ADDQ(RAX, RDX)
629 ANDQ(RCX, RDI)
630
631 XORQ(R14, R13)
632 XORQ(R11, R15)
633
634 RORXQ(Imm(39), RBX, R14)
635 ADDQ(R13, R15)
636
637 XORQ(R12, R14)
638 ADDQ(R15, RDX)
639
640 RORXQ(Imm(28), RBX, R12)
641
642 XORQ(R12, R14)
643 MOVQ(RBX, R12)
644 ANDQ(R8, R12)
645 ORQ(R12, RDI)
646
647 ADDQ(R14, RAX)
648 ADDQ(R15, RAX)
649 ADDQ(RDI, RAX)
650
651 VPADDQ(Mem{Base: BP}.Offset(2*32), Y6, Y0)
652 VMOVDQU(Y0, Mem{Base: SP}.Offset(frame_YFER))
653
654 MY_VPALIGNR(Y0, Y5, Y4, 8)
655
656 VPADDQ(Y6, Y0, Y0)
657
658 MY_VPALIGNR(Y1, Y7, Y6, 8)
659
660 VPSRLQ(Imm(1), Y1, Y2)
661 VPSLLQ(Imm(64-1), Y1, Y3)
662 VPOR(Y2, Y3, Y3)
663
664 VPSRLQ(Imm(7), Y1, Y8)
665
666 MOVQ(RAX, RDI)
667 RORXQ(Imm(41), RDX, R13)
668 RORXQ(Imm(18), RDX, R14)
669 ADDQ(Mem{Base: SP}.Offset(frame_YFER), R11)
670 ORQ(RCX, RDI)
671 MOVQ(R9, R15)
672 RORXQ(Imm(34), RAX, R12)
673
674 XORQ(R14, R13)
675 XORQ(R10, R15)
676 RORXQ(Imm(14), RDX, R14)
677
678 ANDQ(RDX, R15)
679 XORQ(R14, R13)
680 RORXQ(Imm(39), RAX, R14)
681 ADDQ(R11, R8)
682
683 ANDQ(RBX, RDI)
684 XORQ(R12, R14)
685 RORXQ(Imm(28), RAX, R12)
686
687 XORQ(R10, R15)
688 XORQ(R12, R14)
689 MOVQ(RAX, R12)
690 ANDQ(RCX, R12)
691
692 ADDQ(R13, R15)
693 ORQ(R12, RDI)
694 ADDQ(R14, R11)
695
696 ADDQ(R15, R8)
697
698 ADDQ(R15, R11)
699 ADDQ(RDI, R11)
700
701 VPSRLQ(Imm(8), Y1, Y2)
702 VPSLLQ(Imm(64-8), Y1, Y1)
703 VPOR(Y2, Y1, Y1)
704
705 VPXOR(Y8, Y3, Y3)
706 VPXOR(Y1, Y3, Y1)
707
708 VPADDQ(Y1, Y0, Y0)
709
710 VPERM2F128(Imm(0x0), Y0, Y0, Y6)
711
712 VPAND(MASK_YMM_LO, Y0, Y0)
713
714 VPERM2F128(Imm(0x11), Y5, Y5, Y2)
715 VPSRLQ(Imm(6), Y2, Y8)
716
717 MOVQ(R11, RDI)
718 RORXQ(Imm(41), R8, R13)
719 RORXQ(Imm(18), R8, R14)
720 ADDQ(Mem{Base: SP}.Offset(1*8+frame_YFER), R10)
721 ORQ(RBX, RDI)
722
723 MOVQ(RDX, R15)
724 RORXQ(Imm(34), R11, R12)
725 XORQ(R14, R13)
726 XORQ(R9, R15)
727
728 RORXQ(Imm(14), R8, R14)
729 XORQ(R14, R13)
730 RORXQ(Imm(39), R11, R14)
731 ANDQ(R8, R15)
732 ADDQ(R10, RCX)
733
734 ANDQ(RAX, RDI)
735 XORQ(R12, R14)
736
737 RORXQ(Imm(28), R11, R12)
738 XORQ(R9, R15)
739
740 XORQ(R12, R14)
741 MOVQ(R11, R12)
742 ANDQ(RBX, R12)
743 ADDQ(R13, R15)
744
745 ORQ(R12, RDI)
746 ADDQ(R14, R10)
747
748 ADDQ(R15, RCX)
749 ADDQ(R15, R10)
750 ADDQ(RDI, R10)
751
752 VPSRLQ(Imm(19), Y2, Y3)
753 VPSLLQ(Imm(64-19), Y2, Y1)
754 VPOR(Y1, Y3, Y3)
755 VPXOR(Y3, Y8, Y8)
756 VPSRLQ(Imm(61), Y2, Y3)
757 VPSLLQ(Imm(64-61), Y2, Y1)
758 VPOR(Y1, Y3, Y3)
759 VPXOR(Y3, Y8, Y8)
760
761 VPADDQ(Y8, Y6, Y6)
762
763 VPSRLQ(Imm(6), Y6, Y8)
764
765 MOVQ(R10, RDI)
766 RORXQ(Imm(41), RCX, R13)
767 ADDQ(Mem{Base: SP}.Offset(2*8+frame_YFER), R9)
768
769 RORXQ(Imm(18), RCX, R14)
770 ORQ(RAX, RDI)
771 MOVQ(R8, R15)
772 XORQ(RDX, R15)
773
774 RORXQ(Imm(34), R10, R12)
775 XORQ(R14, R13)
776 ANDQ(RCX, R15)
777
778 RORXQ(Imm(14), RCX, R14)
779 ADDQ(R9, RBX)
780 ANDQ(R11, RDI)
781
782 XORQ(R14, R13)
783 RORXQ(Imm(39), R10, R14)
784 XORQ(RDX, R15)
785
786 XORQ(R12, R14)
787 RORXQ(Imm(28), R10, R12)
788
789 XORQ(R12, R14)
790 MOVQ(R10, R12)
791 ANDQ(RAX, R12)
792 ADDQ(R13, R15)
793
794 ORQ(R12, RDI)
795 ADDQ(R14, R9)
796 ADDQ(R15, RBX)
797 ADDQ(R15, R9)
798
799 ADDQ(RDI, R9)
800
801 VPSRLQ(Imm(19), Y6, Y3)
802 VPSLLQ(Imm(64-19), Y6, Y1)
803 VPOR(Y1, Y3, Y3)
804 VPXOR(Y3, Y8, Y8)
805 VPSRLQ(Imm(61), Y6, Y3)
806 VPSLLQ(Imm(64-61), Y6, Y1)
807 VPOR(Y1, Y3, Y3)
808 VPXOR(Y3, Y8, Y8)
809
810 VPADDQ(Y8, Y0, Y2)
811
812 VPBLENDD(Imm(0xF0), Y2, Y6, Y6)
813
814 MOVQ(R9, RDI)
815 RORXQ(Imm(41), RBX, R13)
816 RORXQ(Imm(18), RBX, R14)
817 ADDQ(Mem{Base: SP}.Offset(3*8+frame_YFER), RDX)
818 ORQ(R11, RDI)
819
820 MOVQ(RCX, R15)
821 RORXQ(Imm(34), R9, R12)
822 XORQ(R14, R13)
823 XORQ(R8, R15)
824
825 RORXQ(Imm(14), RBX, R14)
826 ANDQ(RBX, R15)
827 ADDQ(RDX, RAX)
828 ANDQ(R10, RDI)
829
830 XORQ(R14, R13)
831 XORQ(R8, R15)
832
833 RORXQ(Imm(39), R9, R14)
834 ADDQ(R13, R15)
835
836 XORQ(R12, R14)
837 ADDQ(R15, RAX)
838
839 RORXQ(Imm(28), R9, R12)
840
841 XORQ(R12, R14)
842 MOVQ(R9, R12)
843 ANDQ(R11, R12)
844 ORQ(R12, RDI)
845
846 ADDQ(R14, RDX)
847 ADDQ(R15, RDX)
848 ADDQ(RDI, RDX)
849
850 VPADDQ(Mem{Base: BP}.Offset(3*32), Y7, Y0)
851 VMOVDQU(Y0, Mem{Base: SP}.Offset(frame_YFER))
852 ADDQ(U8(4*32), RBP)
853
854 MY_VPALIGNR(Y0, Y6, Y5, 8)
855
856 VPADDQ(Y7, Y0, Y0)
857
858 MY_VPALIGNR(Y1, Y4, Y7, 8)
859
860 VPSRLQ(Imm(1), Y1, Y2)
861 VPSLLQ(Imm(64-1), Y1, Y3)
862 VPOR(Y2, Y3, Y3)
863
864 VPSRLQ(Imm(7), Y1, Y8)
865
866 MOVQ(RDX, RDI)
867 RORXQ(Imm(41), RAX, R13)
868 RORXQ(Imm(18), RAX, R14)
869 ADDQ(Mem{Base: SP}.Offset(frame_YFER), R8)
870 ORQ(R10, RDI)
871 MOVQ(RBX, R15)
872 RORXQ(Imm(34), RDX, R12)
873
874 XORQ(R14, R13)
875 XORQ(RCX, R15)
876 RORXQ(Imm(14), RAX, R14)
877
878 ANDQ(RAX, R15)
879 XORQ(R14, R13)
880 RORXQ(Imm(39), RDX, R14)
881 ADDQ(R8, R11)
882
883 ANDQ(R9, RDI)
884 XORQ(R12, R14)
885 RORXQ(Imm(28), RDX, R12)
886
887 XORQ(RCX, R15)
888 XORQ(R12, R14)
889 MOVQ(RDX, R12)
890 ANDQ(R10, R12)
891
892 ADDQ(R13, R15)
893 ORQ(R12, RDI)
894 ADDQ(R14, R8)
895
896 ADDQ(R15, R11)
897
898 ADDQ(R15, R8)
899 ADDQ(RDI, R8)
900
901 VPSRLQ(Imm(8), Y1, Y2)
902 VPSLLQ(Imm(64-8), Y1, Y1)
903 VPOR(Y2, Y1, Y1)
904
905 VPXOR(Y8, Y3, Y3)
906 VPXOR(Y1, Y3, Y1)
907
908 VPADDQ(Y1, Y0, Y0)
909
910 VPERM2F128(Imm(0x0), Y0, Y0, Y7)
911
912 VPAND(MASK_YMM_LO, Y0, Y0)
913
914 VPERM2F128(Imm(0x11), Y6, Y6, Y2)
915 VPSRLQ(Imm(6), Y2, Y8)
916
917 MOVQ(R8, RDI)
918 RORXQ(Imm(41), R11, R13)
919 RORXQ(Imm(18), R11, R14)
920 ADDQ(Mem{Base: SP}.Offset(1*8+frame_YFER), RCX)
921 ORQ(R9, RDI)
922
923 MOVQ(RAX, R15)
924 RORXQ(Imm(34), R8, R12)
925 XORQ(R14, R13)
926 XORQ(RBX, R15)
927
928 RORXQ(Imm(14), R11, R14)
929 XORQ(R14, R13)
930 RORXQ(Imm(39), R8, R14)
931 ANDQ(R11, R15)
932 ADDQ(RCX, R10)
933
934 ANDQ(RDX, RDI)
935 XORQ(R12, R14)
936
937 RORXQ(Imm(28), R8, R12)
938 XORQ(RBX, R15)
939
940 XORQ(R12, R14)
941 MOVQ(R8, R12)
942 ANDQ(R9, R12)
943 ADDQ(R13, R15)
944
945 ORQ(R12, RDI)
946 ADDQ(R14, RCX)
947
948 ADDQ(R15, R10)
949 ADDQ(R15, RCX)
950 ADDQ(RDI, RCX)
951
952 VPSRLQ(Imm(19), Y2, Y3)
953 VPSLLQ(Imm(64-19), Y2, Y1)
954 VPOR(Y1, Y3, Y3)
955 VPXOR(Y3, Y8, Y8)
956 VPSRLQ(Imm(61), Y2, Y3)
957 VPSLLQ(Imm(64-61), Y2, Y1)
958 VPOR(Y1, Y3, Y3)
959 VPXOR(Y3, Y8, Y8)
960
961 VPADDQ(Y8, Y7, Y7)
962
963 VPSRLQ(Imm(6), Y7, Y8)
964
965 MOVQ(RCX, RDI)
966 RORXQ(Imm(41), R10, R13)
967 ADDQ(Mem{Base: SP}.Offset(2*8+frame_YFER), RBX)
968
969 RORXQ(Imm(18), R10, R14)
970 ORQ(RDX, RDI)
971 MOVQ(R11, R15)
972 XORQ(RAX, R15)
973
974 RORXQ(Imm(34), RCX, R12)
975 XORQ(R14, R13)
976 ANDQ(R10, R15)
977
978 RORXQ(Imm(14), R10, R14)
979 ADDQ(RBX, R9)
980 ANDQ(R8, RDI)
981
982 XORQ(R14, R13)
983 RORXQ(Imm(39), RCX, R14)
984 XORQ(RAX, R15)
985
986 XORQ(R12, R14)
987 RORXQ(Imm(28), RCX, R12)
988
989 XORQ(R12, R14)
990 MOVQ(RCX, R12)
991 ANDQ(RDX, R12)
992 ADDQ(R13, R15)
993
994 ORQ(R12, RDI)
995 ADDQ(R14, RBX)
996 ADDQ(R15, R9)
997 ADDQ(R15, RBX)
998
999 ADDQ(RDI, RBX)
1000
1001 VPSRLQ(Imm(19), Y7, Y3)
1002 VPSLLQ(Imm(64-19), Y7, Y1)
1003 VPOR(Y1, Y3, Y3)
1004 VPXOR(Y3, Y8, Y8)
1005 VPSRLQ(Imm(61), Y7, Y3)
1006 VPSLLQ(Imm(64-61), Y7, Y1)
1007 VPOR(Y1, Y3, Y3)
1008 VPXOR(Y3, Y8, Y8)
1009
1010 VPADDQ(Y8, Y0, Y2)
1011
1012 VPBLENDD(Imm(0xF0), Y2, Y7, Y7)
1013
1014 MOVQ(RBX, RDI)
1015 RORXQ(Imm(41), R9, R13)
1016 RORXQ(Imm(18), R9, R14)
1017 ADDQ(Mem{Base: SP}.Offset(3*8+frame_YFER), RAX)
1018 ORQ(R8, RDI)
1019
1020 MOVQ(R10, R15)
1021 RORXQ(Imm(34), RBX, R12)
1022 XORQ(R14, R13)
1023 XORQ(R11, R15)
1024
1025 RORXQ(Imm(14), R9, R14)
1026 ANDQ(R9, R15)
1027 ADDQ(RAX, RDX)
1028 ANDQ(RCX, RDI)
1029
1030 XORQ(R14, R13)
1031 XORQ(R11, R15)
1032
1033 RORXQ(Imm(39), RBX, R14)
1034 ADDQ(R13, R15)
1035
1036 XORQ(R12, R14)
1037 ADDQ(R15, RDX)
1038
1039 RORXQ(Imm(28), RBX, R12)
1040
1041 XORQ(R12, R14)
1042 MOVQ(RBX, R12)
1043 ANDQ(R8, R12)
1044 ORQ(R12, RDI)
1045
1046 ADDQ(R14, RAX)
1047 ADDQ(R15, RAX)
1048 ADDQ(RDI, RAX)
1049
1050 SUBQ(Imm(1), Mem{Base: SP}.Offset(frame_SRND))
1051 JNE(LabelRef("loop1"))
1052
1053 MOVQ(U32(2), Mem{Base: SP}.Offset(frame_SRND))
1054 }
1055
1056
1057 func loop2() {
1058 Label("loop2")
1059 VPADDQ(Mem{Base: BP}, Y4, Y0)
1060 VMOVDQU(Y0, Mem{Base: SP}.Offset(frame_YFER))
1061
1062 MOVQ(R9, R15)
1063 RORXQ(Imm(41), RDX, R13)
1064 RORXQ(Imm(18), RDX, R14)
1065 XORQ(R10, R15)
1066
1067 XORQ(R14, R13)
1068 RORXQ(Imm(14), RDX, R14)
1069 ANDQ(RDX, R15)
1070
1071 XORQ(R14, R13)
1072 RORXQ(Imm(34), RAX, R12)
1073 XORQ(R10, R15)
1074 RORXQ(Imm(39), RAX, R14)
1075 MOVQ(RAX, RDI)
1076
1077 XORQ(R12, R14)
1078 RORXQ(Imm(28), RAX, R12)
1079 ADDQ(Mem{Base: SP}.Offset(frame_YFER), R11)
1080 ORQ(RCX, RDI)
1081
1082 XORQ(R12, R14)
1083 MOVQ(RAX, R12)
1084 ANDQ(RBX, RDI)
1085 ANDQ(RCX, R12)
1086 ADDQ(R13, R15)
1087
1088 ADDQ(R11, R8)
1089 ORQ(R12, RDI)
1090 ADDQ(R14, R11)
1091
1092 ADDQ(R15, R8)
1093
1094 ADDQ(R15, R11)
1095 MOVQ(RDX, R15)
1096 RORXQ(Imm(41), R8, R13)
1097 RORXQ(Imm(18), R8, R14)
1098 XORQ(R9, R15)
1099
1100 XORQ(R14, R13)
1101 RORXQ(Imm(14), R8, R14)
1102 ANDQ(R8, R15)
1103 ADDQ(RDI, R11)
1104
1105 XORQ(R14, R13)
1106 RORXQ(Imm(34), R11, R12)
1107 XORQ(R9, R15)
1108 RORXQ(Imm(39), R11, R14)
1109 MOVQ(R11, RDI)
1110
1111 XORQ(R12, R14)
1112 RORXQ(Imm(28), R11, R12)
1113 ADDQ(Mem{Base: SP}.Offset(8*1+frame_YFER), R10)
1114 ORQ(RBX, RDI)
1115
1116 XORQ(R12, R14)
1117 MOVQ(R11, R12)
1118 ANDQ(RAX, RDI)
1119 ANDQ(RBX, R12)
1120 ADDQ(R13, R15)
1121
1122 ADDQ(R10, RCX)
1123 ORQ(R12, RDI)
1124 ADDQ(R14, R10)
1125
1126 ADDQ(R15, RCX)
1127
1128 ADDQ(R15, R10)
1129 MOVQ(R8, R15)
1130 RORXQ(Imm(41), RCX, R13)
1131 RORXQ(Imm(18), RCX, R14)
1132 XORQ(RDX, R15)
1133
1134 XORQ(R14, R13)
1135 RORXQ(Imm(14), RCX, R14)
1136 ANDQ(RCX, R15)
1137 ADDQ(RDI, R10)
1138
1139 XORQ(R14, R13)
1140 RORXQ(Imm(34), R10, R12)
1141 XORQ(RDX, R15)
1142 RORXQ(Imm(39), R10, R14)
1143 MOVQ(R10, RDI)
1144
1145 XORQ(R12, R14)
1146 RORXQ(Imm(28), R10, R12)
1147 ADDQ(Mem{Base: SP}.Offset(8*2+frame_YFER), R9)
1148 ORQ(RAX, RDI)
1149
1150 XORQ(R12, R14)
1151 MOVQ(R10, R12)
1152 ANDQ(R11, RDI)
1153 ANDQ(RAX, R12)
1154 ADDQ(R13, R15)
1155
1156 ADDQ(R9, RBX)
1157 ORQ(R12, RDI)
1158 ADDQ(R14, R9)
1159
1160 ADDQ(R15, RBX)
1161
1162 ADDQ(R15, R9)
1163 MOVQ(RCX, R15)
1164 RORXQ(Imm(41), RBX, R13)
1165 RORXQ(Imm(18), RBX, R14)
1166 XORQ(R8, R15)
1167
1168 XORQ(R14, R13)
1169 RORXQ(Imm(14), RBX, R14)
1170 ANDQ(RBX, R15)
1171 ADDQ(RDI, R9)
1172
1173 XORQ(R14, R13)
1174 RORXQ(Imm(34), R9, R12)
1175 XORQ(R8, R15)
1176 RORXQ(Imm(39), R9, R14)
1177 MOVQ(R9, RDI)
1178
1179 XORQ(R12, R14)
1180 RORXQ(Imm(28), R9, R12)
1181 ADDQ(Mem{Base: SP}.Offset(8*3+frame_YFER), RDX)
1182 ORQ(R11, RDI)
1183
1184 XORQ(R12, R14)
1185 MOVQ(R9, R12)
1186 ANDQ(R10, RDI)
1187 ANDQ(R11, R12)
1188 ADDQ(R13, R15)
1189
1190 ADDQ(RDX, RAX)
1191 ORQ(R12, RDI)
1192 ADDQ(R14, RDX)
1193
1194 ADDQ(R15, RAX)
1195
1196 ADDQ(R15, RDX)
1197
1198 ADDQ(RDI, RDX)
1199
1200 VPADDQ(Mem{Base: BP}.Offset(1*32), Y5, Y0)
1201 VMOVDQU(Y0, Mem{Base: SP}.Offset(frame_YFER))
1202 ADDQ(U8(2*32), RBP)
1203
1204 MOVQ(RBX, R15)
1205 RORXQ(Imm(41), RAX, R13)
1206 RORXQ(Imm(18), RAX, R14)
1207 XORQ(RCX, R15)
1208
1209 XORQ(R14, R13)
1210 RORXQ(Imm(14), RAX, R14)
1211 ANDQ(RAX, R15)
1212
1213 XORQ(R14, R13)
1214 RORXQ(Imm(34), RDX, R12)
1215 XORQ(RCX, R15)
1216 RORXQ(Imm(39), RDX, R14)
1217 MOVQ(RDX, RDI)
1218
1219 XORQ(R12, R14)
1220 RORXQ(Imm(28), RDX, R12)
1221 ADDQ(Mem{Base: SP}.Offset(frame_YFER), R8)
1222 ORQ(R10, RDI)
1223
1224 XORQ(R12, R14)
1225 MOVQ(RDX, R12)
1226 ANDQ(R9, RDI)
1227 ANDQ(R10, R12)
1228 ADDQ(R13, R15)
1229
1230 ADDQ(R8, R11)
1231 ORQ(R12, RDI)
1232 ADDQ(R14, R8)
1233
1234 ADDQ(R15, R11)
1235
1236 ADDQ(R15, R8)
1237 MOVQ(RAX, R15)
1238 RORXQ(Imm(41), R11, R13)
1239 RORXQ(Imm(18), R11, R14)
1240 XORQ(RBX, R15)
1241
1242 XORQ(R14, R13)
1243 RORXQ(Imm(14), R11, R14)
1244 ANDQ(R11, R15)
1245 ADDQ(RDI, R8)
1246
1247 XORQ(R14, R13)
1248 RORXQ(Imm(34), R8, R12)
1249 XORQ(RBX, R15)
1250 RORXQ(Imm(39), R8, R14)
1251 MOVQ(R8, RDI)
1252
1253 XORQ(R12, R14)
1254 RORXQ(Imm(28), R8, R12)
1255 ADDQ(Mem{Base: SP}.Offset(8*1+frame_YFER), RCX)
1256 ORQ(R9, RDI)
1257
1258 XORQ(R12, R14)
1259 MOVQ(R8, R12)
1260 ANDQ(RDX, RDI)
1261 ANDQ(R9, R12)
1262 ADDQ(R13, R15)
1263
1264 ADDQ(RCX, R10)
1265 ORQ(R12, RDI)
1266 ADDQ(R14, RCX)
1267
1268 ADDQ(R15, R10)
1269
1270 ADDQ(R15, RCX)
1271 MOVQ(R11, R15)
1272 RORXQ(Imm(41), R10, R13)
1273 RORXQ(Imm(18), R10, R14)
1274 XORQ(RAX, R15)
1275
1276 XORQ(R14, R13)
1277 RORXQ(Imm(14), R10, R14)
1278 ANDQ(R10, R15)
1279 ADDQ(RDI, RCX)
1280
1281 XORQ(R14, R13)
1282 RORXQ(Imm(34), RCX, R12)
1283 XORQ(RAX, R15)
1284 RORXQ(Imm(39), RCX, R14)
1285 MOVQ(RCX, RDI)
1286
1287 XORQ(R12, R14)
1288 RORXQ(Imm(28), RCX, R12)
1289 ADDQ(Mem{Base: SP}.Offset(8*2+frame_YFER), RBX)
1290 ORQ(RDX, RDI)
1291
1292 XORQ(R12, R14)
1293 MOVQ(RCX, R12)
1294 ANDQ(R8, RDI)
1295 ANDQ(RDX, R12)
1296 ADDQ(R13, R15)
1297
1298 ADDQ(RBX, R9)
1299 ORQ(R12, RDI)
1300 ADDQ(R14, RBX)
1301
1302 ADDQ(R15, R9)
1303
1304 ADDQ(R15, RBX)
1305 MOVQ(R10, R15)
1306 RORXQ(Imm(41), R9, R13)
1307 RORXQ(Imm(18), R9, R14)
1308 XORQ(R11, R15)
1309
1310 XORQ(R14, R13)
1311 RORXQ(Imm(14), R9, R14)
1312 ANDQ(R9, R15)
1313 ADDQ(RDI, RBX)
1314
1315 XORQ(R14, R13)
1316 RORXQ(Imm(34), RBX, R12)
1317 XORQ(R11, R15)
1318 RORXQ(Imm(39), RBX, R14)
1319 MOVQ(RBX, RDI)
1320
1321 XORQ(R12, R14)
1322 RORXQ(Imm(28), RBX, R12)
1323 ADDQ(Mem{Base: SP}.Offset(8*3+frame_YFER), RAX)
1324 ORQ(R8, RDI)
1325
1326 XORQ(R12, R14)
1327 MOVQ(RBX, R12)
1328 ANDQ(RCX, RDI)
1329 ANDQ(R8, R12)
1330 ADDQ(R13, R15)
1331
1332 ADDQ(RAX, RDX)
1333 ORQ(R12, RDI)
1334 ADDQ(R14, RAX)
1335
1336 ADDQ(R15, RDX)
1337
1338 ADDQ(R15, RAX)
1339
1340 ADDQ(RDI, RAX)
1341
1342 VMOVDQU(Y6, Y4)
1343 VMOVDQU(Y7, Y5)
1344
1345 SUBQ(Imm(1), Mem{Base: SP}.Offset(frame_SRND))
1346 JNE(LabelRef("loop2"))
1347
1348 addm(Mem{Base: SI}.Offset(8*0), RAX)
1349 addm(Mem{Base: SI}.Offset(8*1), RBX)
1350 addm(Mem{Base: SI}.Offset(8*2), RCX)
1351 addm(Mem{Base: SI}.Offset(8*3), R8)
1352 addm(Mem{Base: SI}.Offset(8*4), RDX)
1353 addm(Mem{Base: SI}.Offset(8*5), R9)
1354 addm(Mem{Base: SI}.Offset(8*6), R10)
1355 addm(Mem{Base: SI}.Offset(8*7), R11)
1356
1357 MOVQ(Mem{Base: SP}.Offset(frame_INP), RDI)
1358 ADDQ(Imm(128), RDI)
1359 CMPQ(RDI, Mem{Base: SP}.Offset(frame_INPEND))
1360 JNE(LabelRef("loop0"))
1361 }
1362
1363
1364 func done_hash() {
1365 Label("done_hash")
1366 VZEROUPPER()
1367 RET()
1368 }
1369
1370
1371
1372
1373 var PSHUFFLE_BYTE_FLIP_MASK_DATA_ptr, MASK_YMM_LO_ptr *Mem
1374
1375
1376 func PSHUFFLE_BYTE_FLIP_MASK_DATA() Mem {
1377 if PSHUFFLE_BYTE_FLIP_MASK_DATA_ptr != nil {
1378 return *PSHUFFLE_BYTE_FLIP_MASK_DATA_ptr
1379 }
1380
1381 PSHUFFLE_BYTE_FLIP_MASK_DATA := GLOBL("PSHUFFLE_BYTE_FLIP_MASK", NOPTR|RODATA)
1382 PSHUFFLE_BYTE_FLIP_MASK_DATA_ptr = &PSHUFFLE_BYTE_FLIP_MASK_DATA
1383 DATA(0x00, U64(0x0001020304050607))
1384 DATA(0x08, U64(0x08090a0b0c0d0e0f))
1385 DATA(0x10, U64(0x1011121314151617))
1386 DATA(0x18, U64(0x18191a1b1c1d1e1f))
1387 return PSHUFFLE_BYTE_FLIP_MASK_DATA
1388 }
1389
1390
1391 func MASK_YMM_LO_DATA() Mem {
1392 if MASK_YMM_LO_ptr != nil {
1393 return *MASK_YMM_LO_ptr
1394 }
1395
1396 MASK_YMM_LO := GLOBL("MASK_YMM_LO", NOPTR|RODATA)
1397 MASK_YMM_LO_ptr = &MASK_YMM_LO
1398 DATA(0x00, U64(0x0000000000000000))
1399 DATA(0x08, U64(0x0000000000000000))
1400 DATA(0x10, U64(0xFFFFFFFFFFFFFFFF))
1401 DATA(0x18, U64(0xFFFFFFFFFFFFFFFF))
1402 return MASK_YMM_LO
1403 }
1404
View as plain text