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,528 @@
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_codeemitter_h
21
+ #define __PLUMED_asmjit_codeemitter_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_CODEEMITTER_H
33
+ #define _ASMJIT_BASE_CODEEMITTER_H
34
+
35
+ // [Dependencies]
36
+ #include "./arch.h"
37
+ #include "./codeholder.h"
38
+ #include "./operand.h"
39
+
40
+ // [Api-Begin]
41
+ #include "./asmjit_apibegin.h"
42
+
43
+ namespace PLMD {
44
+ namespace asmjit {
45
+
46
+ //! \addtogroup asmjit_base
47
+ //! \{
48
+
49
+ // ============================================================================
50
+ // [Forward Declarations]
51
+ // ============================================================================
52
+
53
+ class ConstPool;
54
+
55
+ // ============================================================================
56
+ // [asmjit::CodeEmitter]
57
+ // ============================================================================
58
+
59
+ //! Provides a base foundation to emit code - specialized by \ref Assembler and
60
+ //! \ref CodeBuilder.
61
+ class ASMJIT_VIRTAPI CodeEmitter {
62
+ public:
63
+ //! CodeEmitter type.
64
+ ASMJIT_ENUM(Type) {
65
+ kTypeNone = 0,
66
+ kTypeAssembler = 1,
67
+ kTypeBuilder = 2,
68
+ kTypeCompiler = 3,
69
+ kTypeCount = 4
70
+ };
71
+
72
+ //! CodeEmitter hints - global settings that affect machine-code generation.
73
+ ASMJIT_ENUM(Hints) {
74
+ //! Emit optimized code-alignment sequences.
75
+ //!
76
+ //! Default `true`.
77
+ //!
78
+ //! X86/X64 Specific
79
+ //! ----------------
80
+ //!
81
+ //! Default align sequence used by X86/X64 architecture is one-byte (0x90)
82
+ //! opcode that is often shown by disassemblers as nop. However there are
83
+ //! more optimized align sequences for 2-11 bytes that may execute faster.
84
+ //! If this feature is enabled AsmJit will generate specialized sequences
85
+ //! for alignment between 2 to 11 bytes.
86
+ kHintOptimizedAlign = 0x00000001U,
87
+
88
+ //! Emit jump-prediction hints.
89
+ //!
90
+ //! Default `false`.
91
+ //!
92
+ //! X86/X64 Specific
93
+ //! ----------------
94
+ //!
95
+ //! Jump prediction is usually based on the direction of the jump. If the
96
+ //! jump is backward it is usually predicted as taken; and if the jump is
97
+ //! forward it is usually predicted as not-taken. The reason is that loops
98
+ //! generally use backward jumps and conditions usually use forward jumps.
99
+ //! However this behavior can be overridden by using instruction prefixes.
100
+ //! If this option is enabled these hints will be emitted.
101
+ //!
102
+ //! This feature is disabled by default, because the only processor that
103
+ //! used to take into consideration prediction hints was P4. Newer processors
104
+ //! implement heuristics for branch prediction that ignores any static hints.
105
+ kHintPredictedJumps = 0x00000002U
106
+ };
107
+
108
+ //! CodeEmitter options that are merged with instruction options.
109
+ ASMJIT_ENUM(Options) {
110
+ //! Reserved, used to check for errors in `Assembler::_emit()`. In addition,
111
+ //! if an emitter is in error state it will have `kOptionMaybeFailureCase`
112
+ //! set
113
+ kOptionMaybeFailureCase = 0x00000001U,
114
+
115
+ //! Perform a strict validation before the instruction is emitted.
116
+ kOptionStrictValidation = 0x00000002U,
117
+
118
+ //! Logging is enabled and `CodeHolder::getLogger()` should return a valid
119
+ //! \ref Logger pointer.
120
+ kOptionLoggingEnabled = 0x00000004U,
121
+
122
+ //! Mask of all internal options that are not used to represent instruction
123
+ //! options, but are used to instrument Assembler and CodeBuilder. These
124
+ //! options are internal and should not be used outside of AsmJit itself.
125
+ //!
126
+ //! NOTE: Reserved options should never appear in `CBInst` options.
127
+ kOptionReservedMask = 0x00000007U,
128
+
129
+ //! Used only by Assembler to mark `_op4` and `_op5` are used.
130
+ kOptionOp4Op5Used = 0x00000008U,
131
+
132
+ //! Prevents following a jump during compilation (CodeCompiler).
133
+ kOptionUnfollow = 0x00000010U,
134
+
135
+ //! Overwrite the destination operand (CodeCompiler).
136
+ //!
137
+ //! Hint that is important for register liveness analysis. It tells the
138
+ //! compiler that the destination operand will be overwritten now or by
139
+ //! adjacent instructions. CodeCompiler knows when a register is completely
140
+ //! overwritten by a single instruction, for example you don't have to
141
+ //! mark "movaps" or "pxor x, x", however, if a pair of instructions is
142
+ //! used and the first of them doesn't completely overwrite the content
143
+ //! of the destination, CodeCompiler fails to mark that register as dead.
144
+ //!
145
+ //! X86/X64 Specific
146
+ //! ----------------
147
+ //!
148
+ //! - All instructions that always overwrite at least the size of the
149
+ //! register the virtual-register uses , for example "mov", "movq",
150
+ //! "movaps" don't need the overwrite option to be used - conversion,
151
+ //! shuffle, and other miscellaneous instructions included.
152
+ //!
153
+ //! - All instructions that clear the destination register if all operands
154
+ //! are the same, for example "xor x, x", "pcmpeqb x x", etc...
155
+ //!
156
+ //! - Consecutive instructions that partially overwrite the variable until
157
+ //! there is no old content require the `overwrite()` to be used. Some
158
+ //! examples (not always the best use cases thought):
159
+ //!
160
+ //! - `movlps xmm0, ?` followed by `movhps xmm0, ?` and vice versa
161
+ //! - `movlpd xmm0, ?` followed by `movhpd xmm0, ?` and vice versa
162
+ //! - `mov al, ?` followed by `and ax, 0xFF`
163
+ //! - `mov al, ?` followed by `mov ah, al`
164
+ //! - `pinsrq xmm0, ?, 0` followed by `pinsrq xmm0, ?, 1`
165
+ //!
166
+ //! - If allocated variable is used temporarily for scalar operations. For
167
+ //! example if you allocate a full vector like `X86Compiler::newXmm()`
168
+ //! and then use that vector for scalar operations you should use
169
+ //! `overwrite()` directive:
170
+ //!
171
+ //! - `sqrtss x, y` - only LO element of `x` is changed, if you don't use
172
+ //! HI elements, use `X86Compiler.overwrite().sqrtss(x, y)`.
173
+ kOptionOverwrite = 0x00000020U
174
+ };
175
+
176
+ // --------------------------------------------------------------------------
177
+ // [Construction / Destruction]
178
+ // --------------------------------------------------------------------------
179
+
180
+ ASMJIT_API CodeEmitter(uint32_t type) noexcept;
181
+ ASMJIT_API virtual ~CodeEmitter() noexcept;
182
+
183
+ // --------------------------------------------------------------------------
184
+ // [Events]
185
+ // --------------------------------------------------------------------------
186
+
187
+ //! Called after the \ref CodeEmitter was attached to the \ref CodeHolder.
188
+ virtual Error onAttach(CodeHolder* code) noexcept = 0;
189
+ //! Called after the \ref CodeEmitter was detached from the \ref CodeHolder.
190
+ virtual Error onDetach(CodeHolder* code) noexcept = 0;
191
+
192
+ // --------------------------------------------------------------------------
193
+ // [Code-Generation]
194
+ // --------------------------------------------------------------------------
195
+
196
+ //! Emit instruction having max 4 operands.
197
+ virtual Error _emit(uint32_t instId, const Operand_& o0, const Operand_& o1, const Operand_& o2, const Operand_& o3) = 0;
198
+ //! Emit instruction having max 6 operands.
199
+ virtual Error _emit(uint32_t instId, const Operand_& o0, const Operand_& o1, const Operand_& o2, const Operand_& o3, const Operand_& o4, const Operand_& o5) = 0;
200
+ //! Emit instruction having operands stored in array.
201
+ virtual Error _emitOpArray(uint32_t instId, const Operand_* opArray, size_t opCount);
202
+
203
+ //! Create a new label.
204
+ virtual Label newLabel() = 0;
205
+ //! Create a new named label.
206
+ virtual Label newNamedLabel(
207
+ const char* name,
208
+ size_t nameLength = Globals::kInvalidIndex,
209
+ uint32_t type = Label::kTypeGlobal,
210
+ uint32_t parentId = 0) = 0;
211
+
212
+ //! Get a label by name.
213
+ //!
214
+ //! Returns invalid Label in case that the name is invalid or label was not found.
215
+ //!
216
+ //! NOTE: This function doesn't trigger ErrorHandler in case the name is
217
+ //! invalid or no such label exist. You must always check the validity of the
218
+ //! \ref Label returned.
219
+ ASMJIT_API Label getLabelByName(
220
+ const char* name,
221
+ size_t nameLength = Globals::kInvalidIndex,
222
+ uint32_t parentId = 0) noexcept;
223
+
224
+ //! Bind the `label` to the current position of the current section.
225
+ //!
226
+ //! NOTE: Attempt to bind the same label multiple times will return an error.
227
+ virtual Error bind(const Label& label) = 0;
228
+
229
+ //! Align to the `alignment` specified.
230
+ //!
231
+ //! The sequence that is used to fill the gap between the aligned location
232
+ //! and the current location depends on the align `mode`, see \ref AlignMode.
233
+ virtual Error align(uint32_t mode, uint32_t alignment) = 0;
234
+
235
+ //! Embed raw data into the code-buffer.
236
+ virtual Error embed(const void* data, uint32_t size) = 0;
237
+
238
+ //! Embed absolute label address as data (4 or 8 bytes).
239
+ virtual Error embedLabel(const Label& label) = 0;
240
+
241
+ //! Embed a constant pool into the code-buffer in the following steps:
242
+ //! 1. Align by using kAlignData to the minimum `pool` alignment.
243
+ //! 2. Bind `label` so it's bound to an aligned location.
244
+ //! 3. Emit constant pool data.
245
+ virtual Error embedConstPool(const Label& label, const ConstPool& pool) = 0;
246
+
247
+ //! Emit a comment string `s` with an optional `len` parameter.
248
+ virtual Error comment(const char* s, size_t len = Globals::kInvalidIndex) = 0;
249
+
250
+ // --------------------------------------------------------------------------
251
+ // [Code-Generation Status]
252
+ // --------------------------------------------------------------------------
253
+
254
+ //! Get if the CodeEmitter is initialized (i.e. attached to a \ref CodeHolder).
255
+ ASMJIT_INLINE bool isInitialized() const noexcept { return _code != nullptr; }
256
+
257
+ ASMJIT_API virtual Error finalize();
258
+
259
+ // --------------------------------------------------------------------------
260
+ // [Code Information]
261
+ // --------------------------------------------------------------------------
262
+
263
+ //! Get information about the code, see \ref CodeInfo.
264
+ ASMJIT_INLINE const CodeInfo& getCodeInfo() const noexcept { return _codeInfo; }
265
+ //! Get \ref CodeHolder this CodeEmitter is attached to.
266
+ ASMJIT_INLINE CodeHolder* getCode() const noexcept { return _code; }
267
+
268
+ //! Get information about the architecture, see \ref ArchInfo.
269
+ ASMJIT_INLINE const ArchInfo& getArchInfo() const noexcept { return _codeInfo.getArchInfo(); }
270
+
271
+ //! Get if the target architecture is 32-bit.
272
+ ASMJIT_INLINE bool is32Bit() const noexcept { return getArchInfo().is32Bit(); }
273
+ //! Get if the target architecture is 64-bit.
274
+ ASMJIT_INLINE bool is64Bit() const noexcept { return getArchInfo().is64Bit(); }
275
+
276
+ //! Get the target architecture type.
277
+ ASMJIT_INLINE uint32_t getArchType() const noexcept { return getArchInfo().getType(); }
278
+ //! Get the target architecture sub-type.
279
+ ASMJIT_INLINE uint32_t getArchSubType() const noexcept { return getArchInfo().getSubType(); }
280
+ //! Get the target architecture's GP register size (4 or 8 bytes).
281
+ ASMJIT_INLINE uint32_t getGpSize() const noexcept { return getArchInfo().getGpSize(); }
282
+ //! Get the number of target GP registers.
283
+ ASMJIT_INLINE uint32_t getGpCount() const noexcept { return getArchInfo().getGpCount(); }
284
+
285
+ // --------------------------------------------------------------------------
286
+ // [Code-Emitter Type]
287
+ // --------------------------------------------------------------------------
288
+
289
+ //! Get the type of this CodeEmitter, see \ref Type.
290
+ ASMJIT_INLINE uint32_t getType() const noexcept { return _type; }
291
+
292
+ ASMJIT_INLINE bool isAssembler() const noexcept { return _type == kTypeAssembler; }
293
+ ASMJIT_INLINE bool isCodeBuilder() const noexcept { return _type == kTypeBuilder; }
294
+ ASMJIT_INLINE bool isCodeCompiler() const noexcept { return _type == kTypeCompiler; }
295
+
296
+ // --------------------------------------------------------------------------
297
+ // [Global Information]
298
+ // --------------------------------------------------------------------------
299
+
300
+ //! Get global hints.
301
+ ASMJIT_INLINE uint32_t getGlobalHints() const noexcept { return _globalHints; }
302
+
303
+ //! Get global options.
304
+ //!
305
+ //! Global options are merged with instruction options before the instruction
306
+ //! is encoded. These options have some bits reserved that are used for error
307
+ //! checking, logging, and strict validation. Other options are globals that
308
+ //! affect each instruction, for example if VEX3 is set globally, it will all
309
+ //! instructions, even those that don't have such option set.
310
+ ASMJIT_INLINE uint32_t getGlobalOptions() const noexcept { return _globalOptions; }
311
+
312
+ // --------------------------------------------------------------------------
313
+ // [Error Handling]
314
+ // --------------------------------------------------------------------------
315
+
316
+ //! Get if the object is in error state.
317
+ //!
318
+ //! Error state means that it does not consume anything unless the error
319
+ //! state is reset by calling `resetLastError()`. Use `getLastError()` to
320
+ //! get the last error that put the object into the error state.
321
+ ASMJIT_INLINE bool isInErrorState() const noexcept { return _lastError != kErrorOk; }
322
+
323
+ //! Get the last error code.
324
+ ASMJIT_INLINE Error getLastError() const noexcept { return _lastError; }
325
+ //! Set the last error code and propagate it through the error handler.
326
+ ASMJIT_API Error setLastError(Error error, const char* message = nullptr);
327
+ //! Clear the last error code and return `kErrorOk`.
328
+ ASMJIT_INLINE Error resetLastError() noexcept { return setLastError(kErrorOk); }
329
+
330
+ // --------------------------------------------------------------------------
331
+ // [Accessors That Affect the Next Instruction]
332
+ // --------------------------------------------------------------------------
333
+
334
+ //! Get options of the next instruction.
335
+ ASMJIT_INLINE uint32_t getOptions() const noexcept { return _options; }
336
+ //! Set options of the next instruction.
337
+ ASMJIT_INLINE void setOptions(uint32_t options) noexcept { _options = options; }
338
+ //! Add options of the next instruction.
339
+ ASMJIT_INLINE void addOptions(uint32_t options) noexcept { _options |= options; }
340
+ //! Reset options of the next instruction.
341
+ ASMJIT_INLINE void resetOptions() noexcept { _options = 0; }
342
+
343
+ //! Get if the extra register operand is valid.
344
+ ASMJIT_INLINE bool hasExtraReg() const noexcept { return _extraReg.isValid(); }
345
+ //! Get an extra operand that will be used by the next instruction (architecture specific).
346
+ ASMJIT_INLINE const RegOnly& getExtraReg() const noexcept { return _extraReg; }
347
+ //! Set an extra operand that will be used by the next instruction (architecture specific).
348
+ ASMJIT_INLINE void setExtraReg(const Reg& reg) noexcept { _extraReg.init(reg); }
349
+ //! Set an extra operand that will be used by the next instruction (architecture specific).
350
+ ASMJIT_INLINE void setExtraReg(const RegOnly& reg) noexcept { _extraReg.init(reg); }
351
+ //! Reset an extra operand that will be used by the next instruction (architecture specific).
352
+ ASMJIT_INLINE void resetExtraReg() noexcept { _extraReg.reset(); }
353
+
354
+ //! Get annotation of the next instruction.
355
+ ASMJIT_INLINE const char* getInlineComment() const noexcept { return _inlineComment; }
356
+ //! Set annotation of the next instruction.
357
+ //!
358
+ //! NOTE: This string is set back to null by `_emit()`, but until that it has
359
+ //! to remain valid as `CodeEmitter` is not required to make a copy of it (and
360
+ //! it would be slow to do that for each instruction).
361
+ ASMJIT_INLINE void setInlineComment(const char* s) noexcept { _inlineComment = s; }
362
+ //! Reset annotation of the next instruction to null.
363
+ ASMJIT_INLINE void resetInlineComment() noexcept { _inlineComment = nullptr; }
364
+
365
+ // --------------------------------------------------------------------------
366
+ // [Helpers]
367
+ // --------------------------------------------------------------------------
368
+
369
+ //! Get if the `label` is valid (i.e. registered).
370
+ ASMJIT_INLINE bool isLabelValid(const Label& label) const noexcept {
371
+ return isLabelValid(label.getId());
372
+ }
373
+
374
+ //! Get if the label `id` is valid (i.e. registered).
375
+ ASMJIT_API bool isLabelValid(uint32_t id) const noexcept;
376
+
377
+ //! Emit a formatted string `fmt`.
378
+ ASMJIT_API Error commentf(const char* fmt, ...);
379
+ //! Emit a formatted string `fmt` (va_list version).
380
+ ASMJIT_API Error commentv(const char* fmt, va_list ap);
381
+
382
+ // --------------------------------------------------------------------------
383
+ // [Emit]
384
+ // --------------------------------------------------------------------------
385
+
386
+ // NOTE: These `emit()` helpers are designed to address a code-bloat generated
387
+ // by C++ compilers to call a function having many arguments. Each parameter to
388
+ // `_emit()` requires code to pass it, which means that if we default to 4
389
+ // operand parameters in `_emit()` and instId the C++ compiler would have to
390
+ // generate a virtual function call having 5 parameters, which is quite a lot.
391
+ // Since by default asm instructions have 2 to 3 operands it's better to
392
+ // introduce helpers that pass those and fill all the remaining with `_none`.
393
+
394
+ //! Emit an instruction.
395
+ ASMJIT_API Error emit(uint32_t instId);
396
+ //! \overload
397
+ ASMJIT_API Error emit(uint32_t instId, const Operand_& o0);
398
+ //! \overload
399
+ ASMJIT_API Error emit(uint32_t instId, const Operand_& o0, const Operand_& o1);
400
+ //! \overload
401
+ ASMJIT_API Error emit(uint32_t instId, const Operand_& o0, const Operand_& o1, const Operand_& o2);
402
+ //! \overload
403
+ ASMJIT_API Error emit(uint32_t instId, const Operand_& o0, const Operand_& o1, const Operand_& o2, const Operand_& o3);
404
+ //! \overload
405
+ ASMJIT_API Error emit(uint32_t instId, const Operand_& o0, const Operand_& o1, const Operand_& o2, const Operand_& o3, const Operand_& o4);
406
+ //! \overload
407
+ ASMJIT_API Error emit(uint32_t instId, const Operand_& o0, const Operand_& o1, const Operand_& o2, const Operand_& o3, const Operand_& o4, const Operand_& o5);
408
+
409
+ //! Emit an instruction that has a 32-bit signed immediate operand.
410
+ ASMJIT_API Error emit(uint32_t instId, int o0);
411
+ //! \overload
412
+ ASMJIT_API Error emit(uint32_t instId, const Operand_& o0, int o1);
413
+ //! \overload
414
+ ASMJIT_API Error emit(uint32_t instId, const Operand_& o0, const Operand_& o1, int o2);
415
+ //! \overload
416
+ ASMJIT_API Error emit(uint32_t instId, const Operand_& o0, const Operand_& o1, const Operand_& o2, int o3);
417
+ //! \overload
418
+ ASMJIT_API Error emit(uint32_t instId, const Operand_& o0, const Operand_& o1, const Operand_& o2, const Operand_& o3, int o4);
419
+ //! \overload
420
+ ASMJIT_API Error emit(uint32_t instId, const Operand_& o0, const Operand_& o1, const Operand_& o2, const Operand_& o3, const Operand_& o4, int o5);
421
+
422
+ //! Emit an instruction that has a 64-bit signed immediate operand.
423
+ ASMJIT_API Error emit(uint32_t instId, int64_t o0);
424
+ //! \overload
425
+ ASMJIT_API Error emit(uint32_t instId, const Operand_& o0, int64_t o1);
426
+ //! \overload
427
+ ASMJIT_API Error emit(uint32_t instId, const Operand_& o0, const Operand_& o1, int64_t o2);
428
+ //! \overload
429
+ ASMJIT_API Error emit(uint32_t instId, const Operand_& o0, const Operand_& o1, const Operand_& o2, int64_t o3);
430
+ //! \overload
431
+ ASMJIT_API Error emit(uint32_t instId, const Operand_& o0, const Operand_& o1, const Operand_& o2, const Operand_& o3, int64_t o4);
432
+ //! \overload
433
+ ASMJIT_API Error emit(uint32_t instId, const Operand_& o0, const Operand_& o1, const Operand_& o2, const Operand_& o3, const Operand_& o4, int64_t o5);
434
+
435
+ //! \overload
436
+ ASMJIT_INLINE Error emit(uint32_t instId, unsigned int o0) {
437
+ return emit(instId, static_cast<int64_t>(o0));
438
+ }
439
+ //! \overload
440
+ ASMJIT_INLINE Error emit(uint32_t instId, const Operand_& o0, unsigned int o1) {
441
+ return emit(instId, o0, static_cast<int64_t>(o1));
442
+ }
443
+ //! \overload
444
+ ASMJIT_INLINE Error emit(uint32_t instId, const Operand_& o0, const Operand_& o1, unsigned int o2) {
445
+ return emit(instId, o0, o1, static_cast<int64_t>(o2));
446
+ }
447
+ //! \overload
448
+ ASMJIT_INLINE Error emit(uint32_t instId, const Operand_& o0, const Operand_& o1, const Operand_& o2, unsigned int o3) {
449
+ return emit(instId, o0, o1, o2, static_cast<int64_t>(o3));
450
+ }
451
+ //! \overload
452
+ ASMJIT_INLINE Error emit(uint32_t instId, const Operand_& o0, const Operand_& o1, const Operand_& o2, const Operand_& o3, unsigned int o4) {
453
+ return emit(instId, o0, o1, o2, o3, static_cast<int64_t>(o4));
454
+ }
455
+ //! \overload
456
+ ASMJIT_INLINE Error emit(uint32_t instId, const Operand_& o0, const Operand_& o1, const Operand_& o2, const Operand_& o3, const Operand_& o4, unsigned int o5) {
457
+ return emit(instId, o0, o1, o2, o3, o4, static_cast<int64_t>(o5));
458
+ }
459
+
460
+ //! \overload
461
+ ASMJIT_INLINE Error emit(uint32_t instId, uint64_t o0) {
462
+ return emit(instId, static_cast<int64_t>(o0));
463
+ }
464
+ //! \overload
465
+ ASMJIT_INLINE Error emit(uint32_t instId, const Operand_& o0, uint64_t o1) {
466
+ return emit(instId, o0, static_cast<int64_t>(o1));
467
+ }
468
+ //! \overload
469
+ ASMJIT_INLINE Error emit(uint32_t instId, const Operand_& o0, const Operand_& o1, uint64_t o2) {
470
+ return emit(instId, o0, o1, static_cast<int64_t>(o2));
471
+ }
472
+ //! \overload
473
+ ASMJIT_INLINE Error emit(uint32_t instId, const Operand_& o0, const Operand_& o1, const Operand_& o2, uint64_t o3) {
474
+ return emit(instId, o0, o1, o2, static_cast<int64_t>(o3));
475
+ }
476
+ //! \overload
477
+ ASMJIT_INLINE Error emit(uint32_t instId, const Operand_& o0, const Operand_& o1, const Operand_& o2, const Operand_& o3, uint64_t o4) {
478
+ return emit(instId, o0, o1, o2, o3, static_cast<int64_t>(o4));
479
+ }
480
+ //! \overload
481
+ ASMJIT_INLINE Error emit(uint32_t instId, const Operand_& o0, const Operand_& o1, const Operand_& o2, const Operand_& o3, const Operand_& o4, uint64_t o5) {
482
+ return emit(instId, o0, o1, o2, o3, o4, static_cast<int64_t>(o5));
483
+ }
484
+
485
+ ASMJIT_INLINE Error emitOpArray(uint32_t instId, const Operand_* opArray, size_t opCount) {
486
+ return _emitOpArray(instId, opArray, opCount);
487
+ }
488
+
489
+ // --------------------------------------------------------------------------
490
+ // [Members]
491
+ // --------------------------------------------------------------------------
492
+
493
+ CodeInfo _codeInfo; //!< Basic information about the code (matches CodeHolder::_codeInfo).
494
+ CodeHolder* _code; //!< CodeHolder the CodeEmitter is attached to.
495
+ CodeEmitter* _nextEmitter; //!< Linked list of `CodeEmitter`s attached to the same \ref CodeHolder.
496
+
497
+ uint8_t _type; //!< See CodeEmitter::Type.
498
+ uint8_t _destroyed; //!< Set by ~CodeEmitter() before calling `_code->detach()`.
499
+ uint8_t _finalized; //!< True if the CodeEmitter is finalized (CodeBuilder & CodeCompiler).
500
+ uint8_t _reserved; //!< \internal
501
+ Error _lastError; //!< Last error code.
502
+
503
+ uint32_t _privateData; //!< Internal private data used freely by any CodeEmitter.
504
+ uint32_t _globalHints; //!< Global hints, always in sync with CodeHolder.
505
+ uint32_t _globalOptions; //!< Global options, combined with `_options` before used by each instruction.
506
+
507
+ uint32_t _options; //!< Used to pass instruction options (affects the next instruction).
508
+ RegOnly _extraReg; //!< Extra register (op-mask {k} on AVX-512) (affects the next instruction).
509
+ const char* _inlineComment; //!< Inline comment of the next instruction (affects the next instruction).
510
+
511
+ Operand_ _none; //!< Used to pass unused operands to `_emit()` instead of passing null.
512
+ Reg _nativeGpReg; //!< Native GP register with zero id.
513
+ const Reg* _nativeGpArray; //!< Array of native registers indexed from zero.
514
+ };
515
+
516
+ //! \}
517
+
518
+ } // asmjit namespace
519
+ } // namespace PLMD
520
+
521
+ // [Api-End]
522
+ #include "./asmjit_apiend.h"
523
+
524
+ // [Guard]
525
+ #endif // _ASMJIT_BASE_CODEEMITTER_H
526
+ #pragma GCC diagnostic pop
527
+ #endif // __PLUMED_HAS_ASMJIT
528
+ #endif