sleeping_kangaroo12 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (284) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +127 -0
  3. data/ext/Rakefile +73 -0
  4. data/ext/binding/sleeping_kangaroo12.c +39 -0
  5. data/ext/config/xkcp.build +17 -0
  6. data/ext/xkcp/LICENSE +1 -0
  7. data/ext/xkcp/Makefile +15 -0
  8. data/ext/xkcp/Makefile.build +200 -0
  9. data/ext/xkcp/README.markdown +296 -0
  10. data/ext/xkcp/lib/HighLevel.build +143 -0
  11. data/ext/xkcp/lib/LowLevel.build +757 -0
  12. data/ext/xkcp/lib/common/align.h +33 -0
  13. data/ext/xkcp/lib/common/brg_endian.h +143 -0
  14. data/ext/xkcp/lib/high/KangarooTwelve/KangarooTwelve.c +301 -0
  15. data/ext/xkcp/lib/high/KangarooTwelve/KangarooTwelve.h +97 -0
  16. data/ext/xkcp/lib/high/Keccak/FIPS202/KeccakHash.c +81 -0
  17. data/ext/xkcp/lib/high/Keccak/FIPS202/KeccakHash.h +125 -0
  18. data/ext/xkcp/lib/high/Keccak/FIPS202/SimpleFIPS202.c +48 -0
  19. data/ext/xkcp/lib/high/Keccak/FIPS202/SimpleFIPS202.h +79 -0
  20. data/ext/xkcp/lib/high/Keccak/KeccakDuplex.c +81 -0
  21. data/ext/xkcp/lib/high/Keccak/KeccakDuplex.h +73 -0
  22. data/ext/xkcp/lib/high/Keccak/KeccakDuplex.inc +195 -0
  23. data/ext/xkcp/lib/high/Keccak/KeccakSponge.c +111 -0
  24. data/ext/xkcp/lib/high/Keccak/KeccakSponge.h +76 -0
  25. data/ext/xkcp/lib/high/Keccak/KeccakSponge.inc +314 -0
  26. data/ext/xkcp/lib/high/Keccak/PRG/KeccakPRG.c +61 -0
  27. data/ext/xkcp/lib/high/Keccak/PRG/KeccakPRG.h +67 -0
  28. data/ext/xkcp/lib/high/Keccak/PRG/KeccakPRG.inc +128 -0
  29. data/ext/xkcp/lib/high/Keccak/SP800-185/SP800-185.c +93 -0
  30. data/ext/xkcp/lib/high/Keccak/SP800-185/SP800-185.h +599 -0
  31. data/ext/xkcp/lib/high/Keccak/SP800-185/SP800-185.inc +573 -0
  32. data/ext/xkcp/lib/high/Ketje/Ketjev2.c +87 -0
  33. data/ext/xkcp/lib/high/Ketje/Ketjev2.h +88 -0
  34. data/ext/xkcp/lib/high/Ketje/Ketjev2.inc +274 -0
  35. data/ext/xkcp/lib/high/Keyak/Keyakv2.c +132 -0
  36. data/ext/xkcp/lib/high/Keyak/Keyakv2.h +217 -0
  37. data/ext/xkcp/lib/high/Keyak/Keyakv2.inc +81 -0
  38. data/ext/xkcp/lib/high/Keyak/Motorist.inc +953 -0
  39. data/ext/xkcp/lib/high/Kravatte/Kravatte.c +533 -0
  40. data/ext/xkcp/lib/high/Kravatte/Kravatte.h +115 -0
  41. data/ext/xkcp/lib/high/Kravatte/KravatteModes.c +557 -0
  42. data/ext/xkcp/lib/high/Kravatte/KravatteModes.h +247 -0
  43. data/ext/xkcp/lib/high/Xoodyak/Cyclist.h +66 -0
  44. data/ext/xkcp/lib/high/Xoodyak/Cyclist.inc +336 -0
  45. data/ext/xkcp/lib/high/Xoodyak/Xoodyak-parameters.h +26 -0
  46. data/ext/xkcp/lib/high/Xoodyak/Xoodyak.c +55 -0
  47. data/ext/xkcp/lib/high/Xoodyak/Xoodyak.h +35 -0
  48. data/ext/xkcp/lib/high/Xoofff/Xoofff.c +634 -0
  49. data/ext/xkcp/lib/high/Xoofff/Xoofff.h +147 -0
  50. data/ext/xkcp/lib/high/Xoofff/XoofffModes.c +483 -0
  51. data/ext/xkcp/lib/high/Xoofff/XoofffModes.h +241 -0
  52. data/ext/xkcp/lib/high/common/Phases.h +25 -0
  53. data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-SnP.h +41 -0
  54. data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-inplace-32bi-armv6m-le-armcc.s +1666 -0
  55. data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-inplace-32bi-armv6m-le-gcc.s +1655 -0
  56. data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-inplace-32bi-armv7a-le-armcc.s +1268 -0
  57. data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-inplace-32bi-armv7a-le-gcc.s +1264 -0
  58. data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-inplace-32bi-armv7m-le-armcc.s +1178 -0
  59. data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-inplace-32bi-armv7m-le-gcc.s +1175 -0
  60. data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-u1-32bi-armv6m-le-armcc.s +1338 -0
  61. data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-u1-32bi-armv6m-le-gcc.s +1336 -0
  62. data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-u2-32bi-armv6m-le-armcc.s +1343 -0
  63. data/ext/xkcp/lib/low/KeccakP-1600/ARM/KeccakP-1600-u2-32bi-armv6m-le-gcc.s +1339 -0
  64. data/ext/xkcp/lib/low/KeccakP-1600/ARMv7A-NEON/KeccakP-1600-SnP.h +42 -0
  65. data/ext/xkcp/lib/low/KeccakP-1600/ARMv7A-NEON/KeccakP-1600-armv7a-le-neon-armcc.s +823 -0
  66. data/ext/xkcp/lib/low/KeccakP-1600/ARMv7A-NEON/KeccakP-1600-armv7a-le-neon-gcc.s +831 -0
  67. data/ext/xkcp/lib/low/KeccakP-1600/ARMv8A/KeccakP-1600-SnP.h +31 -0
  68. data/ext/xkcp/lib/low/KeccakP-1600/ARMv8A/KeccakP-1600-armv8a-neon.s +540 -0
  69. data/ext/xkcp/lib/low/KeccakP-1600/AVR8/KeccakP-1600-SnP.h +42 -0
  70. data/ext/xkcp/lib/low/KeccakP-1600/AVR8/KeccakP-1600-avr8-compact.s +733 -0
  71. data/ext/xkcp/lib/low/KeccakP-1600/AVR8/KeccakP-1600-avr8-fast.s +1121 -0
  72. data/ext/xkcp/lib/low/KeccakP-1600/AVX2/KeccakP-1600-AVX2.s +1100 -0
  73. data/ext/xkcp/lib/low/KeccakP-1600/AVX2/KeccakP-1600-SnP.h +52 -0
  74. data/ext/xkcp/lib/low/KeccakP-1600/AVX512/C/KeccakP-1600-AVX512.c +623 -0
  75. data/ext/xkcp/lib/low/KeccakP-1600/AVX512/C/KeccakP-1600-SnP.h +47 -0
  76. data/ext/xkcp/lib/low/KeccakP-1600/AVX512/C/u12/KeccakP-1600-AVX512-config.h +6 -0
  77. data/ext/xkcp/lib/low/KeccakP-1600/AVX512/C/u6/KeccakP-1600-AVX512-config.h +6 -0
  78. data/ext/xkcp/lib/low/KeccakP-1600/AVX512/C/ua/KeccakP-1600-AVX512-config.h +6 -0
  79. data/ext/xkcp/lib/low/KeccakP-1600/AVX512/KeccakP-1600-AVX512.s +1031 -0
  80. data/ext/xkcp/lib/low/KeccakP-1600/AVX512/KeccakP-1600-SnP.h +53 -0
  81. data/ext/xkcp/lib/low/KeccakP-1600/XOP/KeccakP-1600-SnP.h +44 -0
  82. data/ext/xkcp/lib/low/KeccakP-1600/XOP/KeccakP-1600-XOP.c +476 -0
  83. data/ext/xkcp/lib/low/KeccakP-1600/XOP/u6/KeccakP-1600-XOP-config.h +6 -0
  84. data/ext/xkcp/lib/low/KeccakP-1600/XOP/ua/KeccakP-1600-XOP-config.h +6 -0
  85. data/ext/xkcp/lib/low/KeccakP-1600/common/KeccakP-1600-64.macros +748 -0
  86. data/ext/xkcp/lib/low/KeccakP-1600/common/KeccakP-1600-unrolling.macros +305 -0
  87. data/ext/xkcp/lib/low/KeccakP-1600/compact/KeccakP-1600-SnP.h +40 -0
  88. data/ext/xkcp/lib/low/KeccakP-1600/compact/KeccakP-1600-compact64.c +420 -0
  89. data/ext/xkcp/lib/low/KeccakP-1600/plain-32bits-inplace/KeccakP-1600-SnP.h +43 -0
  90. data/ext/xkcp/lib/low/KeccakP-1600/plain-32bits-inplace/KeccakP-1600-inplace32BI.c +1163 -0
  91. data/ext/xkcp/lib/low/KeccakP-1600/plain-64bits/KeccakP-1600-SnP.h +54 -0
  92. data/ext/xkcp/lib/low/KeccakP-1600/plain-64bits/KeccakP-1600-opt64.c +565 -0
  93. data/ext/xkcp/lib/low/KeccakP-1600/plain-64bits/lcu6/KeccakP-1600-opt64-config.h +7 -0
  94. data/ext/xkcp/lib/low/KeccakP-1600/plain-64bits/lcua/KeccakP-1600-opt64-config.h +7 -0
  95. data/ext/xkcp/lib/low/KeccakP-1600/plain-64bits/lcua-shld/KeccakP-1600-opt64-config.h +8 -0
  96. data/ext/xkcp/lib/low/KeccakP-1600/plain-64bits/u6/KeccakP-1600-opt64-config.h +6 -0
  97. data/ext/xkcp/lib/low/KeccakP-1600/plain-64bits/ua/KeccakP-1600-opt64-config.h +6 -0
  98. data/ext/xkcp/lib/low/KeccakP-1600/ref-32bits/KeccakP-1600-SnP.h +44 -0
  99. data/ext/xkcp/lib/low/KeccakP-1600/ref-32bits/KeccakP-1600-reference.h +23 -0
  100. data/ext/xkcp/lib/low/KeccakP-1600/ref-32bits/KeccakP-1600-reference32BI.c +625 -0
  101. data/ext/xkcp/lib/low/KeccakP-1600/ref-64bits/KeccakP-1600-SnP.h +44 -0
  102. data/ext/xkcp/lib/low/KeccakP-1600/ref-64bits/KeccakP-1600-reference.c +440 -0
  103. data/ext/xkcp/lib/low/KeccakP-1600/ref-64bits/KeccakP-1600-reference.h +23 -0
  104. data/ext/xkcp/lib/low/KeccakP-1600/x86-64/KeccakP-1600-SnP.h +42 -0
  105. data/ext/xkcp/lib/low/KeccakP-1600/x86-64/KeccakP-1600-x86-64-gas.s +1196 -0
  106. data/ext/xkcp/lib/low/KeccakP-1600/x86-64/KeccakP-1600-x86-64-gas_Apple.s +1124 -0
  107. data/ext/xkcp/lib/low/KeccakP-1600/x86-64/KeccakP-1600-x86-64-shld-gas.s +1196 -0
  108. data/ext/xkcp/lib/low/KeccakP-1600-times2/ARMv7A-NEON/KeccakP-1600-inplace-pl2-armv7a-neon-le-armcc.s +1392 -0
  109. data/ext/xkcp/lib/low/KeccakP-1600-times2/ARMv7A-NEON/KeccakP-1600-inplace-pl2-armv7a-neon-le-gcc.s +1394 -0
  110. data/ext/xkcp/lib/low/KeccakP-1600-times2/ARMv7A-NEON/KeccakP-1600-times2-SnP.h +42 -0
  111. data/ext/xkcp/lib/low/KeccakP-1600-times2/AVX512/AVX512u12/SIMD512-2-config.h +7 -0
  112. data/ext/xkcp/lib/low/KeccakP-1600-times2/AVX512/AVX512u4/SIMD512-2-config.h +7 -0
  113. data/ext/xkcp/lib/low/KeccakP-1600-times2/AVX512/AVX512ufull/SIMD512-2-config.h +7 -0
  114. data/ext/xkcp/lib/low/KeccakP-1600-times2/AVX512/KeccakP-1600-times2-SIMD512.c +850 -0
  115. data/ext/xkcp/lib/low/KeccakP-1600-times2/AVX512/KeccakP-1600-times2-SnP.h +51 -0
  116. data/ext/xkcp/lib/low/KeccakP-1600-times2/SIMD128/KeccakP-1600-times2-SIMD128.c +957 -0
  117. data/ext/xkcp/lib/low/KeccakP-1600-times2/SIMD128/KeccakP-1600-times2-SnP.h +49 -0
  118. data/ext/xkcp/lib/low/KeccakP-1600-times2/SIMD128/SSSE3-u2/SIMD128-config.h +8 -0
  119. data/ext/xkcp/lib/low/KeccakP-1600-times2/SIMD128/SSSE3-ua/SIMD128-config.h +8 -0
  120. data/ext/xkcp/lib/low/KeccakP-1600-times2/SIMD128/XOP-u2/SIMD128-config.h +9 -0
  121. data/ext/xkcp/lib/low/KeccakP-1600-times2/SIMD128/XOP-ua/SIMD128-config.h +9 -0
  122. data/ext/xkcp/lib/low/KeccakP-1600-times2/fallback-on1/KeccakP-1600-times2-SnP.h +45 -0
  123. data/ext/xkcp/lib/low/KeccakP-1600-times2/fallback-on1/KeccakP-1600-times2-on1.c +37 -0
  124. data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX2/KeccakP-1600-times4-SIMD256.c +1321 -0
  125. data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX2/KeccakP-1600-times4-SnP.h +55 -0
  126. data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX2/u12/SIMD256-config.h +7 -0
  127. data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX2/u6/SIMD256-config.h +7 -0
  128. data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX2/ua/SIMD256-config.h +7 -0
  129. data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX512/AVX512u12/SIMD512-4-config.h +7 -0
  130. data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX512/AVX512u4/SIMD512-4-config.h +7 -0
  131. data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX512/AVX512ufull/SIMD512-4-config.h +7 -0
  132. data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX512/KeccakP-1600-times4-SIMD512.c +881 -0
  133. data/ext/xkcp/lib/low/KeccakP-1600-times4/AVX512/KeccakP-1600-times4-SnP.h +51 -0
  134. data/ext/xkcp/lib/low/KeccakP-1600-times4/fallback-on1/KeccakP-1600-times4-SnP.h +45 -0
  135. data/ext/xkcp/lib/low/KeccakP-1600-times4/fallback-on1/KeccakP-1600-times4-on1.c +37 -0
  136. data/ext/xkcp/lib/low/KeccakP-1600-times4/fallback-on2/KeccakP-1600-times4-SnP.h +45 -0
  137. data/ext/xkcp/lib/low/KeccakP-1600-times4/fallback-on2/KeccakP-1600-times4-on2.c +38 -0
  138. data/ext/xkcp/lib/low/KeccakP-1600-times8/AVX512/KeccakP-1600-times8-SIMD512.c +1615 -0
  139. data/ext/xkcp/lib/low/KeccakP-1600-times8/AVX512/KeccakP-1600-times8-SnP.h +57 -0
  140. data/ext/xkcp/lib/low/KeccakP-1600-times8/AVX512/u12/SIMD512-config.h +7 -0
  141. data/ext/xkcp/lib/low/KeccakP-1600-times8/AVX512/u4/SIMD512-config.h +7 -0
  142. data/ext/xkcp/lib/low/KeccakP-1600-times8/AVX512/ua/SIMD512-config.h +7 -0
  143. data/ext/xkcp/lib/low/KeccakP-1600-times8/fallback-on1/KeccakP-1600-times8-SnP.h +45 -0
  144. data/ext/xkcp/lib/low/KeccakP-1600-times8/fallback-on1/KeccakP-1600-times8-on1.c +37 -0
  145. data/ext/xkcp/lib/low/KeccakP-1600-times8/fallback-on2/KeccakP-1600-times8-SnP.h +45 -0
  146. data/ext/xkcp/lib/low/KeccakP-1600-times8/fallback-on2/KeccakP-1600-times8-on2.c +38 -0
  147. data/ext/xkcp/lib/low/KeccakP-1600-times8/fallback-on4/KeccakP-1600-times8-SnP.h +45 -0
  148. data/ext/xkcp/lib/low/KeccakP-1600-times8/fallback-on4/KeccakP-1600-times8-on4.c +38 -0
  149. data/ext/xkcp/lib/low/KeccakP-200/ARM/KeccakP-200-SnP.h +41 -0
  150. data/ext/xkcp/lib/low/KeccakP-200/ARM/KeccakP-200-armv6m-le-armcc.s +442 -0
  151. data/ext/xkcp/lib/low/KeccakP-200/ARM/KeccakP-200-armv6m-le-gcc.s +446 -0
  152. data/ext/xkcp/lib/low/KeccakP-200/ARM/KeccakP-200-armv7m-le-armcc.s +419 -0
  153. data/ext/xkcp/lib/low/KeccakP-200/ARM/KeccakP-200-armv7m-le-gcc.s +427 -0
  154. data/ext/xkcp/lib/low/KeccakP-200/AVR8/KeccakP-200-SnP.h +41 -0
  155. data/ext/xkcp/lib/low/KeccakP-200/AVR8/KeccakP-200-avr8-fast.s +647 -0
  156. data/ext/xkcp/lib/low/KeccakP-200/compact/KeccakP-200-SnP.h +39 -0
  157. data/ext/xkcp/lib/low/KeccakP-200/compact/KeccakP-200-compact.c +190 -0
  158. data/ext/xkcp/lib/low/KeccakP-200/ref/KeccakP-200-SnP.h +43 -0
  159. data/ext/xkcp/lib/low/KeccakP-200/ref/KeccakP-200-reference.c +412 -0
  160. data/ext/xkcp/lib/low/KeccakP-200/ref/KeccakP-200-reference.h +23 -0
  161. data/ext/xkcp/lib/low/KeccakP-400/ARM/KeccakP-400-SnP.h +41 -0
  162. data/ext/xkcp/lib/low/KeccakP-400/ARM/KeccakP-400-armv6m-le-armcc.s +454 -0
  163. data/ext/xkcp/lib/low/KeccakP-400/ARM/KeccakP-400-armv6m-le-gcc.s +458 -0
  164. data/ext/xkcp/lib/low/KeccakP-400/ARM/KeccakP-400-armv7m-le-armcc.s +455 -0
  165. data/ext/xkcp/lib/low/KeccakP-400/ARM/KeccakP-400-armv7m-le-gcc.s +458 -0
  166. data/ext/xkcp/lib/low/KeccakP-400/AVR8/KeccakP-400-SnP.h +41 -0
  167. data/ext/xkcp/lib/low/KeccakP-400/AVR8/KeccakP-400-avr8-fast.s +728 -0
  168. data/ext/xkcp/lib/low/KeccakP-400/ref/KeccakP-400-SnP.h +43 -0
  169. data/ext/xkcp/lib/low/KeccakP-400/ref/KeccakP-400-reference.c +414 -0
  170. data/ext/xkcp/lib/low/KeccakP-400/ref/KeccakP-400-reference.h +23 -0
  171. data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-SnP.h +42 -0
  172. data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-u1-armv6m-le-armcc.s +527 -0
  173. data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-u1-armv6m-le-gcc.s +533 -0
  174. data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-u2-armv6m-le-armcc.s +528 -0
  175. data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-u2-armv6m-le-gcc.s +534 -0
  176. data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-u2-armv7a-le-armcc.s +521 -0
  177. data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-u2-armv7a-le-gcc.s +527 -0
  178. data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-u2-armv7m-le-armcc.s +517 -0
  179. data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-u2-armv7m-le-gcc.s +523 -0
  180. data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-uf-armv7m-le-armcc.s +550 -0
  181. data/ext/xkcp/lib/low/KeccakP-800/ARM/KeccakP-800-uf-armv7m-le-gcc.s +556 -0
  182. data/ext/xkcp/lib/low/KeccakP-800/ARMv8A/KeccakP-800-SnP.h +32 -0
  183. data/ext/xkcp/lib/low/KeccakP-800/ARMv8A/KeccakP-800-armv8a-neon.s +432 -0
  184. data/ext/xkcp/lib/low/KeccakP-800/AVR8/KeccakP-800-SnP.h +42 -0
  185. data/ext/xkcp/lib/low/KeccakP-800/AVR8/KeccakP-800-avr8-fast.s +929 -0
  186. data/ext/xkcp/lib/low/KeccakP-800/compact/KeccakP-800-SnP.h +40 -0
  187. data/ext/xkcp/lib/low/KeccakP-800/compact/KeccakP-800-compact.c +244 -0
  188. data/ext/xkcp/lib/low/KeccakP-800/plain/KeccakP-800-SnP.h +46 -0
  189. data/ext/xkcp/lib/low/KeccakP-800/plain/KeccakP-800-opt32-bis.macros +184 -0
  190. data/ext/xkcp/lib/low/KeccakP-800/plain/KeccakP-800-opt32.c +454 -0
  191. data/ext/xkcp/lib/low/KeccakP-800/plain/KeccakP-800-opt32.macros +459 -0
  192. data/ext/xkcp/lib/low/KeccakP-800/plain/KeccakP-800-unrolling-bis.macros +83 -0
  193. data/ext/xkcp/lib/low/KeccakP-800/plain/KeccakP-800-unrolling.macros +88 -0
  194. data/ext/xkcp/lib/low/KeccakP-800/plain/lcu2/KeccakP-800-opt32-config.h +7 -0
  195. data/ext/xkcp/lib/low/KeccakP-800/plain/lcua/KeccakP-800-opt32-config.h +7 -0
  196. data/ext/xkcp/lib/low/KeccakP-800/plain/u2/KeccakP-800-opt32-config.h +7 -0
  197. data/ext/xkcp/lib/low/KeccakP-800/plain/ua/KeccakP-800-opt32-config.h +7 -0
  198. data/ext/xkcp/lib/low/KeccakP-800/ref/KeccakP-800-SnP.h +44 -0
  199. data/ext/xkcp/lib/low/KeccakP-800/ref/KeccakP-800-reference.c +437 -0
  200. data/ext/xkcp/lib/low/KeccakP-800/ref/KeccakP-800-reference.h +23 -0
  201. data/ext/xkcp/lib/low/Ketje/OptimizedAsmARM/Ket.h +57 -0
  202. data/ext/xkcp/lib/low/Ketje/OptimizedAsmARM/KetjeJr-armv7m-le-armcc.s +475 -0
  203. data/ext/xkcp/lib/low/Ketje/OptimizedAsmARM/KetjeJr-armv7m-le-gcc.s +480 -0
  204. data/ext/xkcp/lib/low/Ketje/OptimizedAsmARM/KetjeSr-armv7m-le-armcc.s +590 -0
  205. data/ext/xkcp/lib/low/Ketje/OptimizedAsmARM/KetjeSr-armv7m-le-gcc.s +590 -0
  206. data/ext/xkcp/lib/low/Ketje/OptimizedLE/Ket.c +126 -0
  207. data/ext/xkcp/lib/low/Ketje/OptimizedLE/Ket.h +68 -0
  208. data/ext/xkcp/lib/low/Ketje/OptimizedLE/Ket.inc +174 -0
  209. data/ext/xkcp/lib/low/Ketje/SnP-compliant/Ket.c +80 -0
  210. data/ext/xkcp/lib/low/Ketje/SnP-compliant/Ket.h +68 -0
  211. data/ext/xkcp/lib/low/Ketje/SnP-compliant/Ket.inc +142 -0
  212. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodoo-SnP.h +55 -0
  213. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodoo-u1-armv6m-le-armcc.s +1086 -0
  214. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodoo-u1-armv6m-le-gcc.s +1092 -0
  215. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodoo-uf-armv6-le-armcc.s +721 -0
  216. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodoo-uf-armv6-le-gcc.s +726 -0
  217. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodoo-uf-armv7m-le-armcc.s +723 -0
  218. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodoo-uf-armv7m-le-gcc.s +729 -0
  219. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodyak-u1-armv6m-le-armcc.s +1164 -0
  220. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodyak-u1-armv6m-le-gcc.s +1165 -0
  221. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodyak-uf-armv6-le-armcc.s +562 -0
  222. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodyak-uf-armv6-le-gcc.s +563 -0
  223. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodyak-uf-armv7m-le-armcc.s +563 -0
  224. data/ext/xkcp/lib/low/Xoodoo/ARM/Xoodyak-uf-armv7m-le-gcc.s +565 -0
  225. data/ext/xkcp/lib/low/Xoodoo/ARMv7A-NEON/Xoodoo-SnP.h +55 -0
  226. data/ext/xkcp/lib/low/Xoodoo/ARMv7A-NEON/Xoodoo-uf-armv7a-neon-le-armcc.s +476 -0
  227. data/ext/xkcp/lib/low/Xoodoo/ARMv7A-NEON/Xoodoo-uf-armv7a-neon-le-gcc.s +485 -0
  228. data/ext/xkcp/lib/low/Xoodoo/ARMv7A-NEON/Xoodyak-uf-armv7a-neon-le-armcc.s +362 -0
  229. data/ext/xkcp/lib/low/Xoodoo/ARMv7A-NEON/Xoodyak-uf-armv7a-neon-le-gcc.s +367 -0
  230. data/ext/xkcp/lib/low/Xoodoo/AVR8/Xoodoo-SnP.h +43 -0
  231. data/ext/xkcp/lib/low/Xoodoo/AVR8/Xoodoo-avr8-u1.s +1341 -0
  232. data/ext/xkcp/lib/low/Xoodoo/AVX512/Xoodoo-SIMD512.c +581 -0
  233. data/ext/xkcp/lib/low/Xoodoo/AVX512/Xoodoo-SnP.h +58 -0
  234. data/ext/xkcp/lib/low/Xoodoo/AVX512/Xoodyak-full-block-SIMD512.c +332 -0
  235. data/ext/xkcp/lib/low/Xoodoo/SSE2/Xoodoo-SIMD128.c +329 -0
  236. data/ext/xkcp/lib/low/Xoodoo/SSE2/Xoodoo-SnP.h +53 -0
  237. data/ext/xkcp/lib/low/Xoodoo/SSE2/Xoodyak-full-block-SIMD128.c +355 -0
  238. data/ext/xkcp/lib/low/Xoodoo/Xoodoo.h +79 -0
  239. data/ext/xkcp/lib/low/Xoodoo/plain/Xoodoo-SnP.h +56 -0
  240. data/ext/xkcp/lib/low/Xoodoo/plain/Xoodoo-optimized.c +399 -0
  241. data/ext/xkcp/lib/low/Xoodoo/plain/Xoodyak-full-blocks.c +127 -0
  242. data/ext/xkcp/lib/low/Xoodoo/ref/Xoodoo-SnP.h +43 -0
  243. data/ext/xkcp/lib/low/Xoodoo/ref/Xoodoo-reference.c +253 -0
  244. data/ext/xkcp/lib/low/Xoodoo-times16/AVX512/Xoodoo-times16-SIMD512.c +1044 -0
  245. data/ext/xkcp/lib/low/Xoodoo-times16/AVX512/Xoodoo-times16-SnP.h +49 -0
  246. data/ext/xkcp/lib/low/Xoodoo-times16/fallback-on1/Xoodoo-times16-SnP.h +45 -0
  247. data/ext/xkcp/lib/low/Xoodoo-times16/fallback-on1/Xoodoo-times16-on1.c +37 -0
  248. data/ext/xkcp/lib/low/Xoodoo-times4/ARMv7A-NEON/Xoodoo-times4-ARMv7A.s +1587 -0
  249. data/ext/xkcp/lib/low/Xoodoo-times4/ARMv7A-NEON/Xoodoo-times4-SnP.h +48 -0
  250. data/ext/xkcp/lib/low/Xoodoo-times4/AVX512/Xoodoo-times4-SIMD512.c +1202 -0
  251. data/ext/xkcp/lib/low/Xoodoo-times4/AVX512/Xoodoo-times4-SnP.h +48 -0
  252. data/ext/xkcp/lib/low/Xoodoo-times4/SSSE3/Xoodoo-times4-SIMD128.c +484 -0
  253. data/ext/xkcp/lib/low/Xoodoo-times4/SSSE3/Xoodoo-times4-SnP.h +44 -0
  254. data/ext/xkcp/lib/low/Xoodoo-times4/fallback-on1/Xoodoo-times4-SnP.h +45 -0
  255. data/ext/xkcp/lib/low/Xoodoo-times4/fallback-on1/Xoodoo-times4-on1.c +37 -0
  256. data/ext/xkcp/lib/low/Xoodoo-times8/AVX2/Xoodoo-times8-SIMD256.c +939 -0
  257. data/ext/xkcp/lib/low/Xoodoo-times8/AVX2/Xoodoo-times8-SnP.h +49 -0
  258. data/ext/xkcp/lib/low/Xoodoo-times8/AVX512/Xoodoo-times8-SIMD512.c +1216 -0
  259. data/ext/xkcp/lib/low/Xoodoo-times8/AVX512/Xoodoo-times8-SnP.h +48 -0
  260. data/ext/xkcp/lib/low/Xoodoo-times8/fallback-on1/Xoodoo-times8-SnP.h +45 -0
  261. data/ext/xkcp/lib/low/Xoodoo-times8/fallback-on1/Xoodoo-times8-on1.c +37 -0
  262. data/ext/xkcp/lib/low/common/PlSnP-Fallback.inc +290 -0
  263. data/ext/xkcp/lib/low/common/SnP-Relaned.h +141 -0
  264. data/ext/xkcp/support/Build/ExpandProducts.xsl +79 -0
  265. data/ext/xkcp/support/Build/ToGlobalMakefile.xsl +206 -0
  266. data/ext/xkcp/support/Build/ToOneTarget.xsl +89 -0
  267. data/ext/xkcp/support/Build/ToTargetConfigFile.xsl +37 -0
  268. data/ext/xkcp/support/Build/ToTargetMakefile.xsl +298 -0
  269. data/ext/xkcp/support/Build/ToVCXProj.xsl +198 -0
  270. data/ext/xkcp/support/Kernel-PMU/Kernel-pmu.md +133 -0
  271. data/ext/xkcp/support/Kernel-PMU/Makefile +8 -0
  272. data/ext/xkcp/support/Kernel-PMU/enable_arm_pmu.c +129 -0
  273. data/ext/xkcp/support/Kernel-PMU/load-module +1 -0
  274. data/ext/xkcp/util/KeccakSum/KeccakSum.c +394 -0
  275. data/ext/xkcp/util/KeccakSum/base64.c +86 -0
  276. data/ext/xkcp/util/KeccakSum/base64.h +12 -0
  277. data/lib/sleeping_kangaroo12/binding.rb +15 -0
  278. data/lib/sleeping_kangaroo12/build/loader.rb +40 -0
  279. data/lib/sleeping_kangaroo12/build/platform.rb +37 -0
  280. data/lib/sleeping_kangaroo12/build.rb +4 -0
  281. data/lib/sleeping_kangaroo12/digest.rb +103 -0
  282. data/lib/sleeping_kangaroo12/version.rb +5 -0
  283. data/lib/sleeping_kangaroo12.rb +7 -0
  284. metadata +372 -0
