sleeping_kangaroo12 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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>