hillclimber 0.1.6__cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl

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 (475) hide show
  1. hillclimber/__init__.py +41 -0
  2. hillclimber/actions.py +53 -0
  3. hillclimber/analysis.py +590 -0
  4. hillclimber/biases.py +293 -0
  5. hillclimber/calc.py +22 -0
  6. hillclimber/cvs.py +1070 -0
  7. hillclimber/interfaces.py +133 -0
  8. hillclimber/metadynamics.py +416 -0
  9. hillclimber/nodes.py +6 -0
  10. hillclimber/opes.py +359 -0
  11. hillclimber/pycv.py +362 -0
  12. hillclimber/selectors.py +230 -0
  13. hillclimber/virtual_atoms.py +341 -0
  14. hillclimber-0.1.6.dist-info/METADATA +325 -0
  15. hillclimber-0.1.6.dist-info/RECORD +475 -0
  16. hillclimber-0.1.6.dist-info/WHEEL +6 -0
  17. hillclimber-0.1.6.dist-info/entry_points.txt +8 -0
  18. hillclimber-0.1.6.dist-info/licenses/LICENSE +165 -0
  19. hillclimber-0.1.6.dist-info/sboms/auditwheel.cdx.json +1 -0
  20. hillclimber.libs/libgomp-a49a47f9.so.1.0.0 +0 -0
  21. plumed/__init__.py +104 -0
  22. plumed/_lib/bin/plumed +0 -0
  23. plumed/_lib/bin/plumed-config +9 -0
  24. plumed/_lib/bin/plumed-patch +9 -0
  25. plumed/_lib/include/plumed/adjmat/AdjacencyMatrixBase.h +659 -0
  26. plumed/_lib/include/plumed/adjmat/ContactMatrix.h +59 -0
  27. plumed/_lib/include/plumed/asmjit/arch.h +228 -0
  28. plumed/_lib/include/plumed/asmjit/arm.h +43 -0
  29. plumed/_lib/include/plumed/asmjit/asmjit.h +69 -0
  30. plumed/_lib/include/plumed/asmjit/asmjit_apibegin.h +143 -0
  31. plumed/_lib/include/plumed/asmjit/asmjit_apiend.h +93 -0
  32. plumed/_lib/include/plumed/asmjit/asmjit_build.h +971 -0
  33. plumed/_lib/include/plumed/asmjit/assembler.h +183 -0
  34. plumed/_lib/include/plumed/asmjit/base.h +56 -0
  35. plumed/_lib/include/plumed/asmjit/codebuilder.h +944 -0
  36. plumed/_lib/include/plumed/asmjit/codecompiler.h +767 -0
  37. plumed/_lib/include/plumed/asmjit/codeemitter.h +528 -0
  38. plumed/_lib/include/plumed/asmjit/codeholder.h +777 -0
  39. plumed/_lib/include/plumed/asmjit/constpool.h +286 -0
  40. plumed/_lib/include/plumed/asmjit/cpuinfo.h +402 -0
  41. plumed/_lib/include/plumed/asmjit/func.h +1327 -0
  42. plumed/_lib/include/plumed/asmjit/globals.h +370 -0
  43. plumed/_lib/include/plumed/asmjit/inst.h +137 -0
  44. plumed/_lib/include/plumed/asmjit/logging.h +317 -0
  45. plumed/_lib/include/plumed/asmjit/misc_p.h +103 -0
  46. plumed/_lib/include/plumed/asmjit/moved_string.h +318 -0
  47. plumed/_lib/include/plumed/asmjit/operand.h +1599 -0
  48. plumed/_lib/include/plumed/asmjit/osutils.h +207 -0
  49. plumed/_lib/include/plumed/asmjit/regalloc_p.h +597 -0
  50. plumed/_lib/include/plumed/asmjit/runtime.h +227 -0
  51. plumed/_lib/include/plumed/asmjit/simdtypes.h +1104 -0
  52. plumed/_lib/include/plumed/asmjit/utils.h +1387 -0
  53. plumed/_lib/include/plumed/asmjit/vmem.h +183 -0
  54. plumed/_lib/include/plumed/asmjit/x86.h +45 -0
  55. plumed/_lib/include/plumed/asmjit/x86assembler.h +125 -0
  56. plumed/_lib/include/plumed/asmjit/x86builder.h +117 -0
  57. plumed/_lib/include/plumed/asmjit/x86compiler.h +322 -0
  58. plumed/_lib/include/plumed/asmjit/x86emitter.h +5149 -0
  59. plumed/_lib/include/plumed/asmjit/x86globals.h +535 -0
  60. plumed/_lib/include/plumed/asmjit/x86inst.h +2547 -0
  61. plumed/_lib/include/plumed/asmjit/x86instimpl_p.h +74 -0
  62. plumed/_lib/include/plumed/asmjit/x86internal_p.h +108 -0
  63. plumed/_lib/include/plumed/asmjit/x86logging_p.h +92 -0
  64. plumed/_lib/include/plumed/asmjit/x86misc.h +417 -0
  65. plumed/_lib/include/plumed/asmjit/x86operand.h +1133 -0
  66. plumed/_lib/include/plumed/asmjit/x86regalloc_p.h +734 -0
  67. plumed/_lib/include/plumed/asmjit/zone.h +1157 -0
  68. plumed/_lib/include/plumed/bias/Bias.h +82 -0
  69. plumed/_lib/include/plumed/bias/ReweightBase.h +58 -0
  70. plumed/_lib/include/plumed/blas/blas.h +253 -0
  71. plumed/_lib/include/plumed/blas/def_external.h +61 -0
  72. plumed/_lib/include/plumed/blas/def_internal.h +97 -0
  73. plumed/_lib/include/plumed/blas/real.h +49 -0
  74. plumed/_lib/include/plumed/cltools/CLTool.h +32 -0
  75. plumed/_lib/include/plumed/clusters/ClusteringBase.h +70 -0
  76. plumed/_lib/include/plumed/colvar/Colvar.h +32 -0
  77. plumed/_lib/include/plumed/colvar/ColvarInput.h +68 -0
  78. plumed/_lib/include/plumed/colvar/ColvarShortcut.h +81 -0
  79. plumed/_lib/include/plumed/colvar/CoordinationBase.h +52 -0
  80. plumed/_lib/include/plumed/colvar/MultiColvarTemplate.h +333 -0
  81. plumed/_lib/include/plumed/colvar/PathMSDBase.h +101 -0
  82. plumed/_lib/include/plumed/colvar/RMSDVector.h +78 -0
  83. plumed/_lib/include/plumed/config/Config.h +118 -0
  84. plumed/_lib/include/plumed/config/version.h +9 -0
  85. plumed/_lib/include/plumed/contour/ContourFindingObject.h +87 -0
  86. plumed/_lib/include/plumed/contour/DistanceFromContourBase.h +82 -0
  87. plumed/_lib/include/plumed/contour/FindContour.h +67 -0
  88. plumed/_lib/include/plumed/core/Action.h +540 -0
  89. plumed/_lib/include/plumed/core/ActionAnyorder.h +48 -0
  90. plumed/_lib/include/plumed/core/ActionAtomistic.h +343 -0
  91. plumed/_lib/include/plumed/core/ActionForInterface.h +99 -0
  92. plumed/_lib/include/plumed/core/ActionPilot.h +57 -0
  93. plumed/_lib/include/plumed/core/ActionRegister.h +124 -0
  94. plumed/_lib/include/plumed/core/ActionSet.h +163 -0
  95. plumed/_lib/include/plumed/core/ActionSetup.h +48 -0
  96. plumed/_lib/include/plumed/core/ActionShortcut.h +73 -0
  97. plumed/_lib/include/plumed/core/ActionToGetData.h +59 -0
  98. plumed/_lib/include/plumed/core/ActionToPutData.h +101 -0
  99. plumed/_lib/include/plumed/core/ActionWithArguments.h +140 -0
  100. plumed/_lib/include/plumed/core/ActionWithMatrix.h +87 -0
  101. plumed/_lib/include/plumed/core/ActionWithValue.h +258 -0
  102. plumed/_lib/include/plumed/core/ActionWithVector.h +94 -0
  103. plumed/_lib/include/plumed/core/ActionWithVirtualAtom.h +123 -0
  104. plumed/_lib/include/plumed/core/CLTool.h +177 -0
  105. plumed/_lib/include/plumed/core/CLToolMain.h +102 -0
  106. plumed/_lib/include/plumed/core/CLToolRegister.h +108 -0
  107. plumed/_lib/include/plumed/core/Colvar.h +115 -0
  108. plumed/_lib/include/plumed/core/DataPassingObject.h +94 -0
  109. plumed/_lib/include/plumed/core/DataPassingTools.h +54 -0
  110. plumed/_lib/include/plumed/core/DomainDecomposition.h +120 -0
  111. plumed/_lib/include/plumed/core/ExchangePatterns.h +47 -0
  112. plumed/_lib/include/plumed/core/FlexibleBin.h +63 -0
  113. plumed/_lib/include/plumed/core/GREX.h +61 -0
  114. plumed/_lib/include/plumed/core/GenericMolInfo.h +89 -0
  115. plumed/_lib/include/plumed/core/Group.h +41 -0
  116. plumed/_lib/include/plumed/core/ModuleMap.h +30 -0
  117. plumed/_lib/include/plumed/core/ParallelTaskManager.h +1023 -0
  118. plumed/_lib/include/plumed/core/PbcAction.h +61 -0
  119. plumed/_lib/include/plumed/core/PlumedMain.h +632 -0
  120. plumed/_lib/include/plumed/core/PlumedMainInitializer.h +118 -0
  121. plumed/_lib/include/plumed/core/RegisterBase.h +340 -0
  122. plumed/_lib/include/plumed/core/TargetDist.h +48 -0
  123. plumed/_lib/include/plumed/core/Value.h +547 -0
  124. plumed/_lib/include/plumed/core/WithCmd.h +93 -0
  125. plumed/_lib/include/plumed/dimred/SMACOF.h +55 -0
  126. plumed/_lib/include/plumed/drr/DRR.h +383 -0
  127. plumed/_lib/include/plumed/drr/colvar_UIestimator.h +777 -0
  128. plumed/_lib/include/plumed/fisst/legendre_rule_fast.h +44 -0
  129. plumed/_lib/include/plumed/function/Custom.h +54 -0
  130. plumed/_lib/include/plumed/function/Function.h +85 -0
  131. plumed/_lib/include/plumed/function/FunctionOfMatrix.h +368 -0
  132. plumed/_lib/include/plumed/function/FunctionOfScalar.h +135 -0
  133. plumed/_lib/include/plumed/function/FunctionOfVector.h +296 -0
  134. plumed/_lib/include/plumed/function/FunctionSetup.h +180 -0
  135. plumed/_lib/include/plumed/function/FunctionShortcut.h +130 -0
  136. plumed/_lib/include/plumed/function/FunctionWithSingleArgument.h +165 -0
  137. plumed/_lib/include/plumed/gridtools/ActionWithGrid.h +43 -0
  138. plumed/_lib/include/plumed/gridtools/EvaluateGridFunction.h +99 -0
  139. plumed/_lib/include/plumed/gridtools/FunctionOfGrid.h +295 -0
  140. plumed/_lib/include/plumed/gridtools/GridCoordinatesObject.h +179 -0
  141. plumed/_lib/include/plumed/gridtools/GridSearch.h +135 -0
  142. plumed/_lib/include/plumed/gridtools/Interpolator.h +45 -0
  143. plumed/_lib/include/plumed/gridtools/KDE.h +455 -0
  144. plumed/_lib/include/plumed/gridtools/RDF.h +40 -0
  145. plumed/_lib/include/plumed/gridtools/SumOfKernels.h +219 -0
  146. plumed/_lib/include/plumed/isdb/MetainferenceBase.h +398 -0
  147. plumed/_lib/include/plumed/lapack/def_external.h +207 -0
  148. plumed/_lib/include/plumed/lapack/def_internal.h +388 -0
  149. plumed/_lib/include/plumed/lapack/lapack.h +899 -0
  150. plumed/_lib/include/plumed/lapack/lapack_limits.h +79 -0
  151. plumed/_lib/include/plumed/lapack/real.h +50 -0
  152. plumed/_lib/include/plumed/lepton/CompiledExpression.h +164 -0
  153. plumed/_lib/include/plumed/lepton/CustomFunction.h +143 -0
  154. plumed/_lib/include/plumed/lepton/Exception.h +93 -0
  155. plumed/_lib/include/plumed/lepton/ExpressionProgram.h +137 -0
  156. plumed/_lib/include/plumed/lepton/ExpressionTreeNode.h +145 -0
  157. plumed/_lib/include/plumed/lepton/Lepton.h +85 -0
  158. plumed/_lib/include/plumed/lepton/MSVC_erfc.h +123 -0
  159. plumed/_lib/include/plumed/lepton/Operation.h +1302 -0
  160. plumed/_lib/include/plumed/lepton/ParsedExpression.h +165 -0
  161. plumed/_lib/include/plumed/lepton/Parser.h +111 -0
  162. plumed/_lib/include/plumed/lepton/windowsIncludes.h +73 -0
  163. plumed/_lib/include/plumed/mapping/Path.h +44 -0
  164. plumed/_lib/include/plumed/mapping/PathProjectionCalculator.h +57 -0
  165. plumed/_lib/include/plumed/matrixtools/MatrixOperationBase.h +54 -0
  166. plumed/_lib/include/plumed/matrixtools/MatrixTimesMatrix.h +309 -0
  167. plumed/_lib/include/plumed/matrixtools/MatrixTimesVectorBase.h +365 -0
  168. plumed/_lib/include/plumed/matrixtools/OuterProduct.h +238 -0
  169. plumed/_lib/include/plumed/maze/Core.h +65 -0
  170. plumed/_lib/include/plumed/maze/Loss.h +86 -0
  171. plumed/_lib/include/plumed/maze/Member.h +66 -0
  172. plumed/_lib/include/plumed/maze/Memetic.h +799 -0
  173. plumed/_lib/include/plumed/maze/Optimizer.h +357 -0
  174. plumed/_lib/include/plumed/maze/Random_MT.h +156 -0
  175. plumed/_lib/include/plumed/maze/Tools.h +183 -0
  176. plumed/_lib/include/plumed/metatomic/vesin.h +188 -0
  177. plumed/_lib/include/plumed/molfile/Gromacs.h +2013 -0
  178. plumed/_lib/include/plumed/molfile/endianswap.h +217 -0
  179. plumed/_lib/include/plumed/molfile/fastio.h +683 -0
  180. plumed/_lib/include/plumed/molfile/largefiles.h +78 -0
  181. plumed/_lib/include/plumed/molfile/libmolfile_plugin.h +77 -0
  182. plumed/_lib/include/plumed/molfile/molfile_plugin.h +1034 -0
  183. plumed/_lib/include/plumed/molfile/periodic_table.h +248 -0
  184. plumed/_lib/include/plumed/molfile/readpdb.h +447 -0
  185. plumed/_lib/include/plumed/molfile/vmdplugin.h +236 -0
  186. plumed/_lib/include/plumed/multicolvar/MultiColvarShortcuts.h +45 -0
  187. plumed/_lib/include/plumed/opes/ExpansionCVs.h +79 -0
  188. plumed/_lib/include/plumed/sasa/Sasa.h +32 -0
  189. plumed/_lib/include/plumed/secondarystructure/SecondaryStructureBase.h +372 -0
  190. plumed/_lib/include/plumed/setup/ActionSetup.h +25 -0
  191. plumed/_lib/include/plumed/small_vector/small_vector.h +6114 -0
  192. plumed/_lib/include/plumed/symfunc/CoordinationNumbers.h +41 -0
  193. plumed/_lib/include/plumed/tools/Angle.h +52 -0
  194. plumed/_lib/include/plumed/tools/AtomDistribution.h +138 -0
  195. plumed/_lib/include/plumed/tools/AtomNumber.h +152 -0
  196. plumed/_lib/include/plumed/tools/BiasRepresentation.h +106 -0
  197. plumed/_lib/include/plumed/tools/BitmaskEnum.h +167 -0
  198. plumed/_lib/include/plumed/tools/Brent1DRootSearch.h +159 -0
  199. plumed/_lib/include/plumed/tools/CheckInRange.h +44 -0
  200. plumed/_lib/include/plumed/tools/Citations.h +74 -0
  201. plumed/_lib/include/plumed/tools/ColvarOutput.h +118 -0
  202. plumed/_lib/include/plumed/tools/Communicator.h +316 -0
  203. plumed/_lib/include/plumed/tools/ConjugateGradient.h +80 -0
  204. plumed/_lib/include/plumed/tools/DLLoader.h +79 -0
  205. plumed/_lib/include/plumed/tools/ERMSD.h +73 -0
  206. plumed/_lib/include/plumed/tools/Exception.h +406 -0
  207. plumed/_lib/include/plumed/tools/File.h +28 -0
  208. plumed/_lib/include/plumed/tools/FileBase.h +153 -0
  209. plumed/_lib/include/plumed/tools/FileTools.h +37 -0
  210. plumed/_lib/include/plumed/tools/ForwardDecl.h +54 -0
  211. plumed/_lib/include/plumed/tools/Grid.h +638 -0
  212. plumed/_lib/include/plumed/tools/HistogramBead.h +136 -0
  213. plumed/_lib/include/plumed/tools/IFile.h +117 -0
  214. plumed/_lib/include/plumed/tools/KernelFunctions.h +113 -0
  215. plumed/_lib/include/plumed/tools/Keywords.h +380 -0
  216. plumed/_lib/include/plumed/tools/LatticeReduction.h +66 -0
  217. plumed/_lib/include/plumed/tools/LeptonCall.h +64 -0
  218. plumed/_lib/include/plumed/tools/LinkCells.h +126 -0
  219. plumed/_lib/include/plumed/tools/Log.h +41 -0
  220. plumed/_lib/include/plumed/tools/LoopUnroller.h +163 -0
  221. plumed/_lib/include/plumed/tools/Matrix.h +721 -0
  222. plumed/_lib/include/plumed/tools/MatrixSquareBracketsAccess.h +138 -0
  223. plumed/_lib/include/plumed/tools/MergeVectorTools.h +153 -0
  224. plumed/_lib/include/plumed/tools/Minimise1DBrent.h +244 -0
  225. plumed/_lib/include/plumed/tools/MinimiseBase.h +120 -0
  226. plumed/_lib/include/plumed/tools/MolDataClass.h +51 -0
  227. plumed/_lib/include/plumed/tools/NeighborList.h +112 -0
  228. plumed/_lib/include/plumed/tools/OFile.h +286 -0
  229. plumed/_lib/include/plumed/tools/OpenACC.h +180 -0
  230. plumed/_lib/include/plumed/tools/OpenMP.h +75 -0
  231. plumed/_lib/include/plumed/tools/PDB.h +154 -0
  232. plumed/_lib/include/plumed/tools/Pbc.h +139 -0
  233. plumed/_lib/include/plumed/tools/PlumedHandle.h +105 -0
  234. plumed/_lib/include/plumed/tools/RMSD.h +493 -0
  235. plumed/_lib/include/plumed/tools/Random.h +80 -0
  236. plumed/_lib/include/plumed/tools/RootFindingBase.h +79 -0
  237. plumed/_lib/include/plumed/tools/Stopwatch.h +475 -0
  238. plumed/_lib/include/plumed/tools/Subprocess.h +142 -0
  239. plumed/_lib/include/plumed/tools/SwitchingFunction.h +208 -0
  240. plumed/_lib/include/plumed/tools/Tensor.h +724 -0
  241. plumed/_lib/include/plumed/tools/TokenizedLine.h +123 -0
  242. plumed/_lib/include/plumed/tools/Tools.h +638 -0
  243. plumed/_lib/include/plumed/tools/Torsion.h +55 -0
  244. plumed/_lib/include/plumed/tools/TrajectoryParser.h +118 -0
  245. plumed/_lib/include/plumed/tools/Tree.h +61 -0
  246. plumed/_lib/include/plumed/tools/TypesafePtr.h +463 -0
  247. plumed/_lib/include/plumed/tools/Units.h +167 -0
  248. plumed/_lib/include/plumed/tools/Vector.h +433 -0
  249. plumed/_lib/include/plumed/tools/View.h +296 -0
  250. plumed/_lib/include/plumed/tools/View2D.h +100 -0
  251. plumed/_lib/include/plumed/tools/h36.h +39 -0
  252. plumed/_lib/include/plumed/vatom/ActionWithVirtualAtom.h +32 -0
  253. plumed/_lib/include/plumed/ves/BasisFunctions.h +380 -0
  254. plumed/_lib/include/plumed/ves/CoeffsBase.h +310 -0
  255. plumed/_lib/include/plumed/ves/CoeffsMatrix.h +220 -0
  256. plumed/_lib/include/plumed/ves/CoeffsVector.h +251 -0
  257. plumed/_lib/include/plumed/ves/FermiSwitchingFunction.h +74 -0
  258. plumed/_lib/include/plumed/ves/GridIntegrationWeights.h +50 -0
  259. plumed/_lib/include/plumed/ves/GridLinearInterpolation.h +81 -0
  260. plumed/_lib/include/plumed/ves/GridProjWeights.h +61 -0
  261. plumed/_lib/include/plumed/ves/LinearBasisSetExpansion.h +303 -0
  262. plumed/_lib/include/plumed/ves/Optimizer.h +444 -0
  263. plumed/_lib/include/plumed/ves/TargetDistModifer.h +53 -0
  264. plumed/_lib/include/plumed/ves/TargetDistribution.h +266 -0
  265. plumed/_lib/include/plumed/ves/VesBias.h +545 -0
  266. plumed/_lib/include/plumed/ves/VesTools.h +142 -0
  267. plumed/_lib/include/plumed/ves/WaveletGrid.h +75 -0
  268. plumed/_lib/include/plumed/volumes/ActionVolume.h +268 -0
  269. plumed/_lib/include/plumed/volumes/VolumeShortcut.h +147 -0
  270. plumed/_lib/include/plumed/wrapper/Plumed.h +5025 -0
  271. plumed/_lib/include/plumed/xdrfile/xdrfile.h +663 -0
  272. plumed/_lib/include/plumed/xdrfile/xdrfile_trr.h +89 -0
  273. plumed/_lib/include/plumed/xdrfile/xdrfile_xtc.h +90 -0
  274. plumed/_lib/lib/PythonCVInterface.so +0 -0
  275. plumed/_lib/lib/libplumed.a +0 -0
  276. plumed/_lib/lib/libplumed.so +0 -0
  277. plumed/_lib/lib/libplumedKernel.so +0 -0
  278. plumed/_lib/lib/libplumedWrapper.a +0 -0
  279. plumed/_lib/lib/pkgconfig/plumed.pc +13 -0
  280. plumed/_lib/lib/pkgconfig/plumedInternals.pc +13 -0
  281. plumed/_lib/lib/pkgconfig/plumedWrapper.pc +13 -0
  282. plumed/_lib/lib/plumed/fortran/plumed.f90 +879 -0
  283. plumed/_lib/lib/plumed/fortran/plumed_f08.f90 +2625 -0
  284. plumed/_lib/lib/plumed/modulefile +69 -0
  285. plumed/_lib/lib/plumed/patches/gromacs-2022.5.config +43 -0
  286. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/CMakeLists.txt +543 -0
  287. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/CMakeLists.txt.preplumed +540 -0
  288. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdlib/expanded.cpp +1628 -0
  289. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdlib/expanded.cpp.preplumed +1590 -0
  290. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdlib/expanded.h +103 -0
  291. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdlib/expanded.h.preplumed +99 -0
  292. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdlib/sim_util.cpp +2527 -0
  293. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdlib/sim_util.cpp.preplumed +2513 -0
  294. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/legacymdrunoptions.cpp +208 -0
  295. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/legacymdrunoptions.cpp.preplumed +175 -0
  296. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/legacymdrunoptions.h +408 -0
  297. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/legacymdrunoptions.h.preplumed +394 -0
  298. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/md.cpp +2348 -0
  299. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/md.cpp.preplumed +2091 -0
  300. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/minimize.cpp +3573 -0
  301. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/minimize.cpp.preplumed +3495 -0
  302. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/replicaexchange.cpp +1506 -0
  303. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/replicaexchange.cpp.preplumed +1402 -0
  304. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/replicaexchange.h +114 -0
  305. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/replicaexchange.h.preplumed +106 -0
  306. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/rerun.cpp +997 -0
  307. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/rerun.cpp.preplumed +906 -0
  308. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/runner.cpp +2780 -0
  309. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/runner.cpp.preplumed +2738 -0
  310. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/modularsimulator/expandedensembleelement.cpp +224 -0
  311. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/modularsimulator/expandedensembleelement.cpp.preplumed +222 -0
  312. plumed/_lib/lib/plumed/patches/gromacs-2023.5.config +43 -0
  313. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/CMakeLists.txt +549 -0
  314. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/CMakeLists.txt.preplumed +546 -0
  315. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdlib/expanded.cpp +1632 -0
  316. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdlib/expanded.cpp.preplumed +1594 -0
  317. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdlib/expanded.h +104 -0
  318. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdlib/expanded.h.preplumed +100 -0
  319. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdlib/sim_util.cpp +2624 -0
  320. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdlib/sim_util.cpp.preplumed +2610 -0
  321. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/legacymdrunoptions.cpp +208 -0
  322. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/legacymdrunoptions.cpp.preplumed +175 -0
  323. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/legacymdrunoptions.h +409 -0
  324. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/legacymdrunoptions.h.preplumed +395 -0
  325. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/md.cpp +2419 -0
  326. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/md.cpp.preplumed +2164 -0
  327. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/minimize.cpp +3546 -0
  328. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/minimize.cpp.preplumed +3468 -0
  329. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/replicaexchange.cpp +1513 -0
  330. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/replicaexchange.cpp.preplumed +1409 -0
  331. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/replicaexchange.h +114 -0
  332. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/replicaexchange.h.preplumed +106 -0
  333. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/rerun.cpp +991 -0
  334. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/rerun.cpp.preplumed +900 -0
  335. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/runner.cpp +2895 -0
  336. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/runner.cpp.preplumed +2849 -0
  337. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/modularsimulator/expandedensembleelement.cpp +224 -0
  338. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/modularsimulator/expandedensembleelement.cpp.preplumed +222 -0
  339. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/taskassignment/decidegpuusage.cpp +886 -0
  340. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/taskassignment/decidegpuusage.cpp.preplumed +880 -0
  341. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/taskassignment/include/gromacs/taskassignment/decidegpuusage.h +347 -0
  342. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/taskassignment/include/gromacs/taskassignment/decidegpuusage.h.preplumed +345 -0
  343. plumed/_lib/lib/plumed/patches/gromacs-2024.3.config +43 -0
  344. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/CMakeLists.txt +575 -0
  345. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/CMakeLists.txt.preplumed +572 -0
  346. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdlib/expanded.cpp +1632 -0
  347. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdlib/expanded.cpp.preplumed +1594 -0
  348. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdlib/expanded.h +104 -0
  349. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdlib/expanded.h.preplumed +100 -0
  350. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdlib/sim_util.cpp +2564 -0
  351. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdlib/sim_util.cpp.preplumed +2550 -0
  352. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/legacymdrunoptions.cpp +208 -0
  353. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/legacymdrunoptions.cpp.preplumed +175 -0
  354. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/legacymdrunoptions.h +410 -0
  355. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/legacymdrunoptions.h.preplumed +396 -0
  356. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/md.cpp +2435 -0
  357. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/md.cpp.preplumed +2187 -0
  358. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/minimize.cpp +3592 -0
  359. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/minimize.cpp.preplumed +3514 -0
  360. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/replicaexchange.cpp +1513 -0
  361. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/replicaexchange.cpp.preplumed +1409 -0
  362. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/replicaexchange.h +114 -0
  363. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/replicaexchange.h.preplumed +106 -0
  364. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/rerun.cpp +958 -0
  365. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/rerun.cpp.preplumed +929 -0
  366. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/runner.cpp +2987 -0
  367. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/runner.cpp.preplumed +2941 -0
  368. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/modularsimulator/expandedensembleelement.cpp +224 -0
  369. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/modularsimulator/expandedensembleelement.cpp.preplumed +222 -0
  370. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/taskassignment/decidegpuusage.cpp +904 -0
  371. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/taskassignment/decidegpuusage.cpp.preplumed +898 -0
  372. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/taskassignment/include/gromacs/taskassignment/decidegpuusage.h +353 -0
  373. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/taskassignment/include/gromacs/taskassignment/decidegpuusage.h.preplumed +351 -0
  374. plumed/_lib/lib/plumed/patches/gromacs-2025.0.config +39 -0
  375. plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/cmake/gmxManagePlumed.cmake +82 -0
  376. plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/cmake/gmxManagePlumed.cmake.preplumed +82 -0
  377. plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedMDModule.cpp +162 -0
  378. plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedMDModule.cpp.preplumed +154 -0
  379. plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedOptions.cpp +107 -0
  380. plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedOptions.cpp.preplumed +99 -0
  381. plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedOptions.h +120 -0
  382. plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedOptions.h.preplumed +111 -0
  383. plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedforceprovider.cpp +215 -0
  384. plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedforceprovider.cpp.preplumed +197 -0
  385. plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedforceprovider.h +87 -0
  386. plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedforceprovider.h.preplumed +86 -0
  387. plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/mdrun/runner.cpp +2971 -0
  388. plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/mdrun/runner.cpp.preplumed +2970 -0
  389. plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/mdrunutility/mdmodulesnotifiers.h +430 -0
  390. plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/mdrunutility/mdmodulesnotifiers.h.preplumed +429 -0
  391. plumed/_lib/lib/plumed/patches/namd-2.12.config +30 -0
  392. plumed/_lib/lib/plumed/patches/namd-2.12.diff +267 -0
  393. plumed/_lib/lib/plumed/patches/namd-2.13.config +30 -0
  394. plumed/_lib/lib/plumed/patches/namd-2.13.diff +267 -0
  395. plumed/_lib/lib/plumed/patches/namd-2.14.config +30 -0
  396. plumed/_lib/lib/plumed/patches/namd-2.14.diff +268 -0
  397. plumed/_lib/lib/plumed/patches/patch.sh +500 -0
  398. plumed/_lib/lib/plumed/patches/qespresso-5.0.2.config +25 -0
  399. plumed/_lib/lib/plumed/patches/qespresso-5.0.2.diff/PW/src/forces.f90 +368 -0
  400. plumed/_lib/lib/plumed/patches/qespresso-5.0.2.diff/PW/src/forces.f90.preplumed +366 -0
  401. plumed/_lib/lib/plumed/patches/qespresso-5.0.2.diff/PW/src/plugin_forces.f90 +71 -0
  402. plumed/_lib/lib/plumed/patches/qespresso-5.0.2.diff/PW/src/plugin_forces.f90.preplumed +24 -0
  403. plumed/_lib/lib/plumed/patches/qespresso-5.0.2.diff/PW/src/plugin_initialization.f90 +62 -0
  404. plumed/_lib/lib/plumed/patches/qespresso-5.0.2.diff/PW/src/plugin_initialization.f90.preplumed +21 -0
  405. plumed/_lib/lib/plumed/patches/qespresso-5.0.2.diff/PW/src/pwscf.f90 +189 -0
  406. plumed/_lib/lib/plumed/patches/qespresso-5.0.2.diff/PW/src/pwscf.f90.preplumed +185 -0
  407. plumed/_lib/lib/plumed/patches/qespresso-6.2.config +26 -0
  408. plumed/_lib/lib/plumed/patches/qespresso-6.2.diff/PW/src/forces.f90 +422 -0
  409. plumed/_lib/lib/plumed/patches/qespresso-6.2.diff/PW/src/forces.f90.preplumed +420 -0
  410. plumed/_lib/lib/plumed/patches/qespresso-6.2.diff/PW/src/plugin_ext_forces.f90 +70 -0
  411. plumed/_lib/lib/plumed/patches/qespresso-6.2.diff/PW/src/plugin_ext_forces.f90.preplumed +23 -0
  412. plumed/_lib/lib/plumed/patches/qespresso-6.2.diff/PW/src/plugin_initialization.f90 +62 -0
  413. plumed/_lib/lib/plumed/patches/qespresso-6.2.diff/PW/src/plugin_initialization.f90.preplumed +21 -0
  414. plumed/_lib/lib/plumed/patches/qespresso-6.2.diff/PW/src/run_pwscf.f90 +233 -0
  415. plumed/_lib/lib/plumed/patches/qespresso-6.2.diff/PW/src/run_pwscf.f90.preplumed +230 -0
  416. plumed/_lib/lib/plumed/patches/qespresso-7.0.config +28 -0
  417. plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/Modules/Makefile +175 -0
  418. plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/Modules/Makefile.preplumed +171 -0
  419. plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/PW/src/forces.f90 +486 -0
  420. plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/PW/src/forces.f90.preplumed +484 -0
  421. plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/PW/src/plugin_ext_forces.f90 +74 -0
  422. plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/PW/src/plugin_ext_forces.f90.preplumed +23 -0
  423. plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/PW/src/plugin_initialization.f90 +64 -0
  424. plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/PW/src/plugin_initialization.f90.preplumed +21 -0
  425. plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/PW/src/run_pwscf.f90 +532 -0
  426. plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/PW/src/run_pwscf.f90.preplumed +518 -0
  427. plumed/_lib/lib/plumed/patches/qespresso-7.2.config +28 -0
  428. plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/Modules/Makefile +249 -0
  429. plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/Modules/Makefile.preplumed +244 -0
  430. plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/PW/src/forces.f90 +532 -0
  431. plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/PW/src/forces.f90.preplumed +535 -0
  432. plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/PW/src/plugin_ext_forces.f90 +74 -0
  433. plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/PW/src/plugin_ext_forces.f90.preplumed +23 -0
  434. plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/PW/src/plugin_initialization.f90 +64 -0
  435. plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/PW/src/plugin_initialization.f90.preplumed +21 -0
  436. plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/PW/src/run_pwscf.f90 +569 -0
  437. plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/PW/src/run_pwscf.f90.preplumed +560 -0
  438. plumed/_lib/lib/plumed/plumed-config +9 -0
  439. plumed/_lib/lib/plumed/plumed-mklib +9 -0
  440. plumed/_lib/lib/plumed/plumed-newcv +9 -0
  441. plumed/_lib/lib/plumed/plumed-partial_tempering +9 -0
  442. plumed/_lib/lib/plumed/plumed-patch +9 -0
  443. plumed/_lib/lib/plumed/plumed-runtime +0 -0
  444. plumed/_lib/lib/plumed/plumed-selector +9 -0
  445. plumed/_lib/lib/plumed/plumed-vim2html +9 -0
  446. plumed/_lib/lib/plumed/scripts/config.sh +126 -0
  447. plumed/_lib/lib/plumed/scripts/mklib.sh +175 -0
  448. plumed/_lib/lib/plumed/scripts/newcv.sh +26 -0
  449. plumed/_lib/lib/plumed/scripts/partial_tempering.sh +319 -0
  450. plumed/_lib/lib/plumed/scripts/patch.sh +4 -0
  451. plumed/_lib/lib/plumed/scripts/selector.sh +234 -0
  452. plumed/_lib/lib/plumed/scripts/vim2html.sh +190 -0
  453. plumed/_lib/lib/plumed/src/colvar/Template.cpp +116 -0
  454. plumed/_lib/lib/plumed/src/config/compile_options.sh +3 -0
  455. plumed/_lib/lib/plumed/src/config/config.txt +179 -0
  456. plumed/_lib/lib/plumed/src/lib/Plumed.cmake +8 -0
  457. plumed/_lib/lib/plumed/src/lib/Plumed.cmake.runtime +5 -0
  458. plumed/_lib/lib/plumed/src/lib/Plumed.cmake.shared +5 -0
  459. plumed/_lib/lib/plumed/src/lib/Plumed.cmake.static +5 -0
  460. plumed/_lib/lib/plumed/src/lib/Plumed.inc +8 -0
  461. plumed/_lib/lib/plumed/src/lib/Plumed.inc.runtime +5 -0
  462. plumed/_lib/lib/plumed/src/lib/Plumed.inc.shared +5 -0
  463. plumed/_lib/lib/plumed/src/lib/Plumed.inc.static +5 -0
  464. plumed/_lib/lib/plumed/vim/scripts.vim +6 -0
  465. plumed/_plumed_core.cpython-311-aarch64-linux-gnu.so +0 -0
  466. plumed/_plumed_core.cpython-312-aarch64-linux-gnu.so +0 -0
  467. plumed/_plumed_core.cpython-313-aarch64-linux-gnu.so +0 -0
  468. plumed/_plumed_core.cpython-314-aarch64-linux-gnu.so +0 -0
  469. plumed/_plumed_core.cpython-314t-aarch64-linux-gnu.so +0 -0
  470. plumedCommunications.cpython-311-aarch64-linux-gnu.so +0 -0
  471. plumedCommunications.cpython-312-aarch64-linux-gnu.so +0 -0
  472. plumedCommunications.cpython-313-aarch64-linux-gnu.so +0 -0
  473. plumedCommunications.cpython-314-aarch64-linux-gnu.so +0 -0
  474. plumedCommunications.cpython-314t-aarch64-linux-gnu.so +0 -0
  475. plumedCommunications.pyi +431 -0
