crct10dif-vpmsum_asm.S 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845
  1. /* SPDX-License-Identifier: GPL-2.0-or-later */
  2. /*
  3. * Calculate a CRC T10DIF with vpmsum acceleration
  4. *
  5. * Constants generated by crc32-vpmsum, available at
  6. * https://github.com/antonblanchard/crc32-vpmsum
  7. *
  8. * crc32-vpmsum is
  9. * Copyright (C) 2015 Anton Blanchard <anton@au.ibm.com>, IBM
  10. */
  11. .section .rodata
  12. .balign 16
  13. .byteswap_constant:
  14. /* byte reverse permute constant */
  15. .octa 0x0F0E0D0C0B0A09080706050403020100
  16. .constants:
  17. /* Reduce 262144 kbits to 1024 bits */
  18. /* x^261184 mod p(x), x^261120 mod p(x) */
  19. .octa 0x0000000056d300000000000052550000
  20. /* x^260160 mod p(x), x^260096 mod p(x) */
  21. .octa 0x00000000ee67000000000000a1e40000
  22. /* x^259136 mod p(x), x^259072 mod p(x) */
  23. .octa 0x0000000060830000000000004ad10000
  24. /* x^258112 mod p(x), x^258048 mod p(x) */
  25. .octa 0x000000008cfe0000000000009ab40000
  26. /* x^257088 mod p(x), x^257024 mod p(x) */
  27. .octa 0x000000003e93000000000000fdb50000
  28. /* x^256064 mod p(x), x^256000 mod p(x) */
  29. .octa 0x000000003c2000000000000045480000
  30. /* x^255040 mod p(x), x^254976 mod p(x) */
  31. .octa 0x00000000b1fc0000000000008d690000
  32. /* x^254016 mod p(x), x^253952 mod p(x) */
  33. .octa 0x00000000f82b00000000000024ad0000
  34. /* x^252992 mod p(x), x^252928 mod p(x) */
  35. .octa 0x0000000044420000000000009f1a0000
  36. /* x^251968 mod p(x), x^251904 mod p(x) */
  37. .octa 0x00000000e88c00000000000066ec0000
  38. /* x^250944 mod p(x), x^250880 mod p(x) */
  39. .octa 0x00000000385c000000000000c87d0000
  40. /* x^249920 mod p(x), x^249856 mod p(x) */
  41. .octa 0x000000003227000000000000c8ff0000
  42. /* x^248896 mod p(x), x^248832 mod p(x) */
  43. .octa 0x00000000a9a900000000000033440000
  44. /* x^247872 mod p(x), x^247808 mod p(x) */
  45. .octa 0x00000000abaa00000000000066eb0000
  46. /* x^246848 mod p(x), x^246784 mod p(x) */
  47. .octa 0x000000001ac3000000000000c4ef0000
  48. /* x^245824 mod p(x), x^245760 mod p(x) */
  49. .octa 0x0000000063f000000000000056f30000
  50. /* x^244800 mod p(x), x^244736 mod p(x) */
  51. .octa 0x0000000032cc00000000000002050000
  52. /* x^243776 mod p(x), x^243712 mod p(x) */
  53. .octa 0x00000000f8b5000000000000568e0000
  54. /* x^242752 mod p(x), x^242688 mod p(x) */
  55. .octa 0x000000008db100000000000064290000
  56. /* x^241728 mod p(x), x^241664 mod p(x) */
  57. .octa 0x0000000059ca0000000000006b660000
  58. /* x^240704 mod p(x), x^240640 mod p(x) */
  59. .octa 0x000000005f5c00000000000018f80000
  60. /* x^239680 mod p(x), x^239616 mod p(x) */
  61. .octa 0x0000000061af000000000000b6090000
  62. /* x^238656 mod p(x), x^238592 mod p(x) */
  63. .octa 0x00000000e29e000000000000099a0000
  64. /* x^237632 mod p(x), x^237568 mod p(x) */
  65. .octa 0x000000000975000000000000a8360000
  66. /* x^236608 mod p(x), x^236544 mod p(x) */
  67. .octa 0x0000000043900000000000004f570000
  68. /* x^235584 mod p(x), x^235520 mod p(x) */
  69. .octa 0x00000000f9cd000000000000134c0000
  70. /* x^234560 mod p(x), x^234496 mod p(x) */
  71. .octa 0x000000007c29000000000000ec380000
  72. /* x^233536 mod p(x), x^233472 mod p(x) */
  73. .octa 0x000000004c6a000000000000b0d10000
  74. /* x^232512 mod p(x), x^232448 mod p(x) */
  75. .octa 0x00000000e7290000000000007d3e0000
  76. /* x^231488 mod p(x), x^231424 mod p(x) */
  77. .octa 0x00000000f1ab000000000000f0b20000
  78. /* x^230464 mod p(x), x^230400 mod p(x) */
  79. .octa 0x0000000039db0000000000009c270000
  80. /* x^229440 mod p(x), x^229376 mod p(x) */
  81. .octa 0x000000005e2800000000000092890000
  82. /* x^228416 mod p(x), x^228352 mod p(x) */
  83. .octa 0x00000000d44e000000000000d5ee0000
  84. /* x^227392 mod p(x), x^227328 mod p(x) */
  85. .octa 0x00000000cd0a00000000000041f50000
  86. /* x^226368 mod p(x), x^226304 mod p(x) */
  87. .octa 0x00000000c5b400000000000010520000
  88. /* x^225344 mod p(x), x^225280 mod p(x) */
  89. .octa 0x00000000fd2100000000000042170000
  90. /* x^224320 mod p(x), x^224256 mod p(x) */
  91. .octa 0x000000002f2500000000000095c20000
  92. /* x^223296 mod p(x), x^223232 mod p(x) */
  93. .octa 0x000000001b0100000000000001ce0000
  94. /* x^222272 mod p(x), x^222208 mod p(x) */
  95. .octa 0x000000000d430000000000002aca0000
  96. /* x^221248 mod p(x), x^221184 mod p(x) */
  97. .octa 0x0000000030a6000000000000385e0000
  98. /* x^220224 mod p(x), x^220160 mod p(x) */
  99. .octa 0x00000000e37b0000000000006f7a0000
  100. /* x^219200 mod p(x), x^219136 mod p(x) */
  101. .octa 0x00000000873600000000000024320000
  102. /* x^218176 mod p(x), x^218112 mod p(x) */
  103. .octa 0x00000000e9fb000000000000bd9c0000
  104. /* x^217152 mod p(x), x^217088 mod p(x) */
  105. .octa 0x000000003b9500000000000054bc0000
  106. /* x^216128 mod p(x), x^216064 mod p(x) */
  107. .octa 0x00000000133e000000000000a4660000
  108. /* x^215104 mod p(x), x^215040 mod p(x) */
  109. .octa 0x00000000784500000000000079930000
  110. /* x^214080 mod p(x), x^214016 mod p(x) */
  111. .octa 0x00000000b9800000000000001bb80000
  112. /* x^213056 mod p(x), x^212992 mod p(x) */
  113. .octa 0x00000000687600000000000024400000
  114. /* x^212032 mod p(x), x^211968 mod p(x) */
  115. .octa 0x00000000aff300000000000029e10000
  116. /* x^211008 mod p(x), x^210944 mod p(x) */
  117. .octa 0x0000000024b50000000000005ded0000
  118. /* x^209984 mod p(x), x^209920 mod p(x) */
  119. .octa 0x0000000017e8000000000000b12e0000
  120. /* x^208960 mod p(x), x^208896 mod p(x) */
  121. .octa 0x00000000128400000000000026d20000
  122. /* x^207936 mod p(x), x^207872 mod p(x) */
  123. .octa 0x000000002115000000000000a32a0000
  124. /* x^206912 mod p(x), x^206848 mod p(x) */
  125. .octa 0x000000009595000000000000a1210000
  126. /* x^205888 mod p(x), x^205824 mod p(x) */
  127. .octa 0x00000000281e000000000000ee8b0000
  128. /* x^204864 mod p(x), x^204800 mod p(x) */
  129. .octa 0x0000000006010000000000003d0d0000
  130. /* x^203840 mod p(x), x^203776 mod p(x) */
  131. .octa 0x00000000e2b600000000000034e90000
  132. /* x^202816 mod p(x), x^202752 mod p(x) */
  133. .octa 0x000000001bd40000000000004cdb0000
  134. /* x^201792 mod p(x), x^201728 mod p(x) */
  135. .octa 0x00000000df2800000000000030e90000
  136. /* x^200768 mod p(x), x^200704 mod p(x) */
  137. .octa 0x0000000049c200000000000042590000
  138. /* x^199744 mod p(x), x^199680 mod p(x) */
  139. .octa 0x000000009b97000000000000df950000
  140. /* x^198720 mod p(x), x^198656 mod p(x) */
  141. .octa 0x000000006184000000000000da7b0000
  142. /* x^197696 mod p(x), x^197632 mod p(x) */
  143. .octa 0x00000000461700000000000012510000
  144. /* x^196672 mod p(x), x^196608 mod p(x) */
  145. .octa 0x000000009b40000000000000f37e0000
  146. /* x^195648 mod p(x), x^195584 mod p(x) */
  147. .octa 0x00000000eeb2000000000000ecf10000
  148. /* x^194624 mod p(x), x^194560 mod p(x) */
  149. .octa 0x00000000b2e800000000000050f20000
  150. /* x^193600 mod p(x), x^193536 mod p(x) */
  151. .octa 0x00000000f59a000000000000e0b30000
  152. /* x^192576 mod p(x), x^192512 mod p(x) */
  153. .octa 0x00000000467f0000000000004d5a0000
  154. /* x^191552 mod p(x), x^191488 mod p(x) */
  155. .octa 0x00000000da92000000000000bb010000
  156. /* x^190528 mod p(x), x^190464 mod p(x) */
  157. .octa 0x000000001e1000000000000022a40000
  158. /* x^189504 mod p(x), x^189440 mod p(x) */
  159. .octa 0x0000000058fe000000000000836f0000
  160. /* x^188480 mod p(x), x^188416 mod p(x) */
  161. .octa 0x00000000b9ce000000000000d78d0000
  162. /* x^187456 mod p(x), x^187392 mod p(x) */
  163. .octa 0x0000000022210000000000004f8d0000
  164. /* x^186432 mod p(x), x^186368 mod p(x) */
  165. .octa 0x00000000744600000000000033760000
  166. /* x^185408 mod p(x), x^185344 mod p(x) */
  167. .octa 0x000000001c2e000000000000a1e50000
  168. /* x^184384 mod p(x), x^184320 mod p(x) */
  169. .octa 0x00000000dcc8000000000000a1a40000
  170. /* x^183360 mod p(x), x^183296 mod p(x) */
  171. .octa 0x00000000910f00000000000019a20000
  172. /* x^182336 mod p(x), x^182272 mod p(x) */
  173. .octa 0x0000000055d5000000000000f6ae0000
  174. /* x^181312 mod p(x), x^181248 mod p(x) */
  175. .octa 0x00000000c8ba000000000000a7ac0000
  176. /* x^180288 mod p(x), x^180224 mod p(x) */
  177. .octa 0x0000000031f8000000000000eea20000
  178. /* x^179264 mod p(x), x^179200 mod p(x) */
  179. .octa 0x000000001966000000000000c4d90000
  180. /* x^178240 mod p(x), x^178176 mod p(x) */
  181. .octa 0x00000000b9810000000000002b470000
  182. /* x^177216 mod p(x), x^177152 mod p(x) */
  183. .octa 0x000000008303000000000000f7cf0000
  184. /* x^176192 mod p(x), x^176128 mod p(x) */
  185. .octa 0x000000002ce500000000000035b30000
  186. /* x^175168 mod p(x), x^175104 mod p(x) */
  187. .octa 0x000000002fae0000000000000c7c0000
  188. /* x^174144 mod p(x), x^174080 mod p(x) */
  189. .octa 0x00000000f50c0000000000009edf0000
  190. /* x^173120 mod p(x), x^173056 mod p(x) */
  191. .octa 0x00000000714f00000000000004cd0000
  192. /* x^172096 mod p(x), x^172032 mod p(x) */
  193. .octa 0x00000000c161000000000000541b0000
  194. /* x^171072 mod p(x), x^171008 mod p(x) */
  195. .octa 0x0000000021c8000000000000e2700000
  196. /* x^170048 mod p(x), x^169984 mod p(x) */
  197. .octa 0x00000000b93d00000000000009a60000
  198. /* x^169024 mod p(x), x^168960 mod p(x) */
  199. .octa 0x00000000fbcf000000000000761c0000
  200. /* x^168000 mod p(x), x^167936 mod p(x) */
  201. .octa 0x0000000026350000000000009db30000
  202. /* x^166976 mod p(x), x^166912 mod p(x) */
  203. .octa 0x00000000b64f0000000000003e9f0000
  204. /* x^165952 mod p(x), x^165888 mod p(x) */
  205. .octa 0x00000000bd0e00000000000078590000
  206. /* x^164928 mod p(x), x^164864 mod p(x) */
  207. .octa 0x00000000d9360000000000008bc80000
  208. /* x^163904 mod p(x), x^163840 mod p(x) */
  209. .octa 0x000000002f140000000000008c9f0000
  210. /* x^162880 mod p(x), x^162816 mod p(x) */
  211. .octa 0x000000006a270000000000006af70000
  212. /* x^161856 mod p(x), x^161792 mod p(x) */
  213. .octa 0x000000006685000000000000e5210000
  214. /* x^160832 mod p(x), x^160768 mod p(x) */
  215. .octa 0x0000000062da00000000000008290000
  216. /* x^159808 mod p(x), x^159744 mod p(x) */
  217. .octa 0x00000000bb4b000000000000e4d00000
  218. /* x^158784 mod p(x), x^158720 mod p(x) */
  219. .octa 0x00000000d2490000000000004ae10000
  220. /* x^157760 mod p(x), x^157696 mod p(x) */
  221. .octa 0x00000000c85b00000000000000e70000
  222. /* x^156736 mod p(x), x^156672 mod p(x) */
  223. .octa 0x00000000c37a00000000000015650000
  224. /* x^155712 mod p(x), x^155648 mod p(x) */
  225. .octa 0x0000000018530000000000001c2f0000
  226. /* x^154688 mod p(x), x^154624 mod p(x) */
  227. .octa 0x00000000b46600000000000037bd0000
  228. /* x^153664 mod p(x), x^153600 mod p(x) */
  229. .octa 0x00000000439b00000000000012190000
  230. /* x^152640 mod p(x), x^152576 mod p(x) */
  231. .octa 0x00000000b1260000000000005ece0000
  232. /* x^151616 mod p(x), x^151552 mod p(x) */
  233. .octa 0x00000000d8110000000000002a5e0000
  234. /* x^150592 mod p(x), x^150528 mod p(x) */
  235. .octa 0x00000000099f00000000000052330000
  236. /* x^149568 mod p(x), x^149504 mod p(x) */
  237. .octa 0x00000000f9f9000000000000f9120000
  238. /* x^148544 mod p(x), x^148480 mod p(x) */
  239. .octa 0x000000005cc00000000000000ddc0000
  240. /* x^147520 mod p(x), x^147456 mod p(x) */
  241. .octa 0x00000000343b00000000000012200000
  242. /* x^146496 mod p(x), x^146432 mod p(x) */
  243. .octa 0x000000009222000000000000d12b0000
  244. /* x^145472 mod p(x), x^145408 mod p(x) */
  245. .octa 0x00000000d781000000000000eb2d0000
  246. /* x^144448 mod p(x), x^144384 mod p(x) */
  247. .octa 0x000000000bf400000000000058970000
  248. /* x^143424 mod p(x), x^143360 mod p(x) */
  249. .octa 0x00000000094200000000000013690000
  250. /* x^142400 mod p(x), x^142336 mod p(x) */
  251. .octa 0x00000000d55100000000000051950000
  252. /* x^141376 mod p(x), x^141312 mod p(x) */
  253. .octa 0x000000008f11000000000000954b0000
  254. /* x^140352 mod p(x), x^140288 mod p(x) */
  255. .octa 0x00000000140f000000000000b29e0000
  256. /* x^139328 mod p(x), x^139264 mod p(x) */
  257. .octa 0x00000000c6db000000000000db5d0000
  258. /* x^138304 mod p(x), x^138240 mod p(x) */
  259. .octa 0x00000000715b000000000000dfaf0000
  260. /* x^137280 mod p(x), x^137216 mod p(x) */
  261. .octa 0x000000000dea000000000000e3b60000
  262. /* x^136256 mod p(x), x^136192 mod p(x) */
  263. .octa 0x000000006f94000000000000ddaf0000
  264. /* x^135232 mod p(x), x^135168 mod p(x) */
  265. .octa 0x0000000024e1000000000000e4f70000
  266. /* x^134208 mod p(x), x^134144 mod p(x) */
  267. .octa 0x000000008810000000000000aa110000
  268. /* x^133184 mod p(x), x^133120 mod p(x) */
  269. .octa 0x0000000030c2000000000000a8e60000
  270. /* x^132160 mod p(x), x^132096 mod p(x) */
  271. .octa 0x00000000e6d0000000000000ccf30000
  272. /* x^131136 mod p(x), x^131072 mod p(x) */
  273. .octa 0x000000004da000000000000079bf0000
  274. /* x^130112 mod p(x), x^130048 mod p(x) */
  275. .octa 0x000000007759000000000000b3a30000
  276. /* x^129088 mod p(x), x^129024 mod p(x) */
  277. .octa 0x00000000597400000000000028790000
  278. /* x^128064 mod p(x), x^128000 mod p(x) */
  279. .octa 0x000000007acd000000000000b5820000
  280. /* x^127040 mod p(x), x^126976 mod p(x) */
  281. .octa 0x00000000e6e400000000000026ad0000
  282. /* x^126016 mod p(x), x^125952 mod p(x) */
  283. .octa 0x000000006d49000000000000985b0000
  284. /* x^124992 mod p(x), x^124928 mod p(x) */
  285. .octa 0x000000000f0800000000000011520000
  286. /* x^123968 mod p(x), x^123904 mod p(x) */
  287. .octa 0x000000002c7f000000000000846c0000
  288. /* x^122944 mod p(x), x^122880 mod p(x) */
  289. .octa 0x000000005ce7000000000000ae1d0000
  290. /* x^121920 mod p(x), x^121856 mod p(x) */
  291. .octa 0x00000000d4cb000000000000e21d0000
  292. /* x^120896 mod p(x), x^120832 mod p(x) */
  293. .octa 0x000000003a2300000000000019bb0000
  294. /* x^119872 mod p(x), x^119808 mod p(x) */
  295. .octa 0x000000000e1700000000000095290000
  296. /* x^118848 mod p(x), x^118784 mod p(x) */
  297. .octa 0x000000006e6400000000000050d20000
  298. /* x^117824 mod p(x), x^117760 mod p(x) */
  299. .octa 0x000000008d5c0000000000000cd10000
  300. /* x^116800 mod p(x), x^116736 mod p(x) */
  301. .octa 0x00000000ef310000000000007b570000
  302. /* x^115776 mod p(x), x^115712 mod p(x) */
  303. .octa 0x00000000645d00000000000053d60000
  304. /* x^114752 mod p(x), x^114688 mod p(x) */
  305. .octa 0x0000000018fc00000000000077510000
  306. /* x^113728 mod p(x), x^113664 mod p(x) */
  307. .octa 0x000000000cb3000000000000a7b70000
  308. /* x^112704 mod p(x), x^112640 mod p(x) */
  309. .octa 0x00000000991b000000000000d0780000
  310. /* x^111680 mod p(x), x^111616 mod p(x) */
  311. .octa 0x00000000845a000000000000be3c0000
  312. /* x^110656 mod p(x), x^110592 mod p(x) */
  313. .octa 0x00000000d3a9000000000000df020000
  314. /* x^109632 mod p(x), x^109568 mod p(x) */
  315. .octa 0x0000000017d7000000000000063e0000
  316. /* x^108608 mod p(x), x^108544 mod p(x) */
  317. .octa 0x000000007a860000000000008ab40000
  318. /* x^107584 mod p(x), x^107520 mod p(x) */
  319. .octa 0x00000000fd7c000000000000c7bd0000
  320. /* x^106560 mod p(x), x^106496 mod p(x) */
  321. .octa 0x00000000a56b000000000000efd60000
  322. /* x^105536 mod p(x), x^105472 mod p(x) */
  323. .octa 0x0000000010e400000000000071380000
  324. /* x^104512 mod p(x), x^104448 mod p(x) */
  325. .octa 0x00000000994500000000000004d30000
  326. /* x^103488 mod p(x), x^103424 mod p(x) */
  327. .octa 0x00000000b83c0000000000003b0e0000
  328. /* x^102464 mod p(x), x^102400 mod p(x) */
  329. .octa 0x00000000d6c10000000000008b020000
  330. /* x^101440 mod p(x), x^101376 mod p(x) */
  331. .octa 0x000000009efc000000000000da940000
  332. /* x^100416 mod p(x), x^100352 mod p(x) */
  333. .octa 0x000000005e87000000000000f9f70000
  334. /* x^99392 mod p(x), x^99328 mod p(x) */
  335. .octa 0x000000006c9b00000000000045e40000
  336. /* x^98368 mod p(x), x^98304 mod p(x) */
  337. .octa 0x00000000178a00000000000083940000
  338. /* x^97344 mod p(x), x^97280 mod p(x) */
  339. .octa 0x00000000f0c8000000000000f0a00000
  340. /* x^96320 mod p(x), x^96256 mod p(x) */
  341. .octa 0x00000000f699000000000000b74b0000
  342. /* x^95296 mod p(x), x^95232 mod p(x) */
  343. .octa 0x00000000316d000000000000c1cf0000
  344. /* x^94272 mod p(x), x^94208 mod p(x) */
  345. .octa 0x00000000987e00000000000072680000
  346. /* x^93248 mod p(x), x^93184 mod p(x) */
  347. .octa 0x00000000acff000000000000e0ab0000
  348. /* x^92224 mod p(x), x^92160 mod p(x) */
  349. .octa 0x00000000a1f6000000000000c5a80000
  350. /* x^91200 mod p(x), x^91136 mod p(x) */
  351. .octa 0x0000000061bd000000000000cf690000
  352. /* x^90176 mod p(x), x^90112 mod p(x) */
  353. .octa 0x00000000c9f2000000000000cbcc0000
  354. /* x^89152 mod p(x), x^89088 mod p(x) */
  355. .octa 0x000000005a33000000000000de050000
  356. /* x^88128 mod p(x), x^88064 mod p(x) */
  357. .octa 0x00000000e416000000000000ccd70000
  358. /* x^87104 mod p(x), x^87040 mod p(x) */
  359. .octa 0x0000000058930000000000002f670000
  360. /* x^86080 mod p(x), x^86016 mod p(x) */
  361. .octa 0x00000000a9d3000000000000152f0000
  362. /* x^85056 mod p(x), x^84992 mod p(x) */
  363. .octa 0x00000000c114000000000000ecc20000
  364. /* x^84032 mod p(x), x^83968 mod p(x) */
  365. .octa 0x00000000b9270000000000007c890000
  366. /* x^83008 mod p(x), x^82944 mod p(x) */
  367. .octa 0x000000002e6000000000000006ee0000
  368. /* x^81984 mod p(x), x^81920 mod p(x) */
  369. .octa 0x00000000dfc600000000000009100000
  370. /* x^80960 mod p(x), x^80896 mod p(x) */
  371. .octa 0x000000004911000000000000ad4e0000
  372. /* x^79936 mod p(x), x^79872 mod p(x) */
  373. .octa 0x00000000ae1b000000000000b04d0000
  374. /* x^78912 mod p(x), x^78848 mod p(x) */
  375. .octa 0x0000000005fa000000000000e9900000
  376. /* x^77888 mod p(x), x^77824 mod p(x) */
  377. .octa 0x0000000004a1000000000000cc6f0000
  378. /* x^76864 mod p(x), x^76800 mod p(x) */
  379. .octa 0x00000000af73000000000000ed110000
  380. /* x^75840 mod p(x), x^75776 mod p(x) */
  381. .octa 0x0000000082530000000000008f7e0000
  382. /* x^74816 mod p(x), x^74752 mod p(x) */
  383. .octa 0x00000000cfdc000000000000594f0000
  384. /* x^73792 mod p(x), x^73728 mod p(x) */
  385. .octa 0x00000000a6b6000000000000a8750000
  386. /* x^72768 mod p(x), x^72704 mod p(x) */
  387. .octa 0x00000000fd76000000000000aa0c0000
  388. /* x^71744 mod p(x), x^71680 mod p(x) */
  389. .octa 0x0000000006f500000000000071db0000
  390. /* x^70720 mod p(x), x^70656 mod p(x) */
  391. .octa 0x0000000037ca000000000000ab0c0000
  392. /* x^69696 mod p(x), x^69632 mod p(x) */
  393. .octa 0x00000000d7ab000000000000b7a00000
  394. /* x^68672 mod p(x), x^68608 mod p(x) */
  395. .octa 0x00000000440800000000000090d30000
  396. /* x^67648 mod p(x), x^67584 mod p(x) */
  397. .octa 0x00000000186100000000000054730000
  398. /* x^66624 mod p(x), x^66560 mod p(x) */
  399. .octa 0x000000007368000000000000a3a20000
  400. /* x^65600 mod p(x), x^65536 mod p(x) */
  401. .octa 0x0000000026d0000000000000f9040000
  402. /* x^64576 mod p(x), x^64512 mod p(x) */
  403. .octa 0x00000000fe770000000000009c0a0000
  404. /* x^63552 mod p(x), x^63488 mod p(x) */
  405. .octa 0x000000002cba000000000000d1e70000
  406. /* x^62528 mod p(x), x^62464 mod p(x) */
  407. .octa 0x00000000f8bd0000000000005ac10000
  408. /* x^61504 mod p(x), x^61440 mod p(x) */
  409. .octa 0x000000007372000000000000d68d0000
  410. /* x^60480 mod p(x), x^60416 mod p(x) */
  411. .octa 0x00000000f37f00000000000089f60000
  412. /* x^59456 mod p(x), x^59392 mod p(x) */
  413. .octa 0x00000000078400000000000008a90000
  414. /* x^58432 mod p(x), x^58368 mod p(x) */
  415. .octa 0x00000000d3e400000000000042360000
  416. /* x^57408 mod p(x), x^57344 mod p(x) */
  417. .octa 0x00000000eba800000000000092d50000
  418. /* x^56384 mod p(x), x^56320 mod p(x) */
  419. .octa 0x00000000afbe000000000000b4d50000
  420. /* x^55360 mod p(x), x^55296 mod p(x) */
  421. .octa 0x00000000d8ca000000000000c9060000
  422. /* x^54336 mod p(x), x^54272 mod p(x) */
  423. .octa 0x00000000c2d00000000000008f4f0000
  424. /* x^53312 mod p(x), x^53248 mod p(x) */
  425. .octa 0x00000000373200000000000028690000
  426. /* x^52288 mod p(x), x^52224 mod p(x) */
  427. .octa 0x0000000046ae000000000000c3b30000
  428. /* x^51264 mod p(x), x^51200 mod p(x) */
  429. .octa 0x00000000b243000000000000f8700000
  430. /* x^50240 mod p(x), x^50176 mod p(x) */
  431. .octa 0x00000000f7f500000000000029eb0000
  432. /* x^49216 mod p(x), x^49152 mod p(x) */
  433. .octa 0x000000000c7e000000000000fe730000
  434. /* x^48192 mod p(x), x^48128 mod p(x) */
  435. .octa 0x00000000c38200000000000096000000
  436. /* x^47168 mod p(x), x^47104 mod p(x) */
  437. .octa 0x000000008956000000000000683c0000
  438. /* x^46144 mod p(x), x^46080 mod p(x) */
  439. .octa 0x00000000422d0000000000005f1e0000
  440. /* x^45120 mod p(x), x^45056 mod p(x) */
  441. .octa 0x00000000ac0f0000000000006f810000
  442. /* x^44096 mod p(x), x^44032 mod p(x) */
  443. .octa 0x00000000ce30000000000000031f0000
  444. /* x^43072 mod p(x), x^43008 mod p(x) */
  445. .octa 0x000000003d43000000000000455a0000
  446. /* x^42048 mod p(x), x^41984 mod p(x) */
  447. .octa 0x000000007ebe000000000000a6050000
  448. /* x^41024 mod p(x), x^40960 mod p(x) */
  449. .octa 0x00000000976e00000000000077eb0000
  450. /* x^40000 mod p(x), x^39936 mod p(x) */
  451. .octa 0x000000000872000000000000389c0000
  452. /* x^38976 mod p(x), x^38912 mod p(x) */
  453. .octa 0x000000008979000000000000c7b20000
  454. /* x^37952 mod p(x), x^37888 mod p(x) */
  455. .octa 0x000000005c1e0000000000001d870000
  456. /* x^36928 mod p(x), x^36864 mod p(x) */
  457. .octa 0x00000000aebb00000000000045810000
  458. /* x^35904 mod p(x), x^35840 mod p(x) */
  459. .octa 0x000000004f7e0000000000006d4a0000
  460. /* x^34880 mod p(x), x^34816 mod p(x) */
  461. .octa 0x00000000ea98000000000000b9200000
  462. /* x^33856 mod p(x), x^33792 mod p(x) */
  463. .octa 0x00000000f39600000000000022f20000
  464. /* x^32832 mod p(x), x^32768 mod p(x) */
  465. .octa 0x000000000bc500000000000041ca0000
  466. /* x^31808 mod p(x), x^31744 mod p(x) */
  467. .octa 0x00000000786400000000000078500000
  468. /* x^30784 mod p(x), x^30720 mod p(x) */
  469. .octa 0x00000000be970000000000009e7e0000
  470. /* x^29760 mod p(x), x^29696 mod p(x) */
  471. .octa 0x00000000dd6d000000000000a53c0000
  472. /* x^28736 mod p(x), x^28672 mod p(x) */
  473. .octa 0x000000004c3f00000000000039340000
  474. /* x^27712 mod p(x), x^27648 mod p(x) */
  475. .octa 0x0000000093a4000000000000b58e0000
  476. /* x^26688 mod p(x), x^26624 mod p(x) */
  477. .octa 0x0000000050fb00000000000062d40000
  478. /* x^25664 mod p(x), x^25600 mod p(x) */
  479. .octa 0x00000000f505000000000000a26f0000
  480. /* x^24640 mod p(x), x^24576 mod p(x) */
  481. .octa 0x0000000064f900000000000065e60000
  482. /* x^23616 mod p(x), x^23552 mod p(x) */
  483. .octa 0x00000000e8c2000000000000aad90000
  484. /* x^22592 mod p(x), x^22528 mod p(x) */
  485. .octa 0x00000000720b000000000000a3b00000
  486. /* x^21568 mod p(x), x^21504 mod p(x) */
  487. .octa 0x00000000e992000000000000d2680000
  488. /* x^20544 mod p(x), x^20480 mod p(x) */
  489. .octa 0x000000009132000000000000cf4c0000
  490. /* x^19520 mod p(x), x^19456 mod p(x) */
  491. .octa 0x00000000608a00000000000076610000
  492. /* x^18496 mod p(x), x^18432 mod p(x) */
  493. .octa 0x000000009948000000000000fb9f0000
  494. /* x^17472 mod p(x), x^17408 mod p(x) */
  495. .octa 0x00000000173000000000000003770000
  496. /* x^16448 mod p(x), x^16384 mod p(x) */
  497. .octa 0x000000006fe300000000000004880000
  498. /* x^15424 mod p(x), x^15360 mod p(x) */
  499. .octa 0x00000000e15300000000000056a70000
  500. /* x^14400 mod p(x), x^14336 mod p(x) */
  501. .octa 0x0000000092d60000000000009dfd0000
  502. /* x^13376 mod p(x), x^13312 mod p(x) */
  503. .octa 0x0000000002fd00000000000074c80000
  504. /* x^12352 mod p(x), x^12288 mod p(x) */
  505. .octa 0x00000000c78b000000000000a3ec0000
  506. /* x^11328 mod p(x), x^11264 mod p(x) */
  507. .octa 0x000000009262000000000000b3530000
  508. /* x^10304 mod p(x), x^10240 mod p(x) */
  509. .octa 0x0000000084f200000000000047bf0000
  510. /* x^9280 mod p(x), x^9216 mod p(x) */
  511. .octa 0x0000000067ee000000000000e97c0000
  512. /* x^8256 mod p(x), x^8192 mod p(x) */
  513. .octa 0x00000000535b00000000000091e10000
  514. /* x^7232 mod p(x), x^7168 mod p(x) */
  515. .octa 0x000000007ebb00000000000055060000
  516. /* x^6208 mod p(x), x^6144 mod p(x) */
  517. .octa 0x00000000c6a1000000000000fd360000
  518. /* x^5184 mod p(x), x^5120 mod p(x) */
  519. .octa 0x000000001be500000000000055860000
  520. /* x^4160 mod p(x), x^4096 mod p(x) */
  521. .octa 0x00000000ae0e0000000000005bd00000
  522. /* x^3136 mod p(x), x^3072 mod p(x) */
  523. .octa 0x0000000022040000000000008db20000
  524. /* x^2112 mod p(x), x^2048 mod p(x) */
  525. .octa 0x00000000c9eb000000000000efe20000
  526. /* x^1088 mod p(x), x^1024 mod p(x) */
  527. .octa 0x0000000039b400000000000051d10000
  528. .short_constants:
  529. /* Reduce final 1024-2048 bits to 64 bits, shifting 32 bits to include the trailing 32 bits of zeros */
  530. /* x^2048 mod p(x), x^2016 mod p(x), x^1984 mod p(x), x^1952 mod p(x) */
  531. .octa 0xefe20000dccf00009440000033590000
  532. /* x^1920 mod p(x), x^1888 mod p(x), x^1856 mod p(x), x^1824 mod p(x) */
  533. .octa 0xee6300002f3f000062180000e0ed0000
  534. /* x^1792 mod p(x), x^1760 mod p(x), x^1728 mod p(x), x^1696 mod p(x) */
  535. .octa 0xcf5f000017ef0000ccbe000023d30000
  536. /* x^1664 mod p(x), x^1632 mod p(x), x^1600 mod p(x), x^1568 mod p(x) */
  537. .octa 0x6d0c0000a30e00000920000042630000
  538. /* x^1536 mod p(x), x^1504 mod p(x), x^1472 mod p(x), x^1440 mod p(x) */
  539. .octa 0x21d30000932b0000a7a00000efcc0000
  540. /* x^1408 mod p(x), x^1376 mod p(x), x^1344 mod p(x), x^1312 mod p(x) */
  541. .octa 0x10be00000b310000666f00000d1c0000
  542. /* x^1280 mod p(x), x^1248 mod p(x), x^1216 mod p(x), x^1184 mod p(x) */
  543. .octa 0x1f240000ce9e0000caad0000589e0000
  544. /* x^1152 mod p(x), x^1120 mod p(x), x^1088 mod p(x), x^1056 mod p(x) */
  545. .octa 0x29610000d02b000039b400007cf50000
  546. /* x^1024 mod p(x), x^992 mod p(x), x^960 mod p(x), x^928 mod p(x) */
  547. .octa 0x51d100009d9d00003c0e0000bfd60000
  548. /* x^896 mod p(x), x^864 mod p(x), x^832 mod p(x), x^800 mod p(x) */
  549. .octa 0xda390000ceae000013830000713c0000
  550. /* x^768 mod p(x), x^736 mod p(x), x^704 mod p(x), x^672 mod p(x) */
  551. .octa 0xb67800001e16000085c0000080a60000
  552. /* x^640 mod p(x), x^608 mod p(x), x^576 mod p(x), x^544 mod p(x) */
  553. .octa 0x0db40000f7f90000371d0000e6580000
  554. /* x^512 mod p(x), x^480 mod p(x), x^448 mod p(x), x^416 mod p(x) */
  555. .octa 0x87e70000044c0000aadb0000a4970000
  556. /* x^384 mod p(x), x^352 mod p(x), x^320 mod p(x), x^288 mod p(x) */
  557. .octa 0x1f990000ad180000d8b30000e7b50000
  558. /* x^256 mod p(x), x^224 mod p(x), x^192 mod p(x), x^160 mod p(x) */
  559. .octa 0xbe6c00006ee300004c1a000006df0000
  560. /* x^128 mod p(x), x^96 mod p(x), x^64 mod p(x), x^32 mod p(x) */
  561. .octa 0xfb0b00002d560000136800008bb70000
  562. .barrett_constants:
  563. /* Barrett constant m - (4^32)/n */
  564. .octa 0x000000000000000000000001f65a57f8 /* x^64 div p(x) */
  565. /* Barrett constant n */
  566. .octa 0x0000000000000000000000018bb70000
  567. #define CRC_FUNCTION_NAME __crct10dif_vpmsum
  568. #include "crc32-vpmsum_core.S"