...

Text file src/golang.org/x/crypto/salsa20/salsa/salsa20_amd64.s

Documentation: golang.org/x/crypto/salsa20/salsa

     1// Code generated by command: go run salsa20_amd64_asm.go -out ../salsa20_amd64.s -pkg salsa. DO NOT EDIT.
     2
     3//go:build amd64 && !purego && gc
     4
     5// func salsa2020XORKeyStream(out *byte, in *byte, n uint64, nonce *byte, key *byte)
     6// Requires: SSE2
     7TEXT ·salsa2020XORKeyStream(SB), $456-40
     8	// This needs up to 64 bytes at 360(R12); hence the non-obvious frame size.
     9	MOVQ   out+0(FP), DI
    10	MOVQ   in+8(FP), SI
    11	MOVQ   n+16(FP), DX
    12	MOVQ   nonce+24(FP), CX
    13	MOVQ   key+32(FP), R8
    14	MOVQ   SP, R12
    15	ADDQ   $0x1f, R12
    16	ANDQ   $-32, R12
    17	MOVQ   DX, R9
    18	MOVQ   CX, DX
    19	MOVQ   R8, R10
    20	CMPQ   R9, $0x00
    21	JBE    DONE
    22	MOVL   20(R10), CX
    23	MOVL   (R10), R8
    24	MOVL   (DX), AX
    25	MOVL   16(R10), R11
    26	MOVL   CX, (R12)
    27	MOVL   R8, 4(R12)
    28	MOVL   AX, 8(R12)
    29	MOVL   R11, 12(R12)
    30	MOVL   8(DX), CX
    31	MOVL   24(R10), R8
    32	MOVL   4(R10), AX
    33	MOVL   4(DX), R11
    34	MOVL   CX, 16(R12)
    35	MOVL   R8, 20(R12)
    36	MOVL   AX, 24(R12)
    37	MOVL   R11, 28(R12)
    38	MOVL   12(DX), CX
    39	MOVL   12(R10), DX
    40	MOVL   28(R10), R8
    41	MOVL   8(R10), AX
    42	MOVL   DX, 32(R12)
    43	MOVL   CX, 36(R12)
    44	MOVL   R8, 40(R12)
    45	MOVL   AX, 44(R12)
    46	MOVQ   $0x61707865, DX
    47	MOVQ   $0x3320646e, CX
    48	MOVQ   $0x79622d32, R8
    49	MOVQ   $0x6b206574, AX
    50	MOVL   DX, 48(R12)
    51	MOVL   CX, 52(R12)
    52	MOVL   R8, 56(R12)
    53	MOVL   AX, 60(R12)
    54	CMPQ   R9, $0x00000100
    55	JB     BYTESBETWEEN1AND255
    56	MOVOA  48(R12), X0
    57	PSHUFL $0x55, X0, X1
    58	PSHUFL $0xaa, X0, X2
    59	PSHUFL $0xff, X0, X3
    60	PSHUFL $0x00, X0, X0
    61	MOVOA  X1, 64(R12)
    62	MOVOA  X2, 80(R12)
    63	MOVOA  X3, 96(R12)
    64	MOVOA  X0, 112(R12)
    65	MOVOA  (R12), X0
    66	PSHUFL $0xaa, X0, X1
    67	PSHUFL $0xff, X0, X2
    68	PSHUFL $0x00, X0, X3
    69	PSHUFL $0x55, X0, X0
    70	MOVOA  X1, 128(R12)
    71	MOVOA  X2, 144(R12)
    72	MOVOA  X3, 160(R12)
    73	MOVOA  X0, 176(R12)
    74	MOVOA  16(R12), X0
    75	PSHUFL $0xff, X0, X1
    76	PSHUFL $0x55, X0, X2
    77	PSHUFL $0xaa, X0, X0
    78	MOVOA  X1, 192(R12)
    79	MOVOA  X2, 208(R12)
    80	MOVOA  X0, 224(R12)
    81	MOVOA  32(R12), X0
    82	PSHUFL $0x00, X0, X1
    83	PSHUFL $0xaa, X0, X2
    84	PSHUFL $0xff, X0, X0
    85	MOVOA  X1, 240(R12)
    86	MOVOA  X2, 256(R12)
    87	MOVOA  X0, 272(R12)
    88
    89BYTESATLEAST256:
    90	MOVL  16(R12), DX
    91	MOVL  36(R12), CX
    92	MOVL  DX, 288(R12)
    93	MOVL  CX, 304(R12)
    94	SHLQ  $0x20, CX
    95	ADDQ  CX, DX
    96	ADDQ  $0x01, DX
    97	MOVQ  DX, CX
    98	SHRQ  $0x20, CX
    99	MOVL  DX, 292(R12)
   100	MOVL  CX, 308(R12)
   101	ADDQ  $0x01, DX
   102	MOVQ  DX, CX
   103	SHRQ  $0x20, CX
   104	MOVL  DX, 296(R12)
   105	MOVL  CX, 312(R12)
   106	ADDQ  $0x01, DX
   107	MOVQ  DX, CX
   108	SHRQ  $0x20, CX
   109	MOVL  DX, 300(R12)
   110	MOVL  CX, 316(R12)
   111	ADDQ  $0x01, DX
   112	MOVQ  DX, CX
   113	SHRQ  $0x20, CX
   114	MOVL  DX, 16(R12)
   115	MOVL  CX, 36(R12)
   116	MOVQ  R9, 352(R12)
   117	MOVQ  $0x00000014, DX
   118	MOVOA 64(R12), X0
   119	MOVOA 80(R12), X1
   120	MOVOA 96(R12), X2
   121	MOVOA 256(R12), X3
   122	MOVOA 272(R12), X4
   123	MOVOA 128(R12), X5
   124	MOVOA 144(R12), X6
   125	MOVOA 176(R12), X7
   126	MOVOA 192(R12), X8
   127	MOVOA 208(R12), X9
   128	MOVOA 224(R12), X10
   129	MOVOA 304(R12), X11
   130	MOVOA 112(R12), X12
   131	MOVOA 160(R12), X13
   132	MOVOA 240(R12), X14
   133	MOVOA 288(R12), X15
   134
   135MAINLOOP1:
   136	MOVOA  X1, 320(R12)
   137	MOVOA  X2, 336(R12)
   138	MOVOA  X13, X1
   139	PADDL  X12, X1
   140	MOVOA  X1, X2
   141	PSLLL  $0x07, X1
   142	PXOR   X1, X14
   143	PSRLL  $0x19, X2
   144	PXOR   X2, X14
   145	MOVOA  X7, X1
   146	PADDL  X0, X1
   147	MOVOA  X1, X2
   148	PSLLL  $0x07, X1
   149	PXOR   X1, X11
   150	PSRLL  $0x19, X2
   151	PXOR   X2, X11
   152	MOVOA  X12, X1
   153	PADDL  X14, X1
   154	MOVOA  X1, X2
   155	PSLLL  $0x09, X1
   156	PXOR   X1, X15
   157	PSRLL  $0x17, X2
   158	PXOR   X2, X15
   159	MOVOA  X0, X1
   160	PADDL  X11, X1
   161	MOVOA  X1, X2
   162	PSLLL  $0x09, X1
   163	PXOR   X1, X9
   164	PSRLL  $0x17, X2
   165	PXOR   X2, X9
   166	MOVOA  X14, X1
   167	PADDL  X15, X1
   168	MOVOA  X1, X2
   169	PSLLL  $0x0d, X1
   170	PXOR   X1, X13
   171	PSRLL  $0x13, X2
   172	PXOR   X2, X13
   173	MOVOA  X11, X1
   174	PADDL  X9, X1
   175	MOVOA  X1, X2
   176	PSLLL  $0x0d, X1
   177	PXOR   X1, X7
   178	PSRLL  $0x13, X2
   179	PXOR   X2, X7
   180	MOVOA  X15, X1
   181	PADDL  X13, X1
   182	MOVOA  X1, X2
   183	PSLLL  $0x12, X1
   184	PXOR   X1, X12
   185	PSRLL  $0x0e, X2
   186	PXOR   X2, X12
   187	MOVOA  320(R12), X1
   188	MOVOA  X12, 320(R12)
   189	MOVOA  X9, X2
   190	PADDL  X7, X2
   191	MOVOA  X2, X12
   192	PSLLL  $0x12, X2
   193	PXOR   X2, X0
   194	PSRLL  $0x0e, X12
   195	PXOR   X12, X0
   196	MOVOA  X5, X2
   197	PADDL  X1, X2
   198	MOVOA  X2, X12
   199	PSLLL  $0x07, X2
   200	PXOR   X2, X3
   201	PSRLL  $0x19, X12
   202	PXOR   X12, X3
   203	MOVOA  336(R12), X2
   204	MOVOA  X0, 336(R12)
   205	MOVOA  X6, X0
   206	PADDL  X2, X0
   207	MOVOA  X0, X12
   208	PSLLL  $0x07, X0
   209	PXOR   X0, X4
   210	PSRLL  $0x19, X12
   211	PXOR   X12, X4
   212	MOVOA  X1, X0
   213	PADDL  X3, X0
   214	MOVOA  X0, X12
   215	PSLLL  $0x09, X0
   216	PXOR   X0, X10
   217	PSRLL  $0x17, X12
   218	PXOR   X12, X10
   219	MOVOA  X2, X0
   220	PADDL  X4, X0
   221	MOVOA  X0, X12
   222	PSLLL  $0x09, X0
   223	PXOR   X0, X8
   224	PSRLL  $0x17, X12
   225	PXOR   X12, X8
   226	MOVOA  X3, X0
   227	PADDL  X10, X0
   228	MOVOA  X0, X12
   229	PSLLL  $0x0d, X0
   230	PXOR   X0, X5
   231	PSRLL  $0x13, X12
   232	PXOR   X12, X5
   233	MOVOA  X4, X0
   234	PADDL  X8, X0
   235	MOVOA  X0, X12
   236	PSLLL  $0x0d, X0
   237	PXOR   X0, X6
   238	PSRLL  $0x13, X12
   239	PXOR   X12, X6
   240	MOVOA  X10, X0
   241	PADDL  X5, X0
   242	MOVOA  X0, X12
   243	PSLLL  $0x12, X0
   244	PXOR   X0, X1
   245	PSRLL  $0x0e, X12
   246	PXOR   X12, X1
   247	MOVOA  320(R12), X0
   248	MOVOA  X1, 320(R12)
   249	MOVOA  X4, X1
   250	PADDL  X0, X1
   251	MOVOA  X1, X12
   252	PSLLL  $0x07, X1
   253	PXOR   X1, X7
   254	PSRLL  $0x19, X12
   255	PXOR   X12, X7
   256	MOVOA  X8, X1
   257	PADDL  X6, X1
   258	MOVOA  X1, X12
   259	PSLLL  $0x12, X1
   260	PXOR   X1, X2
   261	PSRLL  $0x0e, X12
   262	PXOR   X12, X2
   263	MOVOA  336(R12), X12
   264	MOVOA  X2, 336(R12)
   265	MOVOA  X14, X1
   266	PADDL  X12, X1
   267	MOVOA  X1, X2
   268	PSLLL  $0x07, X1
   269	PXOR   X1, X5
   270	PSRLL  $0x19, X2
   271	PXOR   X2, X5
   272	MOVOA  X0, X1
   273	PADDL  X7, X1
   274	MOVOA  X1, X2
   275	PSLLL  $0x09, X1
   276	PXOR   X1, X10
   277	PSRLL  $0x17, X2
   278	PXOR   X2, X10
   279	MOVOA  X12, X1
   280	PADDL  X5, X1
   281	MOVOA  X1, X2
   282	PSLLL  $0x09, X1
   283	PXOR   X1, X8
   284	PSRLL  $0x17, X2
   285	PXOR   X2, X8
   286	MOVOA  X7, X1
   287	PADDL  X10, X1
   288	MOVOA  X1, X2
   289	PSLLL  $0x0d, X1
   290	PXOR   X1, X4
   291	PSRLL  $0x13, X2
   292	PXOR   X2, X4
   293	MOVOA  X5, X1
   294	PADDL  X8, X1
   295	MOVOA  X1, X2
   296	PSLLL  $0x0d, X1
   297	PXOR   X1, X14
   298	PSRLL  $0x13, X2
   299	PXOR   X2, X14
   300	MOVOA  X10, X1
   301	PADDL  X4, X1
   302	MOVOA  X1, X2
   303	PSLLL  $0x12, X1
   304	PXOR   X1, X0
   305	PSRLL  $0x0e, X2
   306	PXOR   X2, X0
   307	MOVOA  320(R12), X1
   308	MOVOA  X0, 320(R12)
   309	MOVOA  X8, X0
   310	PADDL  X14, X0
   311	MOVOA  X0, X2
   312	PSLLL  $0x12, X0
   313	PXOR   X0, X12
   314	PSRLL  $0x0e, X2
   315	PXOR   X2, X12
   316	MOVOA  X11, X0
   317	PADDL  X1, X0
   318	MOVOA  X0, X2
   319	PSLLL  $0x07, X0
   320	PXOR   X0, X6
   321	PSRLL  $0x19, X2
   322	PXOR   X2, X6
   323	MOVOA  336(R12), X2
   324	MOVOA  X12, 336(R12)
   325	MOVOA  X3, X0
   326	PADDL  X2, X0
   327	MOVOA  X0, X12
   328	PSLLL  $0x07, X0
   329	PXOR   X0, X13
   330	PSRLL  $0x19, X12
   331	PXOR   X12, X13
   332	MOVOA  X1, X0
   333	PADDL  X6, X0
   334	MOVOA  X0, X12
   335	PSLLL  $0x09, X0
   336	PXOR   X0, X15
   337	PSRLL  $0x17, X12
   338	PXOR   X12, X15
   339	MOVOA  X2, X0
   340	PADDL  X13, X0
   341	MOVOA  X0, X12
   342	PSLLL  $0x09, X0
   343	PXOR   X0, X9
   344	PSRLL  $0x17, X12
   345	PXOR   X12, X9
   346	MOVOA  X6, X0
   347	PADDL  X15, X0
   348	MOVOA  X0, X12
   349	PSLLL  $0x0d, X0
   350	PXOR   X0, X11
   351	PSRLL  $0x13, X12
   352	PXOR   X12, X11
   353	MOVOA  X13, X0
   354	PADDL  X9, X0
   355	MOVOA  X0, X12
   356	PSLLL  $0x0d, X0
   357	PXOR   X0, X3
   358	PSRLL  $0x13, X12
   359	PXOR   X12, X3
   360	MOVOA  X15, X0
   361	PADDL  X11, X0
   362	MOVOA  X0, X12
   363	PSLLL  $0x12, X0
   364	PXOR   X0, X1
   365	PSRLL  $0x0e, X12
   366	PXOR   X12, X1
   367	MOVOA  X9, X0
   368	PADDL  X3, X0
   369	MOVOA  X0, X12
   370	PSLLL  $0x12, X0
   371	PXOR   X0, X2
   372	PSRLL  $0x0e, X12
   373	PXOR   X12, X2
   374	MOVOA  320(R12), X12
   375	MOVOA  336(R12), X0
   376	SUBQ   $0x02, DX
   377	JA     MAINLOOP1
   378	PADDL  112(R12), X12
   379	PADDL  176(R12), X7
   380	PADDL  224(R12), X10
   381	PADDL  272(R12), X4
   382	MOVD   X12, DX
   383	MOVD   X7, CX
   384	MOVD   X10, R8
   385	MOVD   X4, R9
   386	PSHUFL $0x39, X12, X12
   387	PSHUFL $0x39, X7, X7
   388	PSHUFL $0x39, X10, X10
   389	PSHUFL $0x39, X4, X4
   390	XORL   (SI), DX
   391	XORL   4(SI), CX
   392	XORL   8(SI), R8
   393	XORL   12(SI), R9
   394	MOVL   DX, (DI)
   395	MOVL   CX, 4(DI)
   396	MOVL   R8, 8(DI)
   397	MOVL   R9, 12(DI)
   398	MOVD   X12, DX
   399	MOVD   X7, CX
   400	MOVD   X10, R8
   401	MOVD   X4, R9
   402	PSHUFL $0x39, X12, X12
   403	PSHUFL $0x39, X7, X7
   404	PSHUFL $0x39, X10, X10
   405	PSHUFL $0x39, X4, X4
   406	XORL   64(SI), DX
   407	XORL   68(SI), CX
   408	XORL   72(SI), R8
   409	XORL   76(SI), R9
   410	MOVL   DX, 64(DI)
   411	MOVL   CX, 68(DI)
   412	MOVL   R8, 72(DI)
   413	MOVL   R9, 76(DI)
   414	MOVD   X12, DX
   415	MOVD   X7, CX
   416	MOVD   X10, R8
   417	MOVD   X4, R9
   418	PSHUFL $0x39, X12, X12
   419	PSHUFL $0x39, X7, X7
   420	PSHUFL $0x39, X10, X10
   421	PSHUFL $0x39, X4, X4
   422	XORL   128(SI), DX
   423	XORL   132(SI), CX
   424	XORL   136(SI), R8
   425	XORL   140(SI), R9
   426	MOVL   DX, 128(DI)
   427	MOVL   CX, 132(DI)
   428	MOVL   R8, 136(DI)
   429	MOVL   R9, 140(DI)
   430	MOVD   X12, DX
   431	MOVD   X7, CX
   432	MOVD   X10, R8
   433	MOVD   X4, R9
   434	XORL   192(SI), DX
   435	XORL   196(SI), CX
   436	XORL   200(SI), R8
   437	XORL   204(SI), R9
   438	MOVL   DX, 192(DI)
   439	MOVL   CX, 196(DI)
   440	MOVL   R8, 200(DI)
   441	MOVL   R9, 204(DI)
   442	PADDL  240(R12), X14
   443	PADDL  64(R12), X0
   444	PADDL  128(R12), X5
   445	PADDL  192(R12), X8
   446	MOVD   X14, DX
   447	MOVD   X0, CX
   448	MOVD   X5, R8
   449	MOVD   X8, R9
   450	PSHUFL $0x39, X14, X14
   451	PSHUFL $0x39, X0, X0
   452	PSHUFL $0x39, X5, X5
   453	PSHUFL $0x39, X8, X8
   454	XORL   16(SI), DX
   455	XORL   20(SI), CX
   456	XORL   24(SI), R8
   457	XORL   28(SI), R9
   458	MOVL   DX, 16(DI)
   459	MOVL   CX, 20(DI)
   460	MOVL   R8, 24(DI)
   461	MOVL   R9, 28(DI)
   462	MOVD   X14, DX
   463	MOVD   X0, CX
   464	MOVD   X5, R8
   465	MOVD   X8, R9
   466	PSHUFL $0x39, X14, X14
   467	PSHUFL $0x39, X0, X0
   468	PSHUFL $0x39, X5, X5
   469	PSHUFL $0x39, X8, X8
   470	XORL   80(SI), DX
   471	XORL   84(SI), CX
   472	XORL   88(SI), R8
   473	XORL   92(SI), R9
   474	MOVL   DX, 80(DI)
   475	MOVL   CX, 84(DI)
   476	MOVL   R8, 88(DI)
   477	MOVL   R9, 92(DI)
   478	MOVD   X14, DX
   479	MOVD   X0, CX
   480	MOVD   X5, R8
   481	MOVD   X8, R9
   482	PSHUFL $0x39, X14, X14
   483	PSHUFL $0x39, X0, X0
   484	PSHUFL $0x39, X5, X5
   485	PSHUFL $0x39, X8, X8
   486	XORL   144(SI), DX
   487	XORL   148(SI), CX
   488	XORL   152(SI), R8
   489	XORL   156(SI), R9
   490	MOVL   DX, 144(DI)
   491	MOVL   CX, 148(DI)
   492	MOVL   R8, 152(DI)
   493	MOVL   R9, 156(DI)
   494	MOVD   X14, DX
   495	MOVD   X0, CX
   496	MOVD   X5, R8
   497	MOVD   X8, R9
   498	XORL   208(SI), DX
   499	XORL   212(SI), CX
   500	XORL   216(SI), R8
   501	XORL   220(SI), R9
   502	MOVL   DX, 208(DI)
   503	MOVL   CX, 212(DI)
   504	MOVL   R8, 216(DI)
   505	MOVL   R9, 220(DI)
   506	PADDL  288(R12), X15
   507	PADDL  304(R12), X11
   508	PADDL  80(R12), X1
   509	PADDL  144(R12), X6
   510	MOVD   X15, DX
   511	MOVD   X11, CX
   512	MOVD   X1, R8
   513	MOVD   X6, R9
   514	PSHUFL $0x39, X15, X15
   515	PSHUFL $0x39, X11, X11
   516	PSHUFL $0x39, X1, X1
   517	PSHUFL $0x39, X6, X6
   518	XORL   32(SI), DX
   519	XORL   36(SI), CX
   520	XORL   40(SI), R8
   521	XORL   44(SI), R9
   522	MOVL   DX, 32(DI)
   523	MOVL   CX, 36(DI)
   524	MOVL   R8, 40(DI)
   525	MOVL   R9, 44(DI)
   526	MOVD   X15, DX
   527	MOVD   X11, CX
   528	MOVD   X1, R8
   529	MOVD   X6, R9
   530	PSHUFL $0x39, X15, X15
   531	PSHUFL $0x39, X11, X11
   532	PSHUFL $0x39, X1, X1
   533	PSHUFL $0x39, X6, X6
   534	XORL   96(SI), DX
   535	XORL   100(SI), CX
   536	XORL   104(SI), R8
   537	XORL   108(SI), R9
   538	MOVL   DX, 96(DI)
   539	MOVL   CX, 100(DI)
   540	MOVL   R8, 104(DI)
   541	MOVL   R9, 108(DI)
   542	MOVD   X15, DX
   543	MOVD   X11, CX
   544	MOVD   X1, R8
   545	MOVD   X6, R9
   546	PSHUFL $0x39, X15, X15
   547	PSHUFL $0x39, X11, X11
   548	PSHUFL $0x39, X1, X1
   549	PSHUFL $0x39, X6, X6
   550	XORL   160(SI), DX
   551	XORL   164(SI), CX
   552	XORL   168(SI), R8
   553	XORL   172(SI), R9
   554	MOVL   DX, 160(DI)
   555	MOVL   CX, 164(DI)
   556	MOVL   R8, 168(DI)
   557	MOVL   R9, 172(DI)
   558	MOVD   X15, DX
   559	MOVD   X11, CX
   560	MOVD   X1, R8
   561	MOVD   X6, R9
   562	XORL   224(SI), DX
   563	XORL   228(SI), CX
   564	XORL   232(SI), R8
   565	XORL   236(SI), R9
   566	MOVL   DX, 224(DI)
   567	MOVL   CX, 228(DI)
   568	MOVL   R8, 232(DI)
   569	MOVL   R9, 236(DI)
   570	PADDL  160(R12), X13
   571	PADDL  208(R12), X9
   572	PADDL  256(R12), X3
   573	PADDL  96(R12), X2
   574	MOVD   X13, DX
   575	MOVD   X9, CX
   576	MOVD   X3, R8
   577	MOVD   X2, R9
   578	PSHUFL $0x39, X13, X13
   579	PSHUFL $0x39, X9, X9
   580	PSHUFL $0x39, X3, X3
   581	PSHUFL $0x39, X2, X2
   582	XORL   48(SI), DX
   583	XORL   52(SI), CX
   584	XORL   56(SI), R8
   585	XORL   60(SI), R9
   586	MOVL   DX, 48(DI)
   587	MOVL   CX, 52(DI)
   588	MOVL   R8, 56(DI)
   589	MOVL   R9, 60(DI)
   590	MOVD   X13, DX
   591	MOVD   X9, CX
   592	MOVD   X3, R8
   593	MOVD   X2, R9
   594	PSHUFL $0x39, X13, X13
   595	PSHUFL $0x39, X9, X9
   596	PSHUFL $0x39, X3, X3
   597	PSHUFL $0x39, X2, X2
   598	XORL   112(SI), DX
   599	XORL   116(SI), CX
   600	XORL   120(SI), R8
   601	XORL   124(SI), R9
   602	MOVL   DX, 112(DI)
   603	MOVL   CX, 116(DI)
   604	MOVL   R8, 120(DI)
   605	MOVL   R9, 124(DI)
   606	MOVD   X13, DX
   607	MOVD   X9, CX
   608	MOVD   X3, R8
   609	MOVD   X2, R9
   610	PSHUFL $0x39, X13, X13
   611	PSHUFL $0x39, X9, X9
   612	PSHUFL $0x39, X3, X3
   613	PSHUFL $0x39, X2, X2
   614	XORL   176(SI), DX
   615	XORL   180(SI), CX
   616	XORL   184(SI), R8
   617	XORL   188(SI), R9
   618	MOVL   DX, 176(DI)
   619	MOVL   CX, 180(DI)
   620	MOVL   R8, 184(DI)
   621	MOVL   R9, 188(DI)
   622	MOVD   X13, DX
   623	MOVD   X9, CX
   624	MOVD   X3, R8
   625	MOVD   X2, R9
   626	XORL   240(SI), DX
   627	XORL   244(SI), CX
   628	XORL   248(SI), R8
   629	XORL   252(SI), R9
   630	MOVL   DX, 240(DI)
   631	MOVL   CX, 244(DI)
   632	MOVL   R8, 248(DI)
   633	MOVL   R9, 252(DI)
   634	MOVQ   352(R12), R9
   635	SUBQ   $0x00000100, R9
   636	ADDQ   $0x00000100, SI
   637	ADDQ   $0x00000100, DI
   638	CMPQ   R9, $0x00000100
   639	JAE    BYTESATLEAST256
   640	CMPQ   R9, $0x00
   641	JBE    DONE
   642
   643BYTESBETWEEN1AND255:
   644	CMPQ R9, $0x40
   645	JAE  NOCOPY
   646	MOVQ DI, DX
   647	LEAQ 360(R12), DI
   648	MOVQ R9, CX
   649	REP; MOVSB
   650	LEAQ 360(R12), DI
   651	LEAQ 360(R12), SI
   652
   653NOCOPY:
   654	MOVQ  R9, 352(R12)
   655	MOVOA 48(R12), X0
   656	MOVOA (R12), X1
   657	MOVOA 16(R12), X2
   658	MOVOA 32(R12), X3
   659	MOVOA X1, X4
   660	MOVQ  $0x00000014, CX
   661
   662MAINLOOP2:
   663	PADDL  X0, X4
   664	MOVOA  X0, X5
   665	MOVOA  X4, X6
   666	PSLLL  $0x07, X4
   667	PSRLL  $0x19, X6
   668	PXOR   X4, X3
   669	PXOR   X6, X3
   670	PADDL  X3, X5
   671	MOVOA  X3, X4
   672	MOVOA  X5, X6
   673	PSLLL  $0x09, X5
   674	PSRLL  $0x17, X6
   675	PXOR   X5, X2
   676	PSHUFL $0x93, X3, X3
   677	PXOR   X6, X2
   678	PADDL  X2, X4
   679	MOVOA  X2, X5
   680	MOVOA  X4, X6
   681	PSLLL  $0x0d, X4
   682	PSRLL  $0x13, X6
   683	PXOR   X4, X1
   684	PSHUFL $0x4e, X2, X2
   685	PXOR   X6, X1
   686	PADDL  X1, X5
   687	MOVOA  X3, X4
   688	MOVOA  X5, X6
   689	PSLLL  $0x12, X5
   690	PSRLL  $0x0e, X6
   691	PXOR   X5, X0
   692	PSHUFL $0x39, X1, X1
   693	PXOR   X6, X0
   694	PADDL  X0, X4
   695	MOVOA  X0, X5
   696	MOVOA  X4, X6
   697	PSLLL  $0x07, X4
   698	PSRLL  $0x19, X6
   699	PXOR   X4, X1
   700	PXOR   X6, X1
   701	PADDL  X1, X5
   702	MOVOA  X1, X4
   703	MOVOA  X5, X6
   704	PSLLL  $0x09, X5
   705	PSRLL  $0x17, X6
   706	PXOR   X5, X2
   707	PSHUFL $0x93, X1, X1
   708	PXOR   X6, X2
   709	PADDL  X2, X4
   710	MOVOA  X2, X5
   711	MOVOA  X4, X6
   712	PSLLL  $0x0d, X4
   713	PSRLL  $0x13, X6
   714	PXOR   X4, X3
   715	PSHUFL $0x4e, X2, X2
   716	PXOR   X6, X3
   717	PADDL  X3, X5
   718	MOVOA  X1, X4
   719	MOVOA  X5, X6
   720	PSLLL  $0x12, X5
   721	PSRLL  $0x0e, X6
   722	PXOR   X5, X0
   723	PSHUFL $0x39, X3, X3
   724	PXOR   X6, X0
   725	PADDL  X0, X4
   726	MOVOA  X0, X5
   727	MOVOA  X4, X6
   728	PSLLL  $0x07, X4
   729	PSRLL  $0x19, X6
   730	PXOR   X4, X3
   731	PXOR   X6, X3
   732	PADDL  X3, X5
   733	MOVOA  X3, X4
   734	MOVOA  X5, X6
   735	PSLLL  $0x09, X5
   736	PSRLL  $0x17, X6
   737	PXOR   X5, X2
   738	PSHUFL $0x93, X3, X3
   739	PXOR   X6, X2
   740	PADDL  X2, X4
   741	MOVOA  X2, X5
   742	MOVOA  X4, X6
   743	PSLLL  $0x0d, X4
   744	PSRLL  $0x13, X6
   745	PXOR   X4, X1
   746	PSHUFL $0x4e, X2, X2
   747	PXOR   X6, X1
   748	PADDL  X1, X5
   749	MOVOA  X3, X4
   750	MOVOA  X5, X6
   751	PSLLL  $0x12, X5
   752	PSRLL  $0x0e, X6
   753	PXOR   X5, X0
   754	PSHUFL $0x39, X1, X1
   755	PXOR   X6, X0
   756	PADDL  X0, X4
   757	MOVOA  X0, X5
   758	MOVOA  X4, X6
   759	PSLLL  $0x07, X4
   760	PSRLL  $0x19, X6
   761	PXOR   X4, X1
   762	PXOR   X6, X1
   763	PADDL  X1, X5
   764	MOVOA  X1, X4
   765	MOVOA  X5, X6
   766	PSLLL  $0x09, X5
   767	PSRLL  $0x17, X6
   768	PXOR   X5, X2
   769	PSHUFL $0x93, X1, X1
   770	PXOR   X6, X2
   771	PADDL  X2, X4
   772	MOVOA  X2, X5
   773	MOVOA  X4, X6
   774	PSLLL  $0x0d, X4
   775	PSRLL  $0x13, X6
   776	PXOR   X4, X3
   777	PSHUFL $0x4e, X2, X2
   778	PXOR   X6, X3
   779	SUBQ   $0x04, CX
   780	PADDL  X3, X5
   781	MOVOA  X1, X4
   782	MOVOA  X5, X6
   783	PSLLL  $0x12, X5
   784	PXOR   X7, X7
   785	PSRLL  $0x0e, X6
   786	PXOR   X5, X0
   787	PSHUFL $0x39, X3, X3
   788	PXOR   X6, X0
   789	JA     MAINLOOP2
   790	PADDL  48(R12), X0
   791	PADDL  (R12), X1
   792	PADDL  16(R12), X2
   793	PADDL  32(R12), X3
   794	MOVD   X0, CX
   795	MOVD   X1, R8
   796	MOVD   X2, R9
   797	MOVD   X3, AX
   798	PSHUFL $0x39, X0, X0
   799	PSHUFL $0x39, X1, X1
   800	PSHUFL $0x39, X2, X2
   801	PSHUFL $0x39, X3, X3
   802	XORL   (SI), CX
   803	XORL   48(SI), R8
   804	XORL   32(SI), R9
   805	XORL   16(SI), AX
   806	MOVL   CX, (DI)
   807	MOVL   R8, 48(DI)
   808	MOVL   R9, 32(DI)
   809	MOVL   AX, 16(DI)
   810	MOVD   X0, CX
   811	MOVD   X1, R8
   812	MOVD   X2, R9
   813	MOVD   X3, AX
   814	PSHUFL $0x39, X0, X0
   815	PSHUFL $0x39, X1, X1
   816	PSHUFL $0x39, X2, X2
   817	PSHUFL $0x39, X3, X3
   818	XORL   20(SI), CX
   819	XORL   4(SI), R8
   820	XORL   52(SI), R9
   821	XORL   36(SI), AX
   822	MOVL   CX, 20(DI)
   823	MOVL   R8, 4(DI)
   824	MOVL   R9, 52(DI)
   825	MOVL   AX, 36(DI)
   826	MOVD   X0, CX
   827	MOVD   X1, R8
   828	MOVD   X2, R9
   829	MOVD   X3, AX
   830	PSHUFL $0x39, X0, X0
   831	PSHUFL $0x39, X1, X1
   832	PSHUFL $0x39, X2, X2
   833	PSHUFL $0x39, X3, X3
   834	XORL   40(SI), CX
   835	XORL   24(SI), R8
   836	XORL   8(SI), R9
   837	XORL   56(SI), AX
   838	MOVL   CX, 40(DI)
   839	MOVL   R8, 24(DI)
   840	MOVL   R9, 8(DI)
   841	MOVL   AX, 56(DI)
   842	MOVD   X0, CX
   843	MOVD   X1, R8
   844	MOVD   X2, R9
   845	MOVD   X3, AX
   846	XORL   60(SI), CX
   847	XORL   44(SI), R8
   848	XORL   28(SI), R9
   849	XORL   12(SI), AX
   850	MOVL   CX, 60(DI)
   851	MOVL   R8, 44(DI)
   852	MOVL   R9, 28(DI)
   853	MOVL   AX, 12(DI)
   854	MOVQ   352(R12), R9
   855	MOVL   16(R12), CX
   856	MOVL   36(R12), R8
   857	ADDQ   $0x01, CX
   858	SHLQ   $0x20, R8
   859	ADDQ   R8, CX
   860	MOVQ   CX, R8
   861	SHRQ   $0x20, R8
   862	MOVL   CX, 16(R12)
   863	MOVL   R8, 36(R12)
   864	CMPQ   R9, $0x40
   865	JA     BYTESATLEAST65
   866	JAE    BYTESATLEAST64
   867	MOVQ   DI, SI
   868	MOVQ   DX, DI
   869	MOVQ   R9, CX
   870	REP; MOVSB
   871
   872BYTESATLEAST64:
   873DONE:
   874	RET
   875
   876BYTESATLEAST65:
   877	SUBQ $0x40, R9
   878	ADDQ $0x40, DI
   879	ADDQ $0x40, SI
   880	JMP  BYTESBETWEEN1AND255

View as plain text