@@ -0,0 +1,286 @@
1
+ /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2
+ Copyright (c) 2008-2017, Petr Kobalicek
3
+
4
+ This software is provided 'as-is', without any express or implied
5
+ warranty. In no event will the authors be held liable for any damages
6
+ arising from the use of this software.
7
+
8
+ Permission is granted to anyone to use this software for any purpose,
9
+ including commercial applications, and to alter it and redistribute it
10
+ freely, subject to the following restrictions:
11
+
12
+ 1. The origin of this software must not be misrepresented; you must not
13
+ claim that you wrote the original software. If you use this software
14
+ in a product, an acknowledgment in the product documentation would be
15
+ appreciated but is not required.
16
+ 2. Altered source versions must be plainly marked as such, and must not be
17
+ misrepresented as being the original software.
18
+ 3. This notice may not be removed or altered from any source distribution.
19
+ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
20
+ #ifndef __PLUMED_asmjit_constpool_h
21
+ #define __PLUMED_asmjit_constpool_h
22
+ #ifdef __PLUMED_HAS_ASMJIT
23
+ #pragma GCC diagnostic push
24
+ #pragma GCC diagnostic ignored "-Wpedantic"
25
+ // [AsmJit]
26
+ // Complete x86/x64 JIT and Remote Assembler for C++.
27
+ //
28
+ // [License]
29
+ // Zlib - See LICENSE.md file in the package.
30
+
31
+ // [Guard]
32
+ #ifndef _ASMJIT_BASE_CONSTPOOL_H
33
+ #define _ASMJIT_BASE_CONSTPOOL_H
34
+
35
+ // [Dependencies]
36
+ #include "./zone.h"
37
+
38
+ // [Api-Begin]
39
+ #include "./asmjit_apibegin.h"
40
+
41
+ namespace PLMD {
42
+ namespace asmjit {
43
+
44
+ //! \addtogroup asmjit_base
45
+ //! \{
46
+
47
+ // ============================================================================
48
+ // [asmjit::ConstPool]
49
+ // ============================================================================
50
+
51
+ //! Constant pool.
52
+ class ConstPool {
53
+ public:
54
+ ASMJIT_NONCOPYABLE(ConstPool)
55
+
56
+ enum {
57
+ kIndex1 = 0,
58
+ kIndex2 = 1,
59
+ kIndex4 = 2,
60
+ kIndex8 = 3,
61
+ kIndex16 = 4,
62
+ kIndex32 = 5,
63
+ kIndexCount = 6
64
+ };
65
+
66
+ // --------------------------------------------------------------------------
67
+ // [Gap]
68
+ // --------------------------------------------------------------------------
69
+
70
+ //! \internal
71
+ //!
72
+ //! Zone-allocated const-pool gap.
73
+ struct Gap {
74
+ Gap* _next; //!< Pointer to the next gap
75
+ size_t _offset; //!< Offset of the gap.
76
+ size_t _length; //!< Remaining bytes of the gap (basically a gap size).
77
+ };
78
+
79
+ // --------------------------------------------------------------------------
80
+ // [Node]
81
+ // --------------------------------------------------------------------------
82
+
83
+ //! \internal
84
+ //!
85
+ //! Zone-allocated const-pool node.
86
+ struct Node {
87
+ ASMJIT_INLINE void* getData() const noexcept {
88
+ return static_cast<void*>(const_cast<ConstPool::Node*>(this) + 1);
89
+ }
90
+
91
+ Node* _link[2]; //!< Left/Right nodes.
92
+ uint32_t _level : 31; //!< Horizontal level for balance.
93
+ uint32_t _shared : 1; //!< If this constant is shared with another.
94
+ uint32_t _offset; //!< Data offset from the beginning of the pool.
95
+ };
96
+
97
+ // --------------------------------------------------------------------------
98
+ // [Tree]
99
+ // --------------------------------------------------------------------------
100
+
101
+ //! \internal
102
+ //!
103
+ //! Zone-allocated const-pool tree.
104
+ struct Tree {
105
+ enum {
106
+ //! Maximum tree height == log2(1 << 64).
107
+ kHeightLimit = 64
108
+ };
109
+
110
+ // --------------------------------------------------------------------------
111
+ // [Construction / Destruction]
112
+ // --------------------------------------------------------------------------
113
+
114
+ ASMJIT_INLINE Tree(size_t dataSize = 0) noexcept
115
+ : _root(nullptr),
116
+ _length(0),
117
+ _dataSize(dataSize) {}
118
+ ASMJIT_INLINE ~Tree() {}
119
+
120
+ // --------------------------------------------------------------------------
121
+ // [Reset]
122
+ // --------------------------------------------------------------------------
123
+
124
+ ASMJIT_INLINE void reset() noexcept {
125
+ _root = nullptr;
126
+ _length = 0;
127
+ }
128
+
129
+ // --------------------------------------------------------------------------
130
+ // [Accessors]
131
+ // --------------------------------------------------------------------------
132
+
133
+ ASMJIT_INLINE bool isEmpty() const noexcept { return _length == 0; }
134
+ ASMJIT_INLINE size_t getLength() const noexcept { return _length; }
135
+
136
+ ASMJIT_INLINE void setDataSize(size_t dataSize) noexcept {
137
+ ASMJIT_ASSERT(isEmpty());
138
+ _dataSize = dataSize;
139
+ }
140
+
141
+ // --------------------------------------------------------------------------
142
+ // [Ops]
143
+ // --------------------------------------------------------------------------
144
+
145
+ ASMJIT_API Node* get(const void* data) noexcept;
146
+ ASMJIT_API void put(Node* node) noexcept;
147
+
148
+ // --------------------------------------------------------------------------
149
+ // [Iterate]
150
+ // --------------------------------------------------------------------------
151
+
152
+ template<typename Visitor>
153
+ ASMJIT_INLINE void iterate(Visitor& visitor) const noexcept {
154
+ Node* node = const_cast<Node*>(_root);
155
+ if (!node) return;
156
+
157
+ Node* stack[kHeightLimit];
158
+ size_t top = 0;
159
+
160
+ for (;;) {
161
+ Node* left = node->_link[0];
162
+ if (left != nullptr) {
163
+ ASMJIT_ASSERT(top != kHeightLimit);
164
+ stack[top++] = node;
165
+
166
+ node = left;
167
+ continue;
168
+ }
169
+
170
+ Visit:
171
+ visitor.visit(node);
172
+ node = node->_link[1];
173
+ if (node != nullptr)
174
+ continue;
175
+
176
+ if (top == 0)
177
+ return;
178
+
179
+ node = stack[--top];
180
+ goto Visit;
181
+ }
182
+ }
183
+
184
+ // --------------------------------------------------------------------------
185
+ // [Helpers]
186
+ // --------------------------------------------------------------------------
187
+
188
+ static ASMJIT_INLINE Node* _newNode(Zone* zone, const void* data, size_t size, size_t offset, bool shared) noexcept {
189
+ Node* node = zone->allocT<Node>(sizeof(Node) + size);
190
+ if (ASMJIT_UNLIKELY(!node)) return nullptr;
191
+
192
+ node->_link[0] = nullptr;
193
+ node->_link[1] = nullptr;
194
+ node->_level = 1;
195
+ node->_shared = shared;
196
+ node->_offset = static_cast<uint32_t>(offset);
197
+
198
+ ::memcpy(node->getData(), data, size);
199
+ return node;
200
+ }
201
+
202
+ // --------------------------------------------------------------------------
203
+ // [Members]
204
+ // --------------------------------------------------------------------------
205
+
206
+ Node* _root; //!< Root of the tree
207
+ size_t _length; //!< Length of the tree (count of nodes).
208
+ size_t _dataSize; //!< Size of the data.
209
+ };
210
+
211
+ // --------------------------------------------------------------------------
212
+ // [Construction / Destruction]
213
+ // --------------------------------------------------------------------------
214
+
215
+ ASMJIT_API ConstPool(Zone* zone) noexcept;
216
+ ASMJIT_API ~ConstPool() noexcept;
217
+
218
+ // --------------------------------------------------------------------------
219
+ // [Reset]
220
+ // --------------------------------------------------------------------------
221
+
222
+ ASMJIT_API void reset(Zone* zone) noexcept;
223
+
224
+ // --------------------------------------------------------------------------
225
+ // [Ops]
226
+ // --------------------------------------------------------------------------
227
+
228
+ //! Get whether the constant-pool is empty.
229
+ ASMJIT_INLINE bool isEmpty() const noexcept { return _size == 0; }
230
+ //! Get the size of the constant-pool in bytes.
231
+ ASMJIT_INLINE size_t getSize() const noexcept { return _size; }
232
+ //! Get minimum alignment.
233
+ ASMJIT_INLINE size_t getAlignment() const noexcept { return _alignment; }
234
+
235
+ //! Add a constant to the constant pool.
236
+ //!
237
+ //! The constant must have known size, which is 1, 2, 4, 8, 16 or 32 bytes.
238
+ //! The constant is added to the pool only if it doesn't not exist, otherwise
239
+ //! cached value is returned.
240
+ //!
241
+ //! AsmJit is able to subdivide added constants, so for example if you add
242
+ //! 8-byte constant 0x1122334455667788 it will create the following slots:
243
+ //!
244
+ //! 8-byte: 0x1122334455667788
245
+ //! 4-byte: 0x11223344, 0x55667788
246
+ //!
247
+ //! The reason is that when combining MMX/SSE/AVX code some patterns are used
248
+ //! frequently. However, AsmJit is not able to reallocate a constant that has
249
+ //! been already added. For example if you try to add 4-byte constant and then
250
+ //! 8-byte constant having the same 4-byte pattern as the previous one, two
251
+ //! independent slots will be generated by the pool.
252
+ ASMJIT_API Error add(const void* data, size_t size, size_t& dstOffset) noexcept;
253
+
254
+ // --------------------------------------------------------------------------
255
+ // [Fill]
256
+ // --------------------------------------------------------------------------
257
+
258
+ //! Fill the destination with the constants from the pool.
259
+ ASMJIT_API void fill(void* dst) const noexcept;
260
+
261
+ // --------------------------------------------------------------------------
262
+ // [Members]
263
+ // --------------------------------------------------------------------------
264
+
265
+ Zone* _zone; //!< Zone allocator.
266
+ Tree _tree[kIndexCount]; //!< Tree per size.
267
+ Gap* _gaps[kIndexCount]; //!< Gaps per size.
268
+ Gap* _gapPool; //!< Gaps pool
269
+
270
+ size_t _size; //!< Size of the pool (in bytes).
271
+ size_t _alignment; //!< Required pool alignment.
272
+ };
273
+
274
+ //! \}
275
+
276
+ } // asmjit namespace
277
+ } // namespace PLMD
278
+
279
+ // [Api-End]
280
+ #include "./asmjit_apiend.h"
281
+
282
+ // [Guard]
283
+ #endif // _ASMJIT_BASE_CONSTPOOL_H
284
+ #pragma GCC diagnostic pop
285
+ #endif // __PLUMED_HAS_ASMJIT
286
+ #endif
@@ -0,0 +1,402 @@
1
+ /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2
+ Copyright (c) 2008-2017, Petr Kobalicek
3
+
4
+ This software is provided 'as-is', without any express or implied
5
+ warranty. In no event will the authors be held liable for any damages
6
+ arising from the use of this software.
7
+
8
+ Permission is granted to anyone to use this software for any purpose,
9
+ including commercial applications, and to alter it and redistribute it
10
+ freely, subject to the following restrictions:
11
+
12
+ 1. The origin of this software must not be misrepresented; you must not
13
+ claim that you wrote the original software. If you use this software
14
+ in a product, an acknowledgment in the product documentation would be
15
+ appreciated but is not required.
16
+ 2. Altered source versions must be plainly marked as such, and must not be
17
+ misrepresented as being the original software.
18
+ 3. This notice may not be removed or altered from any source distribution.
19
+ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
20
+ #ifndef __PLUMED_asmjit_cpuinfo_h
21
+ #define __PLUMED_asmjit_cpuinfo_h
22
+ #ifdef __PLUMED_HAS_ASMJIT
23
+ #pragma GCC diagnostic push
24
+ #pragma GCC diagnostic ignored "-Wpedantic"
25
+ // [AsmJit]
26
+ // Complete x86/x64 JIT and Remote Assembler for C++.
27
+ //
28
+ // [License]
29
+ // Zlib - See LICENSE.md file in the package.
30
+
31
+ // [Guard]
32
+ #ifndef _ASMJIT_BASE_CPUINFO_H
33
+ #define _ASMJIT_BASE_CPUINFO_H
34
+
35
+ // [Dependencies]
36
+ #include "./arch.h"
37
+
38
+ // [Api-Begin]
39
+ #include "./asmjit_apibegin.h"
40
+
41
+ namespace PLMD {
42
+ namespace asmjit {
43
+
44
+ //! \addtogroup asmjit_base
45
+ //! \{
46
+
47
+ // ============================================================================
48
+ // [asmjit::CpuFeatures]
49
+ // ============================================================================
50
+
51
+ class CpuFeatures {
52
+ public:
53
+ typedef uintptr_t BitWord;
54
+
55
+ enum {
56
+ kMaxFeatures = 128,
57
+ kBitWordSize = static_cast<int>(sizeof(BitWord)) * 8,
58
+ kNumBitWords = kMaxFeatures / kBitWordSize
59
+ };
60
+
61
+ // --------------------------------------------------------------------------
62
+ // [Construction / Destruction]
63
+ // --------------------------------------------------------------------------
64
+
65
+ ASMJIT_INLINE CpuFeatures() noexcept { reset(); }
66
+ ASMJIT_INLINE CpuFeatures(const CpuFeatures& other) noexcept = default;
67
+
68
+ // --------------------------------------------------------------------------
69
+ // [Init / Reset]
70
+ // --------------------------------------------------------------------------
71
+
72
+ ASMJIT_INLINE void init(const CpuFeatures& other) noexcept { ::memcpy(this, &other, sizeof(*this)); }
73
+ ASMJIT_INLINE void reset() noexcept { ::memset(this, 0, sizeof(*this)); }
74
+
75
+ // --------------------------------------------------------------------------
76
+ // [Ops]
77
+ // --------------------------------------------------------------------------
78
+
79
+ //! Get all features as `BitWord` array.
80
+ ASMJIT_INLINE BitWord* getBits() noexcept { return _bits; }
81
+ //! Get all features as `BitWord` array (const).
82
+ ASMJIT_INLINE const BitWord* getBits() const noexcept { return _bits; }
83
+
84
+ //! Get if feature `feature` is present.
85
+ ASMJIT_INLINE bool has(uint32_t feature) const noexcept {
86
+ ASMJIT_ASSERT(feature < kMaxFeatures);
87
+
88
+ uint32_t idx = feature / kBitWordSize;
89
+ uint32_t bit = feature % kBitWordSize;
90
+
91
+ return static_cast<bool>((_bits[idx] >> bit) & 0x1);
92
+ }
93
+
94
+ //! Get if all features as defined by `other` are present.
95
+ ASMJIT_INLINE bool hasAll(const CpuFeatures& other) const noexcept {
96
+ for (uint32_t i = 0; i < kNumBitWords; i++)
97
+ if ((_bits[i] & other._bits[i]) != other._bits[i])
98
+ return false;
99
+ return true;
100
+ }
101
+
102
+ //! Add a CPU `feature`.
103
+ ASMJIT_INLINE CpuFeatures& add(uint32_t feature) noexcept {
104
+ ASMJIT_ASSERT(feature < kMaxFeatures);
105
+
106
+ uint32_t idx = feature / kBitWordSize;
107
+ uint32_t bit = feature % kBitWordSize;
108
+
109
+ _bits[idx] |= static_cast<BitWord>(1) << bit;
110
+ return *this;
111
+ }
112
+
113
+ //! Remove a CPU `feature`.
114
+ ASMJIT_INLINE CpuFeatures& remove(uint32_t feature) noexcept {
115
+ ASMJIT_ASSERT(feature < kMaxFeatures);
116
+
117
+ uint32_t idx = feature / kBitWordSize;
118
+ uint32_t bit = feature % kBitWordSize;
119
+
120
+ _bits[idx] &= ~(static_cast<BitWord>(1) << bit);
121
+ return *this;
122
+ }
123
+
124
+ // --------------------------------------------------------------------------
125
+ // [Members]
126
+ // --------------------------------------------------------------------------
127
+
128
+ BitWord _bits[kNumBitWords];
129
+ };
130
+
131
+ // ============================================================================
132
+ // [asmjit::CpuInfo]
133
+ // ============================================================================
134
+
135
+ //! CPU information.
136
+ class CpuInfo {
137
+ public:
138
+ //! CPU vendor ID.
139
+ ASMJIT_ENUM(Vendor) {
140
+ kVendorNone = 0, //!< Generic or unknown.
141
+ kVendorIntel = 1, //!< Intel vendor.
142
+ kVendorAMD = 2, //!< AMD vendor.
143
+ kVendorVIA = 3 //!< VIA vendor.
144
+ };
145
+
146
+ //! ARM/ARM64 CPU features.
147
+ ASMJIT_ENUM(ArmFeatures) {
148
+ kArmFeatureV6 = 1, //!< ARMv6 instruction set.
149
+ kArmFeatureV7, //!< ARMv7 instruction set.
150
+ kArmFeatureV8, //!< ARMv8 instruction set.
151
+ kArmFeatureTHUMB, //!< CPU provides THUMB v1 instruction set (THUMB mode).
152
+ kArmFeatureTHUMB2, //!< CPU provides THUMB v2 instruction set (THUMB mode).
153
+ kArmFeatureVFPv2, //!< CPU provides VFPv2 instruction set.
154
+ kArmFeatureVFPv3, //!< CPU provides VFPv3 instruction set.
155
+ kArmFeatureVFPv4, //!< CPU provides VFPv4 instruction set.
156
+ kArmFeatureVFP_D32, //!< CPU provides 32 VFP-D (64-bit) registers.
157
+ kArmFeatureEDSP, //!< CPU provides EDSP extensions.
158
+ kArmFeatureASIMD, //!< CPU provides 'Advanced SIMD'.
159
+ kArmFeatureIDIVA, //!< CPU provides hardware SDIV and UDIV (ARM mode).
160
+ kArmFeatureIDIVT, //!< CPU provides hardware SDIV and UDIV (THUMB mode).
161
+ kArmFeatureAES, //!< CPU provides AES instructions (ARM64 only).
162
+ kArmFeatureCRC32, //!< CPU provides CRC32 instructions.
163
+ kArmFeaturePMULL, //!< CPU provides PMULL instructions (ARM64 only).
164
+ kArmFeatureSHA1, //!< CPU provides SHA1 instructions.
165
+ kArmFeatureSHA256, //!< CPU provides SHA256 instructions.
166
+ kArmFeatureAtomics64, //!< CPU provides 64-bit load/store atomics (ARM64 only).
167
+
168
+ kArmFeaturesCount //!< Count of ARM/ARM64 CPU features.
169
+ };
170
+
171
+ //! X86/X64 CPU features.
172
+ ASMJIT_ENUM(X86Features) {
173
+ kX86FeatureI486 = 1, //!< CPU is at least I486.
174
+ kX86FeatureNX, //!< CPU has Not-Execute-Bit.
175
+ kX86FeatureMT, //!< CPU has multi-threading.
176
+ kX86FeatureALTMOVCR8, //!< CPU supports `LOCK MOV CR8` (AMD CPUs).
177
+ kX86FeatureCMOV, //!< CPU has CMOV.
178
+ kX86FeatureCMPXCHG8B, //!< CPU has CMPXCHG8B.
179
+ kX86FeatureCMPXCHG16B, //!< CPU has CMPXCHG16B (x64).
180
+ kX86FeatureMSR, //!< CPU has RDMSR/WRMSR.
181
+ kX86FeatureRDTSC, //!< CPU has RDTSC.
182
+ kX86FeatureRDTSCP, //!< CPU has RDTSCP.
183
+ kX86FeatureCLFLUSH, //!< CPU has CLFUSH.
184
+ kX86FeatureCLFLUSHOPT, //!< CPU has CLFUSHOPT.
185
+ kX86FeatureCLWB, //!< CPU has CLWB.
186
+ kX86FeatureCLZERO, //!< CPU has CLZERO.
187
+ kX86FeaturePCOMMIT, //!< CPU has PCOMMIT.
188
+ kX86FeaturePREFETCHW, //!< CPU has PREFETCHW.
189
+ kX86FeaturePREFETCHWT1, //!< CPU has PREFETCHWT1.
190
+ kX86FeatureLAHFSAHF, //!< CPU has LAHF/SAHF.
191
+ kX86FeatureFXSR, //!< CPU has FXSAVE/FXRSTOR.
192
+ kX86FeatureFXSROPT, //!< CPU has FXSAVE/FXRSTOR (optimized).
193
+ kX86FeatureMMX, //!< CPU has MMX.
194
+ kX86FeatureMMX2, //!< CPU has extended MMX.
195
+ kX86Feature3DNOW, //!< CPU has 3DNOW.
196
+ kX86Feature3DNOW2, //!< CPU has 3DNOW2 (enhanced).
197
+ kX86FeatureGEODE, //!< CPU has GEODE extensions (few additions to 3DNOW).
198
+ kX86FeatureSSE, //!< CPU has SSE.
199
+ kX86FeatureSSE2, //!< CPU has SSE2.
200
+ kX86FeatureSSE3, //!< CPU has SSE3.
201
+ kX86FeatureSSSE3, //!< CPU has SSSE3.
202
+ kX86FeatureSSE4A, //!< CPU has SSE4.A.
203
+ kX86FeatureSSE4_1, //!< CPU has SSE4.1.
204
+ kX86FeatureSSE4_2, //!< CPU has SSE4.2.
205
+ kX86FeatureMSSE, //!< CPU has Misaligned SSE (MSSE).
206
+ kX86FeatureMONITOR, //!< CPU has MONITOR and MWAIT.
207
+ kX86FeatureMOVBE, //!< CPU has MOVBE.
208
+ kX86FeaturePOPCNT, //!< CPU has POPCNT.
209
+ kX86FeatureLZCNT, //!< CPU has LZCNT.
210
+ kX86FeatureAESNI, //!< CPU has AESNI.
211
+ kX86FeaturePCLMULQDQ, //!< CPU has PCLMULQDQ.
212
+ kX86FeatureRDRAND, //!< CPU has RDRAND.
213
+ kX86FeatureRDSEED, //!< CPU has RDSEED.
214
+ kX86FeatureSMAP, //!< CPU has SMAP (supervisor-mode access prevention).
215
+ kX86FeatureSMEP, //!< CPU has SMEP (supervisor-mode execution prevention).
216
+ kX86FeatureSHA, //!< CPU has SHA-1 and SHA-256.
217
+ kX86FeatureXSAVE, //!< CPU has XSAVE support (XSAVE/XRSTOR, XSETBV/XGETBV, and XCR).
218
+ kX86FeatureXSAVEC, //!< CPU has XSAVEC support (XSAVEC).
219
+ kX86FeatureXSAVES, //!< CPU has XSAVES support (XSAVES/XRSTORS).
220
+ kX86FeatureXSAVEOPT, //!< CPU has XSAVEOPT support (XSAVEOPT/XSAVEOPT64).
221
+ kX86FeatureOSXSAVE, //!< CPU has XSAVE enabled by OS.
222
+ kX86FeatureAVX, //!< CPU has AVX.
223
+ kX86FeatureAVX2, //!< CPU has AVX2.
224
+ kX86FeatureF16C, //!< CPU has F16C.
225
+ kX86FeatureFMA, //!< CPU has FMA.
226
+ kX86FeatureFMA4, //!< CPU has FMA4.
227
+ kX86FeatureXOP, //!< CPU has XOP.
228
+ kX86FeatureBMI, //!< CPU has BMI (bit manipulation instructions #1).
229
+ kX86FeatureBMI2, //!< CPU has BMI2 (bit manipulation instructions #2).
230
+ kX86FeatureADX, //!< CPU has ADX (multi-precision add-carry instruction extensions).
231
+ kX86FeatureTBM, //!< CPU has TBM (trailing bit manipulation).
232
+ kX86FeatureMPX, //!< CPU has MPX (memory protection extensions).
233
+ kX86FeatureHLE, //!< CPU has HLE.
234
+ kX86FeatureRTM, //!< CPU has RTM.
235
+ kX86FeatureTSX, //!< CPU has TSX.
236
+ kX86FeatureERMS, //!< CPU has ERMS (enhanced REP MOVSB/STOSB).
237
+ kX86FeatureFSGSBASE, //!< CPU has FSGSBASE.
238
+ kX86FeatureAVX512_F, //!< CPU has AVX512-F (foundation).
239
+ kX86FeatureAVX512_CDI, //!< CPU has AVX512-CDI (conflict detection).
240
+ kX86FeatureAVX512_PFI, //!< CPU has AVX512-PFI (prefetch instructions).
241
+ kX86FeatureAVX512_ERI, //!< CPU has AVX512-ERI (exponential and reciprocal).
242
+ kX86FeatureAVX512_DQ, //!< CPU has AVX512-DQ (DWORD/QWORD).
243
+ kX86FeatureAVX512_BW, //!< CPU has AVX512-BW (BYTE/WORD).
244
+ kX86FeatureAVX512_VL, //!< CPU has AVX512-VL (vector length extensions).
245
+ kX86FeatureAVX512_IFMA, //!< CPU has AVX512-IFMA (integer fused-multiply-add using 52-bit precision).
246
+ kX86FeatureAVX512_VBMI, //!< CPU has AVX512-VBMI (vector byte manipulation).
247
+ kX86FeatureAVX512_VPOPCNTDQ, //!< CPU has AVX512-VPOPCNTDQ (VPOPCNT[D|Q] instructions).
248
+ kX86FeatureAVX512_4VNNIW, //!< CPU has AVX512-VNNIW (vector NN instructions word variable precision).
249
+ kX86FeatureAVX512_4FMAPS, //!< CPU has AVX512-FMAPS (FMA packed single).
250
+
251
+ kX86FeaturesCount //!< Count of X86/X64 CPU features.
252
+ };
253
+
254
+ // --------------------------------------------------------------------------
255
+ // [ArmInfo]
256
+ // --------------------------------------------------------------------------
257
+
258
+ struct ArmData {
259
+ };
260
+
261
+ // --------------------------------------------------------------------------
262
+ // [X86Info]
263
+ // --------------------------------------------------------------------------
264
+
265
+ struct X86Data {
266
+ uint32_t _processorType; //!< Processor type.
267
+ uint32_t _brandIndex; //!< Brand index.
268
+ uint32_t _flushCacheLineSize; //!< Flush cache line size (in bytes).
269
+ uint32_t _maxLogicalProcessors; //!< Maximum number of addressable IDs for logical processors.
270
+ };
271
+
272
+ // --------------------------------------------------------------------------
273
+ // [Construction / Destruction]
274
+ // --------------------------------------------------------------------------
275
+
276
+ ASMJIT_INLINE CpuInfo() noexcept { reset(); }
277
+ ASMJIT_INLINE CpuInfo(const CpuInfo& other) noexcept = default;
278
+
279
+ // --------------------------------------------------------------------------
280
+ // [Init / Reset]
281
+ // --------------------------------------------------------------------------
282
+
283
+ //! Initialize CpuInfo to the given architecture, see \ArchInfo.
284
+ ASMJIT_INLINE void initArch(uint32_t archType, uint32_t archMode = 0) noexcept {
285
+ _archInfo.init(archType, archMode);
286
+ }
287
+
288
+ ASMJIT_INLINE void init(const CpuInfo& other) noexcept { ::memcpy(this, &other, sizeof(*this)); }
289
+ ASMJIT_INLINE void reset() noexcept { ::memset(this, 0, sizeof(*this)); }
290
+
291
+ // --------------------------------------------------------------------------
292
+ // [Detect]
293
+ // --------------------------------------------------------------------------
294
+
295
+ ASMJIT_API void detect() noexcept;
296
+
297
+ // --------------------------------------------------------------------------
298
+ // [Accessors]
299
+ // --------------------------------------------------------------------------
300
+
301
+ //! Get generic architecture information.
302
+ ASMJIT_INLINE const ArchInfo& getArchInfo() const noexcept { return _archInfo; }
303
+ //! Get CPU architecture type, see \ArchInfo::Type.
304
+ ASMJIT_INLINE uint32_t getArchType() const noexcept { return _archInfo.getType(); }
305
+ //! Get CPU architecture sub-type, see \ArchInfo::SubType.
306
+ ASMJIT_INLINE uint32_t getArchSubType() const noexcept { return _archInfo.getSubType(); }
307
+
308
+ //! Get CPU vendor ID.
309
+ ASMJIT_INLINE uint32_t getVendorId() const noexcept { return _vendorId; }
310
+ //! Get CPU family ID.
311
+ ASMJIT_INLINE uint32_t getFamily() const noexcept { return _family; }
312
+ //! Get CPU model ID.
313
+ ASMJIT_INLINE uint32_t getModel() const noexcept { return _model; }
314
+ //! Get CPU stepping.
315
+ ASMJIT_INLINE uint32_t getStepping() const noexcept { return _stepping; }
316
+
317
+ //! Get number of hardware threads available.
318
+ ASMJIT_INLINE uint32_t getHwThreadsCount() const noexcept {
319
+ return _hwThreadsCount;
320
+ }
321
+
322
+ //! Get all CPU features.
323
+ ASMJIT_INLINE const CpuFeatures& getFeatures() const noexcept { return _features; }
324
+ //! Get whether CPU has a `feature`.
325
+ ASMJIT_INLINE bool hasFeature(uint32_t feature) const noexcept { return _features.has(feature); }
326
+ //! Add a CPU `feature`.
327
+ ASMJIT_INLINE CpuInfo& addFeature(uint32_t feature) noexcept { _features.add(feature); return *this; }
328
+
329
+ //! Get CPU vendor string.
330
+ ASMJIT_INLINE const char* getVendorString() const noexcept { return _vendorString; }
331
+ //! Get CPU brand string.
332
+ ASMJIT_INLINE const char* getBrandString() const noexcept { return _brandString; }
333
+
334
+ // --------------------------------------------------------------------------
335
+ // [Accessors - ARM]
336
+ // --------------------------------------------------------------------------
337
+
338
+ // --------------------------------------------------------------------------
339
+ // [Accessors - X86]
340
+ // --------------------------------------------------------------------------
341
+
342
+ //! Get processor type.
343
+ ASMJIT_INLINE uint32_t getX86ProcessorType() const noexcept {
344
+ return _x86Data._processorType;
345
+ }
346
+
347
+ //! Get brand index.
348
+ ASMJIT_INLINE uint32_t getX86BrandIndex() const noexcept {
349
+ return _x86Data._brandIndex;
350
+ }
351
+
352
+ //! Get flush cache line size.
353
+ ASMJIT_INLINE uint32_t getX86FlushCacheLineSize() const noexcept {
354
+ return _x86Data._flushCacheLineSize;
355
+ }
356
+
357
+ //! Get maximum logical processors count.
358
+ ASMJIT_INLINE uint32_t getX86MaxLogicalProcessors() const noexcept {
359
+ return _x86Data._maxLogicalProcessors;
360
+ }
361
+
362
+ // --------------------------------------------------------------------------
363
+ // [Statics]
364
+ // --------------------------------------------------------------------------
365
+
366
+ //! Get the host CPU information.
367
+ ASMJIT_API static const CpuInfo& getHost() noexcept;
368
+
369
+ // --------------------------------------------------------------------------
370
+ // [Members]
371
+ // --------------------------------------------------------------------------
372
+
373
+ ArchInfo _archInfo; //!< CPU architecture information.
374
+ uint32_t _vendorId; //!< CPU vendor id, see \ref Vendor.
375
+ uint32_t _family; //!< CPU family ID.
376
+ uint32_t _model; //!< CPU model ID.
377
+ uint32_t _stepping; //!< CPU stepping.
378
+ uint32_t _hwThreadsCount; //!< Number of hardware threads.
379
+ CpuFeatures _features; //!< CPU features.
380
+ char _vendorString[16]; //!< CPU vendor string.
381
+ char _brandString[64]; //!< CPU brand string.
382
+
383
+ // Architecture specific data.
384
+ union {
385
+ ArmData _armData;
386
+ X86Data _x86Data;
387
+ };
388
+ };
389
+
390
+ //! \}
391
+
392
+ } // asmjit namespace
393
+ } // namespace PLMD
394
+
395
+ // [Api-End]
396
+ #include "./asmjit_apiend.h"
397
+
398
+ // [Guard]
399
+ #endif // _ASMJIT_BASE_CPUINFO_H
400
+ #pragma GCC diagnostic pop
401
+ #endif // __PLUMED_HAS_ASMJIT
402
+ #endif