@@ -0,0 +1,757 @@
1
+ <?xml version="1.0"?>
2
+ <!--
3
+ The eXtended Keccak Code Package (XKCP)
4
+ https://github.com/XKCP/XKCP
5
+
6
+ Implementation by Gilles Van Assche and Ronny Van Keer, hereby denoted as "the implementer".
7
+
8
+ For more information, feedback or questions, please refer to the Keccak Team website:
9
+ https://keccak.team/
10
+
11
+ To the extent possible under law, the implementer has waived all copyright
12
+ and related or neighboring rights to the source code in this file.
13
+ http://creativecommons.org/publicdomain/zero/1.0/
14
+ -->
15
+ <group>
16
+
17
+ <!--
18
+ The fragments below allow to select the desired implementation of the permutations (a.k.a. low-level services below the SnP or PlSnP interface).
19
+
20
+ # For Keccak-p[200]:
21
+
22
+ * K200-ref: the unoptimized reference implementation
23
+ * K200-compact: an implementation aimed at minimizing code and memory sizes
24
+ * K200-ARMv6M: an assembly-optimized implementation for ARMv6M
25
+ * K200-ARMv7M: an assembly-optimized implementation for ARMv7M
26
+ * K200-AVR8: an assembly-optimized implementation for AVR8
27
+
28
+ # For Keccak-p[400]:
29
+
30
+ * K400-ref: the unoptimized reference implementation
31
+ * K400-ARMv6M: an assembly-optimized implementation for ARMv6M
32
+ * K400-ARMv7M: an assembly-optimized implementation for ARMv7M
33
+ * K400-AVR8: an assembly-optimized implementation for AVR8
34
+
35
+ # For Keccak-p[800]:
36
+
37
+ * K800-ref: the unoptimized reference implementation
38
+ * K800-compact: an implementation aimed at minimizing code and memory sizes
39
+ * K800-plain-u2: an optimized implementation for 32-bit platforms in plain C with 2 rounds unrolled
40
+ * K800-plain-ua: same as K800-plain-u2 but with all rounds unrolled
41
+ * K800-plain-lcu2: same as K800-plain-u2 but using the lane complementing technique, which is useful for platforms that do not have a "and not" instruction
42
+ * K800-plain-lcua: same as K800-plain-lcu2 but with all rounds unrolled
43
+ * K800-ARMv6M-u1: an assembly-optimized implementation for ARMv6M (no round unrolling)
44
+ * K800-ARMv6M-u2: same as K800-ARMv6M-u1 but with 2 rounds unrolled
45
+ * K800-ARMv7M-u2: an assembly-optimized implementation for ARMv7M with 2 rounds unrolled
46
+ * K800-ARMv7M-ua: same as K800-ARMv7M-u2 but with all rounds unrolled
47
+ * K800-ARMv7A-u2: an assembly-optimized implementation for ARMv7A with 2 rounds unrolled
48
+ * K800-ARMv8A: an assembly-optimized implementation for ARMv8A [obsolete: a plain C implementation is much faster]
49
+ * K800-AVR8: an assembly-optimized implementation for AVR8
50
+
51
+ # For Keccak-p[1600]:
52
+
53
+ * K1600-ref-64bits: the unoptimized reference implementation
54
+ * K1600-ref-32bits: an unoptimized reference implementation using only 32-bit operations with the bit interleaving technique
55
+ * K1600-compact: an implementation aimed at minimizing code and memory sizes
56
+ * K1600-AVR8-compact: same as K1600-compact, but specifically for AVR8
57
+ * K1600-plain-32bits-inplace: a generically optimized implementation for 32-bit platforms in plain C, aimed at minimizing the memory size by performing the permutation in-place
58
+ * K1600-ARMv6M-inplace: same as K1600-plain-32bits-inplace, but specifically for ARMv6M
59
+ * K1600-ARMv7M-inplace: same as K1600-plain-32bits-inplace, but specifically for ARMv7M
60
+ * K1600-ARMv7A-inplace: same as K1600-plain-32bits-inplace, but specifically for ARMv7A
61
+ * K1600-plain-64bits-u6: a generically optimized implementation for 64-bit platforms in plain C, with 6 rounds unrolled
62
+ * K1600-plain-64bits-ua: same as K1600-plain-64bits-u6 but with all rounds unrolled
63
+ * K1600-plain-64bits-lcu6: same as K1600-plain-64bits-u6 but using the lane complementing technique, which is useful for platforms that do not have a "and not" instruction
64
+ * K1600-plain-64bits-lcua: same as K1600-plain-64bits-lcu6 but with all rounds unrolled
65
+ * K1600-plain-64bits-lcua-shld: same as K1600-plain-64bits-lcua but with the rotation implementation with the 'shld' instruction, as it is faster on some platforms (e.g., SandyBridge)
66
+ * K1600-x86-64: an assembly-optimized implementation for x86_64 [obsolete: a plain C implementation is often faster]
67
+ * K1600-x86-64-shld: same as K1600-x86-64, but with the 'shld' instruction [obsolete: a plain C implementation is often faster]
68
+ * K1600-x86-64-Apple: same as K1600-x86-64, but with a syntax that works better on some Apple platforms [obsolete: a plain C implementation is often faster]
69
+ * K1600-AVX2: an optimized implementation taking advantage of the AVX2 instruction set
70
+ * K1600-AVX512: an optimized implementation taking advantage of the AVX-512 instruction set (in assembler)
71
+ * K1600-AVX512-C: an optimized implementation taking advantage of the AVX-512 instruction set (in C) [obsolete: K1600-AVX512 is faster]
72
+ * K1600-XOP-u6: an optimized implementation taking advantage of the XOP instruction set, with 6 rounds unrolled
73
+ * K1600-XOP-ua: same as K1600-XOP-u6, but with all rounds unrolled
74
+ * K1600-ARMv6M-u1: an assembly-optimized implementation for ARMv6M (no round unrolling)
75
+ * K1600-ARMv6M-u2: same as K1600-ARMv6M-u1 but with 2 rounds unrolled
76
+ * K1600-ARMv7A-NEON: an assembly-optimized implementation for ARMv7A
77
+ * K1600-ARMv8A: an assembly-optimized implementation for ARMv8A [obsolete: a plain C implementation is much faster]
78
+ * K1600-AVR8: an assembly-optimized implementation for AVR8
79
+
80
+ # For Keccak-p[1600]×2:
81
+
82
+ * K1600x2-on1: a stub that calls Keccak-p[1600] twice (requires an implementation of Keccak-p[1600])
83
+ * K1600x2-SSSE3-u2: an implementation taking advantage of the SSSE3 instruction set, with two rounds unrolled
84
+ * K1600x2-SSSE3-ua: same K1600x2-SSSE3-u2, but with all rounds unrolled
85
+ * K1600x2-XOP-u2: an implementation taking advantage of the XOP instruction set, with two rounds unrolled
86
+ * K1600x2-XOP-ua: same K1600x2-XOP-u2, but with all rounds unrolled
87
+ * K1600x2-AVX512-u4: an implementation taking advantage of the AVX-512 instruction set, with 4 rounds unrolled
88
+ * K1600x2-AVX512-u12: same as K1600x2-AVX512-u4, but with 12 rounds unrolled
89
+ * K1600x2-AVX512-ua: same as K1600x2-AVX512-u4, but with all rounds unrolled
90
+ * K1600x2-ARMv7A-NEON: an assembly-optimized implementation for ARMv7A using NEON
91
+
92
+ # For Keccak-p[1600]×4:
93
+
94
+ * K1600x4-on1: a stub that calls Keccak-p[1600] four times (requires an implementation of Keccak-p[1600])
95
+ * K1600x4-on2: a stub that calls Keccak-p[1600]×2 twice (requires an implementation of Keccak-p[1600]×2)
96
+ * K1600x4-AVX2-u6: an implementation taking advantage of the AVX2 instruction set, with 6 rounds unrolled
97
+ * K1600x4-AVX2-u12: same as K1600x4-AVX2-u6, but with 12 rounds unrolled
98
+ * K1600x4-AVX2-ua: same as K1600x4-AVX2-u6, but with all rounds unrolled
99
+ * K1600x4-AVX512-u4: an implementation taking advantage of the AVX-512 instruction set, with 4 rounds unrolled
100
+ * K1600x4-AVX512-u12: same as K1600x4-AVX512-u4, but with 12 rounds unrolled
101
+ * K1600x4-AVX512-ua: same as K1600x4-AVX512-u4, but with all rounds unrolled
102
+
103
+ # For Keccak-p[1600]×8:
104
+
105
+ * K1600x8-on1: a stub that calls Keccak-p[1600] eight times (requires an implementation of Keccak-p[1600])
106
+ * K1600x8-on2: a stub that calls Keccak-p[1600]×2 four times (requires an implementation of Keccak-p[1600]×2)
107
+ * K1600x8-on4: a stub that calls Keccak-p[1600]×4 twice (requires an implementation of Keccak-p[1600]×4)
108
+ * K1600x8-AVX512-u4: an implementation taking advantage of the AVX-512 instruction set, with 4 rounds unrolled
109
+ * K1600x8-AVX512-u12: same as K1600x8-AVX512-u4, but with 12 rounds unrolled
110
+ * K1600x8-AVX512-ua: same as K1600x8-AVX512-u4, but with all rounds unrolled
111
+
112
+ # For Xoodoo:
113
+
114
+ * Xoodoo-ref: the unoptimized reference implementation
115
+ * Xoodoo-plain-ua: an optimized implementation for 32-bit platforms in plain C with all rounds unrolled
116
+ * Xoodoo-ARMv6: an assembly-optimized implementation for the ARMv6 architecture (e.g., ARM11)
117
+ * Xoodoo-ARMv6M: an assembly-optimized implementation for ARMv6M, one round unrolled
118
+ * Xoodoo-ARMv7M: an assembly-optimized implementation for ARMv7M, fully unrolled
119
+ * Xoodoo-ARMv7A-NEON: an assembly-optimized implementation for ARMv7A using NEON, fully unrolled
120
+ * Xoodoo-AVR8: an assembly-optimized implementation for AVR8
121
+ * Xoodoo-SSE2: an optimized implementation taking advantage of the SSE2 instruction set
122
+ * Xoodoo-AVX512: an optimized implementation taking advantage of the AVX-512 instruction set
123
+
124
+ # For Xoodoo×4:
125
+
126
+ * Xoodoox4-on1: a stub that calls Xoodoo four times (requires an implementation of Xoodoo)
127
+ * Xoodoox4-SSSE3: an implementation taking advantage of the SSSE3 instruction set
128
+ * Xoodoox4-AVX512: an implementation taking advantage of the AVX-512 instruction set
129
+ * Xoodoox4-ARMv7A-NEON: an assembly-optimized implementation for ARMv7A using NEON
130
+
131
+ # For Xoodoo×8:
132
+
133
+ * Xoodoox8-on1: a stub that calls Xoodoo eight times (requires an implementation of Xoodoo)
134
+ * Xoodoox8-AVX2: an implementation taking advantage of the AVX2 instruction set, fully unrolled
135
+ * Xoodoox8-AVX512: an implementation taking advantage of the AVX-512 instruction set, fully unrolled
136
+
137
+ # For Xoodoo×16:
138
+
139
+ * Xoodoox16-on1: a stub that calls Xoodoo sixteen times (requires an implementation of Xoodoo)
140
+ * Xoodoox16-AVX512: an implementation taking advantage of the AVX-512 instruction set, fully unrolled
141
+
142
+ -->
143
+
144
+
145
+ <!-- *** Low-level services *** -->
146
+
147
+ <fragment name="optimized">
148
+ <h>lib/common/brg_endian.h</h>
149
+ <gcc>-fomit-frame-pointer</gcc>
150
+ <gcc>-O2</gcc>
151
+ <gcc>-g0</gcc>
152
+ <gcc>-march=native</gcc>
153
+ <gcc>-mtune=native</gcc>
154
+ </fragment>
155
+
156
+ <!-- Keccak-p[200] -->
157
+
158
+ <fragment name="K200">
159
+ <config>XKCP_has_KeccakP200</config>
160
+ </fragment>
161
+
162
+ <fragment name="K200-ref" inherits="common K200">
163
+ <c>lib/low/KeccakP-200/ref/KeccakP-200-reference.c</c>
164
+ <h>lib/low/KeccakP-200/ref/KeccakP-200-reference.h</h>
165
+ <h>lib/low/KeccakP-200/ref/KeccakP-200-SnP.h</h>
166
+ </fragment>
167
+
168
+ <fragment name="K200-compact" inherits="common optimized K200">
169
+ <c>lib/low/KeccakP-200/compact/KeccakP-200-compact.c</c>
170
+ <h>lib/low/KeccakP-200/compact/KeccakP-200-SnP.h</h>
171
+ </fragment>
172
+
173
+ <fragment name="K200-ARMv6M" inherits="common optimized K200">
174
+ <s>lib/low/KeccakP-200/ARM/KeccakP-200-armv6m-le-gcc.s</s>
175
+ <h>lib/low/KeccakP-200/ARM/KeccakP-200-SnP.h</h>
176
+ </fragment>
177
+
178
+ <fragment name="K200-ARMv7M" inherits="common optimized K200">
179
+ <c>lib/low/KeccakP-200/ARM/KeccakP-200-armv7m-le-gcc.s</c>
180
+ <h>lib/low/KeccakP-200/ARM/KeccakP-200-SnP.h</h>
181
+ </fragment>
182
+
183
+ <fragment name="K200-AVR8" inherits="common optimized K200">
184
+ <s>lib/low/KeccakP-200/AVR8/KeccakP-200-avr8-fast.s</s>
185
+ <h>lib/low/KeccakP-200/AVR8/KeccakP-200-SnP.h</h>
186
+ </fragment>
187
+
188
+ <!-- Keccak-p[400] -->
189
+
190
+ <fragment name="K400">
191
+ <config>XKCP_has_KeccakP400</config>
192
+ </fragment>
193
+
194
+ <fragment name="K400-ref" inherits="common K400">
195
+ <c>lib/low/KeccakP-400/ref/KeccakP-400-reference.c</c>
196
+ <h>lib/low/KeccakP-400/ref/KeccakP-400-reference.h</h>
197
+ <h>lib/low/KeccakP-400/ref/KeccakP-400-SnP.h</h>
198
+ </fragment>
199
+
200
+ <fragment name="K400-ARMv6M" inherits="common optimized K400">
201
+ <s>lib/low/KeccakP-400/ARM/KeccakP-400-armv6m-le-gcc.s</s>
202
+ <h>lib/low/KeccakP-400/ARM/KeccakP-400-SnP.h</h>
203
+ </fragment>
204
+
205
+ <fragment name="K400-ARMv7M" inherits="common optimized K400">
206
+ <s>lib/low/KeccakP-400/ARM/KeccakP-400-armv7m-le-gcc.s</s>
207
+ <h>lib/low/KeccakP-400/ARM/KeccakP-400-SnP.h</h>
208
+ </fragment>
209
+
210
+ <fragment name="K400-AVR8" inherits="common optimized K400">
211
+ <s>lib/low/KeccakP-400/AVR8/KeccakP-400-avr8-fast.s</s>
212
+ <h>lib/low/KeccakP-400/AVR8/KeccakP-400-SnP.h</h>
213
+ </fragment>
214
+
215
+ <!-- Keccak-p[800] -->
216
+
217
+ <fragment name="K800">
218
+ <config>XKCP_has_KeccakP800</config>
219
+ </fragment>
220
+
221
+ <fragment name="K800-ref" inherits="common K800">
222
+ <c>lib/low/KeccakP-800/ref/KeccakP-800-reference.c</c>
223
+ <h>lib/low/KeccakP-800/ref/KeccakP-800-reference.h</h>
224
+ <h>lib/low/KeccakP-800/ref/KeccakP-800-SnP.h</h>
225
+ </fragment>
226
+
227
+ <fragment name="K800-compact" inherits="common optimized K800">
228
+ <c>lib/low/KeccakP-800/compact/KeccakP-800-compact.c</c>
229
+ <h>lib/low/KeccakP-800/compact/KeccakP-800-SnP.h</h>
230
+ </fragment>
231
+
232
+ <fragment name="K800-plain" inherits="K800 optimized">
233
+ <h>lib/low/KeccakP-800/plain/KeccakP-800-SnP.h</h>
234
+ <inc>lib/low/KeccakP-800/plain/KeccakP-800-opt32-bis.macros</inc>
235
+ <c>lib/low/KeccakP-800/plain/KeccakP-800-opt32.c</c>
236
+ <inc>lib/low/KeccakP-800/plain/KeccakP-800-opt32.macros</inc>
237
+ <inc>lib/low/KeccakP-800/plain/KeccakP-800-unrolling-bis.macros</inc>
238
+ <inc>lib/low/KeccakP-800/plain/KeccakP-800-unrolling.macros</inc>
239
+ </fragment>
240
+
241
+ <fragment name="K800-plain-u2" inherits="K800-plain">
242
+ <h>lib/low/KeccakP-800/plain/u2/KeccakP-800-opt32-config.h</h>
243
+ </fragment>
244
+
245
+ <fragment name="K800-plain-ua" inherits="K800-plain">
246
+ <h>lib/low/KeccakP-800/plain/ua/KeccakP-800-opt32-config.h</h>
247
+ </fragment>
248
+
249
+ <fragment name="K800-plain-lcu2" inherits="K800-plain">
250
+ <h>lib/low/KeccakP-800/plain/lcu2/KeccakP-800-opt32-config.h</h>
251
+ </fragment>
252
+
253
+ <fragment name="K800-plain-lcua" inherits="K800-plain">
254
+ <h>lib/low/KeccakP-800/plain/lcua/KeccakP-800-opt32-config.h</h>
255
+ </fragment>
256
+
257
+ <fragment name="K800-ARM" inherits="common optimized K800">
258
+ <h>lib/low/KeccakP-800/ARM/KeccakP-800-SnP.h</h>
259
+ </fragment>
260
+
261
+ <fragment name="K800-ARMv6M-u1" inherits="K800-ARM">
262
+ <s>lib/low/KeccakP-800/ARM/KeccakP-800-u1-armv6m-le-gcc.s</s>
263
+ </fragment>
264
+
265
+ <fragment name="K800-ARMv6M-u2" inherits="K800-ARM">
266
+ <s>lib/low/KeccakP-800/ARM/KeccakP-800-u2-armv6m-le-gcc.s</s>
267
+ </fragment>
268
+
269
+ <fragment name="K800-ARMv7M-u2" inherits="K800-ARM">
270
+ <s>lib/low/KeccakP-800/ARM/KeccakP-800-u2-armv7m-le-gcc.s</s>
271
+ </fragment>
272
+
273
+ <fragment name="K800-ARMv7M-ua" inherits="K800-ARM">
274
+ <s>lib/low/KeccakP-800/ARM/KeccakP-800-uf-armv7m-le-gcc.s</s>
275
+ </fragment>
276
+
277
+ <fragment name="K800-ARMv7A-u2" inherits="K800-ARM">
278
+ <s>lib/low/KeccakP-800/ARM/KeccakP-800-u2-armv7a-le-gcc.s</s>
279
+ </fragment>
280
+
281
+ <fragment name="K800-ARMv8A" inherits="common optimized K800">
282
+ <s>lib/low/KeccakP-800/ARMv8A/KeccakP-800-armv8a-neon.s</s>
283
+ <h>lib/low/KeccakP-800/ARMv8A/KeccakP-800-SnP.h</h>
284
+ </fragment>
285
+
286
+ <fragment name="K800-AVR8" inherits="common optimized K800">
287
+ <s>lib/low/KeccakP-800/AVR8/KeccakP-800-avr8-fast.s</s>
288
+ <h>lib/low/KeccakP-800/AVR8/KeccakP-800-SnP.h</h>
289
+ </fragment>
290
+
291
+ <!-- Keccak-p[1600] -->
292
+
293
+ <fragment name="K1600">
294
+ <config>XKCP_has_KeccakP1600</config>
295
+ </fragment>
296
+
297
+ <fragment name="K1600-ref-64bits" inherits="common K1600">
298
+ <c>lib/low/KeccakP-1600/ref-64bits/KeccakP-1600-reference.c</c>
299
+ <h>lib/low/KeccakP-1600/ref-64bits/KeccakP-1600-reference.h</h>
300
+ <h>lib/low/KeccakP-1600/ref-64bits/KeccakP-1600-SnP.h</h>
301
+ </fragment>
302
+
303
+ <fragment name="K1600-ref-32bits" inherits="common K1600">
304
+ <c>lib/low/KeccakP-1600/ref-32bits/KeccakP-1600-reference32BI.c</c>
305
+ <h>lib/low/KeccakP-1600/ref-32bits/KeccakP-1600-reference.h</h>
306
+ <h>lib/low/KeccakP-1600/ref-32bits/KeccakP-1600-SnP.h</h>
307
+ </fragment>
308
+
309
+ <fragment name="K1600-compact" inherits="common optimized K1600">
310
+ <c>lib/low/KeccakP-1600/compact/KeccakP-1600-compact64.c</c>
311
+ <h>lib/low/KeccakP-1600/compact/KeccakP-1600-SnP.h</h>
312
+ <h>lib/low/common/SnP-Relaned.h</h>
313
+ </fragment>
314
+
315
+ <fragment name="K1600-AVR8-compact" inherits="common optimized K1600">
316
+ <s>lib/low/KeccakP-1600/AVR8/KeccakP-1600-avr8-compact.s</s>
317
+ <h>lib/low/KeccakP-1600/AVR8/KeccakP-1600-SnP.h</h>
318
+ </fragment>
319
+
320
+ <fragment name="K1600-plain-32bits-inplace" inherits="K1600 optimized">
321
+ <c>lib/low/KeccakP-1600/plain-32bits-inplace/KeccakP-1600-inplace32BI.c</c>
322
+ <h>lib/low/KeccakP-1600/plain-32bits-inplace/KeccakP-1600-SnP.h</h>
323
+ <h>lib/low/common/SnP-Relaned.h</h>
324
+ </fragment>
325
+
326
+ <fragment name="K1600-ARM-inplace" inherits="K1600 optimized">
327
+ <h>lib/low/KeccakP-1600/ARM/KeccakP-1600-SnP.h</h>
328
+ </fragment>
329
+
330
+ <fragment name="K1600-ARMv6M-inplace" inherits="K1600-ARM-inplace">
331
+ <s>lib/low/KeccakP-1600/ARM/KeccakP-1600-inplace-32bi-armv6m-le-gcc.s</s>
332
+ </fragment>
333
+
334
+ <fragment name="K1600-ARMv7M-inplace" inherits="K1600-ARM-inplace">
335
+ <s>lib/low/KeccakP-1600/ARM/KeccakP-1600-inplace-32bi-armv7m-le-gcc.s</s>
336
+ </fragment>
337
+
338
+ <fragment name="K1600-ARMv7A-inplace" inherits="K1600-ARM-inplace">
339
+ <s>lib/low/KeccakP-1600/ARM/KeccakP-1600-inplace-32bi-armv7a-le-gcc.s</s>
340
+ </fragment>
341
+
342
+ <fragment name="K1600-plain-64bits" inherits="K1600 optimized">
343
+ <c>lib/low/KeccakP-1600/plain-64bits/KeccakP-1600-opt64.c</c>
344
+ <inc>lib/low/KeccakP-1600/common/KeccakP-1600-unrolling.macros</inc>
345
+ <inc>lib/low/KeccakP-1600/common/KeccakP-1600-64.macros</inc>
346
+ <h>lib/low/KeccakP-1600/plain-64bits/KeccakP-1600-SnP.h</h>
347
+ <h>lib/low/common/SnP-Relaned.h</h>
348
+ </fragment>
349
+
350
+ <fragment name="K1600-plain-64bits-u6" inherits="K1600-plain-64bits">
351
+ <h>lib/low/KeccakP-1600/plain-64bits/u6/KeccakP-1600-opt64-config.h</h>
352
+ </fragment>
353
+
354
+ <fragment name="K1600-plain-64bits-ua" inherits="K1600-plain-64bits">
355
+ <h>lib/low/KeccakP-1600/plain-64bits/ua/KeccakP-1600-opt64-config.h</h>
356
+ </fragment>
357
+
358
+ <fragment name="K1600-plain-64bits-lcu6" inherits="K1600-plain-64bits">
359
+ <h>lib/low/KeccakP-1600/plain-64bits/lcu6/KeccakP-1600-opt64-config.h</h>
360
+ </fragment>
361
+
362
+ <fragment name="K1600-plain-64bits-lcua" inherits="K1600-plain-64bits">
363
+ <h>lib/low/KeccakP-1600/plain-64bits/lcua/KeccakP-1600-opt64-config.h</h>
364
+ </fragment>
365
+
366
+ <fragment name="K1600-plain-64bits-lcua-shld" inherits="K1600-plain-64bits">
367
+ <h>lib/low/KeccakP-1600/plain-64bits/lcua-shld/KeccakP-1600-opt64-config.h</h>
368
+ </fragment>
369
+
370
+ <fragment name="K1600-x86-64" inherits="K1600 optimized">
371
+ <s>lib/low/KeccakP-1600/x86-64/KeccakP-1600-x86-64-gas.s</s>
372
+ <h>lib/low/KeccakP-1600/x86-64/KeccakP-1600-SnP.h</h>
373
+ </fragment>
374
+
375
+ <fragment name="K1600-x86-64-shld" inherits="K1600 optimized">
376
+ <s>lib/low/KeccakP-1600/x86-64/KeccakP-1600-x86-64-shld-gas.s</s>
377
+ <h>lib/low/KeccakP-1600/x86-64/KeccakP-1600-SnP.h</h>
378
+ </fragment>
379
+
380
+ <fragment name="K1600-x86-64-Apple" inherits="K1600 optimized">
381
+ <s>lib/low/KeccakP-1600/x86-64/KeccakP-1600-x86-64-gas_Apple.s</s>
382
+ <h>lib/low/KeccakP-1600/x86-64/KeccakP-1600-SnP.h</h>
383
+ </fragment>
384
+
385
+ <fragment name="K1600-AVX2" inherits="K1600 optimized">
386
+ <s>lib/low/KeccakP-1600/AVX2/KeccakP-1600-AVX2.s</s>
387
+ <h>lib/low/KeccakP-1600/AVX2/KeccakP-1600-SnP.h</h>
388
+ </fragment>
389
+
390
+ <fragment name="K1600-AVX512-C" inherits="K1600 optimized">
391
+ <c>lib/low/KeccakP-1600/AVX512/C/KeccakP-1600-AVX512.c</c>
392
+ <h>lib/low/KeccakP-1600/AVX512/C/u12/KeccakP-1600-AVX512-config.h</h>
393
+ <h>lib/low/KeccakP-1600/AVX512/C/KeccakP-1600-SnP.h</h>
394
+ </fragment>
395
+
396
+ <fragment name="K1600-AVX512" inherits="K1600 optimized">
397
+ <s>lib/low/KeccakP-1600/AVX512/KeccakP-1600-AVX512.s</s>
398
+ <h>lib/low/KeccakP-1600/AVX512/KeccakP-1600-SnP.h</h>
399
+ </fragment>
400
+
401
+ <fragment name="K1600-XOP" inherits="K1600 optimized">
402
+ <c>lib/low/KeccakP-1600/XOP/KeccakP-1600-XOP.c</c>
403
+ <h>lib/low/KeccakP-1600/XOP/KeccakP-1600-SnP.h</h>
404
+ <inc>lib/low/KeccakP-1600/common/KeccakP-1600-unrolling.macros</inc>
405
+ <h>lib/low/common/SnP-Relaned.h</h>
406
+ </fragment>
407
+
408
+ <fragment name="K1600-XOP-u6" inherits="K1600-XOP">
409
+ <h>lib/low/KeccakP-1600/XOP/u6/KeccakP-1600-XOP-config.h</h>
410
+ </fragment>
411
+
412
+ <fragment name="K1600-XOP-ua" inherits="K1600-XOP">
413
+ <h>lib/low/KeccakP-1600/XOP/ua/KeccakP-1600-XOP-config.h</h>
414
+ </fragment>
415
+
416
+ <fragment name="K1600-ARMv6M" inherits="K1600 optimized">
417
+ <h>lib/low/KeccakP-1600/ARM/KeccakP-1600-SnP.h</h>
418
+ </fragment>
419
+
420
+ <fragment name="K1600-ARMv6M-u1" inherits="K1600-ARMv6M">
421
+ <s>lib/low/KeccakP-1600/ARM/KeccakP-1600-u1-32bi-armv6m-le-gcc.s</s>
422
+ </fragment>
423
+
424
+ <fragment name="K1600-ARMv6M-u2" inherits="K1600-ARMv6M">
425
+ <s>lib/low/KeccakP-1600/ARM/KeccakP-1600-u2-32bi-armv6m-le-gcc.s</s>
426
+ </fragment>
427
+
428
+ <fragment name="K1600-ARMv7A-NEON" inherits="K1600 optimized">
429
+ <gcc>-mfpu=neon</gcc>
430
+ <gas>-mfpu=neon</gas>
431
+ <s>lib/low/KeccakP-1600/ARMv7A-NEON/KeccakP-1600-armv7a-le-neon-gcc.s</s>
432
+ <h>lib/low/KeccakP-1600/ARMv7A-NEON/KeccakP-1600-SnP.h</h>
433
+ </fragment>
434
+
435
+ <fragment name="K1600-ARMv8A" inherits="K1600 optimized">
436
+ <s>lib/low/KeccakP-1600/ARMv8A/KeccakP-1600-armv8a-neon.s</s>
437
+ <h>lib/low/KeccakP-1600/ARMv8A/KeccakP-1600-SnP.h</h>
438
+ </fragment>
439
+
440
+ <fragment name="K1600-AVR8" inherits="common optimized K1600">
441
+ <s>lib/low/KeccakP-1600/AVR8/KeccakP-1600-avr8-fast.s</s>
442
+ <h>lib/low/KeccakP-1600/AVR8/KeccakP-1600-SnP.h</h>
443
+ </fragment>
444
+
445
+ <!-- Keccak-p[1600]×2 -->
446
+
447
+ <fragment name="K1600x2">
448
+ <config>XKCP_has_KeccakP1600times2</config>
449
+ </fragment>
450
+
451
+ <fragment name="K1600x2-on1" inherits="K1600x2">
452
+ <c>lib/low/KeccakP-1600-times2/fallback-on1/KeccakP-1600-times2-on1.c</c>
453
+ <h>lib/low/KeccakP-1600-times2/fallback-on1/KeccakP-1600-times2-SnP.h</h>
454
+ <inc>lib/low/common/PlSnP-Fallback.inc</inc>
455
+ </fragment>
456
+
457
+ <fragment name="K1600x2-SIMD128" inherits="optimized K1600x2">
458
+ <c>lib/low/KeccakP-1600-times2/SIMD128/KeccakP-1600-times2-SIMD128.c</c>
459
+ <h>lib/low/KeccakP-1600-times2/SIMD128/KeccakP-1600-times2-SnP.h</h>
460
+ <inc>lib/low/KeccakP-1600/common/KeccakP-1600-unrolling.macros</inc>
461
+ </fragment>
462
+
463
+ <fragment name="K1600x2-SSSE3-u2" inherits="K1600x2-SIMD128">
464
+ <h>lib/low/KeccakP-1600-times2/SIMD128/SSSE3-u2/SIMD128-config.h</h>
465
+ </fragment>
466
+
467
+ <fragment name="K1600x2-SSSE3-ua" inherits="K1600x2-SIMD128">
468
+ <h>lib/low/KeccakP-1600-times2/SIMD128/SSSE3-ua/SIMD128-config.h</h>
469
+ </fragment>
470
+
471
+ <fragment name="K1600x2-XOP-u2" inherits="K1600x2-SIMD128">
472
+ <h>lib/low/KeccakP-1600-times2/SIMD128/XOP-u2/SIMD128-config.h</h>
473
+ </fragment>
474
+
475
+ <fragment name="K1600x2-XOP-ua" inherits="K1600x2-SIMD128">
476
+ <h>lib/low/KeccakP-1600-times2/SIMD128/XOP-ua/SIMD128-config.h</h>
477
+ </fragment>
478
+
479
+ <fragment name="K1600x2-AVX512" inherits="optimized K1600x2">
480
+ <c>lib/low/KeccakP-1600-times2/AVX512/KeccakP-1600-times2-SIMD512.c</c>
481
+ <h>lib/low/KeccakP-1600-times2/AVX512/KeccakP-1600-times2-SnP.h</h>
482
+ </fragment>
483
+
484
+ <fragment name="K1600x2-AVX512-u4" inherits="K1600x2-AVX512">
485
+ <h>lib/low/KeccakP-1600-times2/AVX512/AVX512u4/SIMD512-2-config.h</h>
486
+ </fragment>
487
+
488
+ <fragment name="K1600x2-AVX512-u12" inherits="K1600x2-AVX512">
489
+ <h>lib/low/KeccakP-1600-times2/AVX512/AVX512u12/SIMD512-2-config.h</h>
490
+ </fragment>
491
+
492
+ <fragment name="K1600x2-AVX512-ua" inherits="K1600x2-AVX512">
493
+ <h>lib/low/KeccakP-1600-times2/AVX512/AVX512ufull/SIMD512-2-config.h</h>
494
+ </fragment>
495
+
496
+ <fragment name="K1600x2-ARMv7A-NEON" inherits="K1600x2">
497
+ <gcc>-mfpu=neon</gcc>
498
+ <gas>-mfpu=neon</gas>
499
+ <s>lib/low/KeccakP-1600-times2/ARMv7A-NEON/KeccakP-1600-inplace-pl2-armv7a-neon-le-gcc.s</s>
500
+ <h>lib/low/KeccakP-1600-times2/ARMv7A-NEON/KeccakP-1600-times2-SnP.h</h>
501
+ </fragment>
502
+
503
+ <!-- Keccak-p[1600]×4 -->
504
+
505
+ <fragment name="K1600x4">
506
+ <config>XKCP_has_KeccakP1600times4</config>
507
+ </fragment>
508
+
509
+ <fragment name="K1600x4-on1" inherits="K1600x4">
510
+ <c>lib/low/KeccakP-1600-times4/fallback-on1/KeccakP-1600-times4-on1.c</c>
511
+ <h>lib/low/KeccakP-1600-times4/fallback-on1/KeccakP-1600-times4-SnP.h</h>
512
+ <inc>lib/low/common/PlSnP-Fallback.inc</inc>
513
+ </fragment>
514
+
515
+ <fragment name="K1600x4-on2" inherits="K1600x4">
516
+ <c>lib/low/KeccakP-1600-times4/fallback-on2/KeccakP-1600-times4-on2.c</c>
517
+ <h>lib/low/KeccakP-1600-times4/fallback-on2/KeccakP-1600-times4-SnP.h</h>
518
+ <inc>lib/low/common/PlSnP-Fallback.inc</inc>
519
+ </fragment>
520
+
521
+ <fragment name="K1600x4-AVX2" inherits="optimized K1600x4">
522
+ <c>lib/low/KeccakP-1600-times4/AVX2/KeccakP-1600-times4-SIMD256.c</c>
523
+ <h>lib/low/KeccakP-1600-times4/AVX2/KeccakP-1600-times4-SnP.h</h>
524
+ <inc>lib/low/KeccakP-1600/common/KeccakP-1600-unrolling.macros</inc>
525
+ </fragment>
526
+
527
+ <fragment name="K1600x4-AVX2-u6" inherits="K1600x4-AVX2">
528
+ <h>lib/low/KeccakP-1600-times4/AVX2/u6/SIMD256-config.h</h>
529
+ </fragment>
530
+
531
+ <fragment name="K1600x4-AVX2-u12" inherits="K1600x4-AVX2">
532
+ <h>lib/low/KeccakP-1600-times4/AVX2/u12/SIMD256-config.h</h>
533
+ </fragment>
534
+
535
+ <fragment name="K1600x4-AVX2-ua" inherits="K1600x4-AVX2">
536
+ <h>lib/low/KeccakP-1600-times4/AVX2/ua/SIMD256-config.h</h>
537
+ </fragment>
538
+
539
+ <fragment name="K1600x4-AVX512" inherits="optimized K1600x4">
540
+ <c>lib/low/KeccakP-1600-times4/AVX512/KeccakP-1600-times4-SIMD512.c</c>
541
+ <h>lib/low/KeccakP-1600-times4/AVX512/KeccakP-1600-times4-SnP.h</h>
542
+ </fragment>
543
+
544
+ <fragment name="K1600x4-AVX512-u4" inherits="K1600x4-AVX512">
545
+ <h>lib/low/KeccakP-1600-times4/AVX512/AVX512u4/SIMD512-4-config.h</h>
546
+ </fragment>
547
+
548
+ <fragment name="K1600x4-AVX512-u12" inherits="K1600x4-AVX512">
549
+ <h>lib/low/KeccakP-1600-times4/AVX512/AVX512u12/SIMD512-4-config.h</h>
550
+ </fragment>
551
+
552
+ <fragment name="K1600x4-AVX512-ua" inherits="K1600x4-AVX512">
553
+ <h>lib/low/KeccakP-1600-times4/AVX512/AVX512ufull/SIMD512-4-config.h</h>
554
+ </fragment>
555
+
556
+ <!-- Keccak-p[1600]×8 -->
557
+
558
+ <fragment name="K1600x8">
559
+ <config>XKCP_has_KeccakP1600times8</config>
560
+ </fragment>
561
+
562
+ <fragment name="K1600x8-on1" inherits="K1600x8">
563
+ <c>lib/low/KeccakP-1600-times8/fallback-on1/KeccakP-1600-times8-on1.c</c>
564
+ <h>lib/low/KeccakP-1600-times8/fallback-on1/KeccakP-1600-times8-SnP.h</h>
565
+ <inc>lib/low/common/PlSnP-Fallback.inc</inc>
566
+ </fragment>
567
+
568
+ <fragment name="K1600x8-on2" inherits="K1600x8">
569
+ <c>lib/low/KeccakP-1600-times8/fallback-on2/KeccakP-1600-times8-on2.c</c>
570
+ <h>lib/low/KeccakP-1600-times8/fallback-on2/KeccakP-1600-times8-SnP.h</h>
571
+ <inc>lib/low/common/PlSnP-Fallback.inc</inc>
572
+ </fragment>
573
+
574
+ <fragment name="K1600x8-on4" inherits="K1600x8">
575
+ <c>lib/low/KeccakP-1600-times8/fallback-on4/KeccakP-1600-times8-on4.c</c>
576
+ <h>lib/low/KeccakP-1600-times8/fallback-on4/KeccakP-1600-times8-SnP.h</h>
577
+ <inc>lib/low/common/PlSnP-Fallback.inc</inc>
578
+ </fragment>
579
+
580
+ <fragment name="K1600x8-AVX512" inherits="optimized K1600x8">
581
+ <c>lib/low/KeccakP-1600-times8/AVX512/KeccakP-1600-times8-SIMD512.c</c>
582
+ <h>lib/low/KeccakP-1600-times8/AVX512/KeccakP-1600-times8-SnP.h</h>
583
+ </fragment>
584
+
585
+ <fragment name="K1600x8-AVX512-u4" inherits="K1600x8-AVX512">
586
+ <h>lib/low/KeccakP-1600-times8/AVX512/u4/SIMD512-config.h</h>
587
+ </fragment>
588
+
589
+ <fragment name="K1600x8-AVX512-u12" inherits="K1600x8-AVX512">
590
+ <h>lib/low/KeccakP-1600-times8/AVX512/u12/SIMD512-config.h</h>
591
+ </fragment>
592
+
593
+ <fragment name="K1600x8-AVX512-ua" inherits="K1600x8-AVX512">
594
+ <h>lib/low/KeccakP-1600-times8/AVX512/ua/SIMD512-config.h</h>
595
+ </fragment>
596
+
597
+ <!-- ++++++++++++++++++++++++ Xoodoo +++++++++++++++++++++ -->
598
+
599
+ <fragment name="Xoodoo">
600
+ <config>XKCP_has_Xoodoo</config>
601
+ <h>lib/low/Xoodoo/Xoodoo.h</h>
602
+ <h>lib/high/Xoodyak/Xoodyak-parameters.h</h>
603
+ </fragment>
604
+
605
+ <fragment name="Xoodoo-ref" inherits="common Xoodoo">
606
+ <c>lib/low/Xoodoo/ref/Xoodoo-reference.c</c>
607
+ <h>lib/low/Xoodoo/ref/Xoodoo-SnP.h</h>
608
+ </fragment>
609
+
610
+ <fragment name="Xoodoo-plain-ua" inherits="common optimized Xoodoo">
611
+ <c>lib/low/Xoodoo/plain/Xoodoo-optimized.c</c>
612
+ <c>lib/low/Xoodoo/plain/Xoodyak-full-blocks.c</c>
613
+ <h>lib/low/Xoodoo/plain/Xoodoo-SnP.h</h>
614
+ </fragment>
615
+
616
+ <fragment name="Xoodoo-ARMv6" inherits="common optimized Xoodoo">
617
+ <s>lib/low/Xoodoo/ARM/Xoodoo-uf-armv6-le-gcc.s</s>
618
+ <s>lib/low/Xoodoo/ARM/Xoodyak-uf-armv6-le-gcc.s</s>
619
+ <h>lib/low/Xoodoo/ARM/Xoodoo-SnP.h</h>
620
+ </fragment>
621
+
622
+ <fragment name="Xoodoo-ARMv6M" inherits="common optimized Xoodoo">
623
+ <s>lib/low/Xoodoo/ARM/Xoodoo-u1-armv6m-le-gcc.s</s>
624
+ <s>lib/low/Xoodoo/ARM/Xoodyak-u1-armv6m-le-gcc.s</s>
625
+ <h>lib/low/Xoodoo/ARM/Xoodoo-SnP.h</h>
626
+ </fragment>
627
+
628
+ <fragment name="Xoodoo-ARMv7M" inherits="common optimized Xoodoo">
629
+ <s>lib/low/Xoodoo/ARM/Xoodoo-uf-armv7m-le-gcc.s</s>
630
+ <s>lib/low/Xoodoo/ARM/Xoodyak-uf-armv7m-le-gcc.s</s>
631
+ <h>lib/low/Xoodoo/ARM/Xoodoo-SnP.h</h>
632
+ </fragment>
633
+
634
+ <fragment name="Xoodoo-ARMv7A-NEON" inherits="common optimized Xoodoo">
635
+ <gcc>-mfpu=neon</gcc>
636
+ <gas>-mfpu=neon</gas>
637
+ <s>lib/low/Xoodoo/ARMv7A-NEON/Xoodoo-uf-armv7a-neon-le-gcc.s</s>
638
+ <s>lib/low/Xoodoo/ARMv7A-NEON/Xoodyak-uf-armv7a-neon-le-gcc.s</s>
639
+ <h>lib/low/Xoodoo/ARMv7A-NEON/Xoodoo-SnP.h</h>
640
+ </fragment>
641
+
642
+ <fragment name="Xoodoo-AVR8" inherits="common optimized Xoodoo">
643
+ <s>lib/low/Xoodoo/AVR8/Xoodoo-avr8-u1.s</s>
644
+ <h>lib/low/Xoodoo/AVR8/Xoodoo-SnP.h</h>
645
+ </fragment>
646
+
647
+ <fragment name="Xoodoo-SSE2" inherits="common optimized Xoodoo">
648
+ <c>lib/low/Xoodoo/SSE2/Xoodoo-SIMD128.c</c>
649
+ <h>lib/low/Xoodoo/SSE2/Xoodoo-SnP.h</h>
650
+ <c>lib/low/Xoodoo/SSE2/Xoodyak-full-block-SIMD128.c</c>
651
+ </fragment>
652
+
653
+ <fragment name="Xoodoo-AVX512" inherits="common optimized Xoodoo">
654
+ <c>lib/low/Xoodoo/AVX512/Xoodoo-SIMD512.c</c>
655
+ <h>lib/low/Xoodoo/AVX512/Xoodoo-SnP.h</h>
656
+ <c>lib/low/Xoodoo/AVX512/Xoodyak-full-block-SIMD512.c</c>
657
+ </fragment>
658
+
659
+ <!-- Xoodoo×4 -->
660
+
661
+ <fragment name="Xoodoox4">
662
+ <config>XKCP_has_Xoodootimes4</config>
663
+ </fragment>
664
+
665
+ <fragment name="Xoodoox4-on1" inherits="common optimized Xoodoox4">
666
+ <c>lib/low/Xoodoo-times4/fallback-on1/Xoodoo-times4-on1.c</c>
667
+ <h>lib/low/Xoodoo-times4/fallback-on1/Xoodoo-times4-SnP.h</h>
668
+ <inc>lib/low/common/PlSnP-Fallback.inc</inc>
669
+ </fragment>
670
+
671
+ <fragment name="Xoodoox4-SSSE3" inherits="common optimized Xoodoox4">
672
+ <c>lib/low/Xoodoo-times4/SSSE3/Xoodoo-times4-SIMD128.c</c>
673
+ <h>lib/low/Xoodoo-times4/SSSE3/Xoodoo-times4-SnP.h</h>
674
+ </fragment>
675
+
676
+ <fragment name="Xoodoox4-AVX512" inherits="common optimized Xoodoox4">
677
+ <c>lib/low/Xoodoo-times4/AVX512/Xoodoo-times4-SIMD512.c</c>
678
+ <h>lib/low/Xoodoo-times4/AVX512/Xoodoo-times4-SnP.h</h>
679
+ </fragment>
680
+
681
+ <fragment name="Xoodoox4-ARMv7A-NEON" inherits="common optimized Xoodoox4">
682
+ <gcc>-mfpu=neon</gcc>
683
+ <gas>-mfpu=neon</gas>
684
+ <s>lib/low/Xoodoo-times4/ARMv7A-NEON/Xoodoo-times4-ARMv7A.s</s>
685
+ <h>lib/low/Xoodoo-times4/ARMv7A-NEON/Xoodoo-times4-SnP.h</h>
686
+ </fragment>
687
+
688
+ <!-- Xoodoo×8 -->
689
+
690
+ <fragment name="Xoodoox8">
691
+ <config>XKCP_has_Xoodootimes8</config>
692
+ </fragment>
693
+
694
+ <fragment name="Xoodoox8-on1" inherits="common optimized Xoodoox8">
695
+ <c>lib/low/Xoodoo-times8/fallback-on1/Xoodoo-times8-on1.c</c>
696
+ <h>lib/low/Xoodoo-times8/fallback-on1/Xoodoo-times8-SnP.h</h>
697
+ <inc>lib/low/common/PlSnP-Fallback.inc</inc>
698
+ </fragment>
699
+
700
+ <fragment name="Xoodoox8-AVX2" inherits="common optimized Xoodoox8">
701
+ <c>lib/low/Xoodoo-times8/AVX2/Xoodoo-times8-SIMD256.c</c>
702
+ <h>lib/low/Xoodoo-times8/AVX2/Xoodoo-times8-SnP.h</h>
703
+ </fragment>
704
+
705
+ <fragment name="Xoodoox8-AVX512" inherits="common optimized Xoodoox8">
706
+ <c>lib/low/Xoodoo-times8/AVX512/Xoodoo-times8-SIMD512.c</c>
707
+ <h>lib/low/Xoodoo-times8/AVX512/Xoodoo-times8-SnP.h</h>
708
+ </fragment>
709
+
710
+ <!-- Xoodoo×16 -->
711
+
712
+ <fragment name="Xoodoox16">
713
+ <config>XKCP_has_Xoodootimes16</config>
714
+ </fragment>
715
+
716
+ <fragment name="Xoodoox16-on1" inherits="common optimized Xoodoox16">
717
+ <c>lib/low/Xoodoo-times16/fallback-on1/Xoodoo-times16-on1.c</c>
718
+ <h>lib/low/Xoodoo-times16/fallback-on1/Xoodoo-times16-SnP.h</h>
719
+ <inc>lib/low/common/PlSnP-Fallback.inc</inc>
720
+ </fragment>
721
+
722
+ <fragment name="Xoodoox16-AVX512" inherits="common optimized Xoodoox16">
723
+ <c>lib/low/Xoodoo-times16/AVX512/Xoodoo-times16-SIMD512.c</c>
724
+ <h>lib/low/Xoodoo-times16/AVX512/Xoodoo-times16-SnP.h</h>
725
+ </fragment>
726
+
727
+ <!--
728
+ For Ketje, one of the following fragments is required:
729
+ * Ket-SnP: to glue the Ketje implementation to an implementation of the permutation with SnP (default choice)
730
+ * Ket-ARMv7M: same as Ket{Jr, Sr, Mn, Mj}-SnP, but with specific optimizations for ARMv7M
731
+ * Ket-optimizedLE: same as Ket{Jr, Sr, Mn, Mj}-SnP, but with specific optimizations for platforms that are little-endian and such that the state representation is pure
732
+ -->
733
+
734
+ <!-- "Ket", the layer between SnP and Ketje services -->
735
+
736
+ <!-- TODO Some day, it would be good to blend Ket-SnP and Ket-optimizedLE, and automate the selection based on the reprensentation of the state and the endianness of the platform. -->
737
+
738
+ <fragment name="Ket-SnP">
739
+ <inc>lib/low/Ketje/SnP-compliant/Ket.inc</inc>
740
+ <h>lib/low/Ketje/SnP-compliant/Ket.h</h>
741
+ <c>lib/low/Ketje/SnP-compliant/Ket.c</c>
742
+ </fragment>
743
+
744
+ <fragment name="Ket-optimizedLE">
745
+ <inc>lib/low/Ketje/OptimizedLE/Ket.inc</inc>
746
+ <h>lib/low/Ketje/OptimizedLE/Ket.h</h>
747
+ <c>lib/low/Ketje/OptimizedLE/Ket.c</c>
748
+ </fragment>
749
+
750
+ <fragment name="Ket-ARMv7M">
751
+ <h>lib/low/Ketje/OptimizedAsmARM/Ket.h</h>
752
+ <s>lib/low/Ketje/OptimizedAsmARM/KetjeJr-armv7m-le-gcc.s</s>
753
+ <s>lib/low/Ketje/OptimizedAsmARM/KetjeSr-armv7m-le-gcc.s</s>
754
+ <!-- TODO: <fragment name="Ket-ARMv7M" inherits="KetJr-ARMv7M KetSr-ARMv7M KetMn-optimizedLE KetMj-SnP"/> -->
755
+ </fragment>
756
+
757
+ </group>