blake2b_amd64.s 29 KB

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