PyNerva 0.0.7__py3-none-any.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 (74) hide show
  1. nervapy/__init__.py +50 -0
  2. nervapy/abi.py +91 -0
  3. nervapy/arm/__init__.py +124 -0
  4. nervapy/arm/__main__.py +0 -0
  5. nervapy/arm/abi.py +138 -0
  6. nervapy/arm/formats.py +49 -0
  7. nervapy/arm/function.py +2465 -0
  8. nervapy/arm/generic.py +10796 -0
  9. nervapy/arm/instructions.py +519 -0
  10. nervapy/arm/isa.py +409 -0
  11. nervapy/arm/literal_pool.py +331 -0
  12. nervapy/arm/microarchitecture.py +211 -0
  13. nervapy/arm/pseudo.py +652 -0
  14. nervapy/arm/registers.py +1458 -0
  15. nervapy/arm/vfpneon.py +4092 -0
  16. nervapy/arm.py +13 -0
  17. nervapy/c/__init__.py +1 -0
  18. nervapy/c/types.py +436 -0
  19. nervapy/codegen.py +99 -0
  20. nervapy/common/__init__.py +4 -0
  21. nervapy/common/function.py +5 -0
  22. nervapy/common/regalloc.py +121 -0
  23. nervapy/constant_data.py +282 -0
  24. nervapy/encoder.py +246 -0
  25. nervapy/formats/__init__.py +2 -0
  26. nervapy/formats/elf/__init__.py +4 -0
  27. nervapy/formats/elf/file.py +178 -0
  28. nervapy/formats/elf/image.py +106 -0
  29. nervapy/formats/elf/section.py +422 -0
  30. nervapy/formats/elf/symbol.py +281 -0
  31. nervapy/formats/macho/__init__.py +2 -0
  32. nervapy/formats/macho/file.py +123 -0
  33. nervapy/formats/macho/image.py +143 -0
  34. nervapy/formats/macho/section.py +322 -0
  35. nervapy/formats/macho/symbol.py +158 -0
  36. nervapy/formats/mscoff/__init__.py +8 -0
  37. nervapy/formats/mscoff/image.py +132 -0
  38. nervapy/formats/mscoff/section.py +181 -0
  39. nervapy/formats/mscoff/symbol.py +148 -0
  40. nervapy/function.py +136 -0
  41. nervapy/literal.py +731 -0
  42. nervapy/loader.py +188 -0
  43. nervapy/name.py +159 -0
  44. nervapy/parse.py +52 -0
  45. nervapy/stream.py +58 -0
  46. nervapy/util.py +126 -0
  47. nervapy/writer.py +518 -0
  48. nervapy/x86_64/__init__.py +324 -0
  49. nervapy/x86_64/__main__.py +407 -0
  50. nervapy/x86_64/abi.py +517 -0
  51. nervapy/x86_64/amd.py +6464 -0
  52. nervapy/x86_64/avx.py +102029 -0
  53. nervapy/x86_64/crypto.py +1533 -0
  54. nervapy/x86_64/encoding.py +424 -0
  55. nervapy/x86_64/fma.py +19138 -0
  56. nervapy/x86_64/function.py +2707 -0
  57. nervapy/x86_64/generic.py +23384 -0
  58. nervapy/x86_64/instructions.py +500 -0
  59. nervapy/x86_64/isa.py +476 -0
  60. nervapy/x86_64/lower.py +126 -0
  61. nervapy/x86_64/mask.py +2593 -0
  62. nervapy/x86_64/meta.py +143 -0
  63. nervapy/x86_64/mmxsse.py +17265 -0
  64. nervapy/x86_64/nacl.py +327 -0
  65. nervapy/x86_64/operand.py +1204 -0
  66. nervapy/x86_64/options.py +21 -0
  67. nervapy/x86_64/pseudo.py +686 -0
  68. nervapy/x86_64/registers.py +1225 -0
  69. nervapy/x86_64/types.py +17 -0
  70. nervapy/x86_64/uarch.py +580 -0
  71. pynerva-0.0.7.dist-info/METADATA +310 -0
  72. pynerva-0.0.7.dist-info/RECORD +74 -0
  73. pynerva-0.0.7.dist-info/WHEEL +4 -0
  74. pynerva-0.0.7.dist-info/licenses/LICENSE.rst +15 -0
@@ -0,0 +1,310 @@
1
+ Metadata-Version: 2.4
2
+ Name: PyNerva
3
+ Version: 0.0.7
4
+ Summary: Framework for exploring advanced program synthesis and transformation techniques
5
+ Project-URL: Homepage, https://github.com/kriskwiatkowski/NervaPy.git
6
+ Author-email: Kris Kwiatkowski <kris@amongbytes.com>
7
+ License-File: LICENSE.rst
8
+ Keywords: arm,assembler,assembly,code transformation,codegen,elf,program synthesis,risc-v,x86-64
9
+ Classifier: Development Status :: 3 - Alpha
10
+ Classifier: Intended Audience :: Developers
11
+ Classifier: Intended Audience :: Science/Research
12
+ Classifier: License :: OSI Approved :: BSD License
13
+ Classifier: Natural Language :: English
14
+ Classifier: Operating System :: MacOS :: MacOS X
15
+ Classifier: Operating System :: Microsoft :: Windows
16
+ Classifier: Operating System :: OS Independent
17
+ Classifier: Operating System :: POSIX :: BSD :: FreeBSD
18
+ Classifier: Operating System :: POSIX :: Linux
19
+ Classifier: Programming Language :: Assembly
20
+ Classifier: Programming Language :: Python
21
+ Classifier: Programming Language :: Python :: 3
22
+ Classifier: Programming Language :: Python :: Implementation :: CPython
23
+ Classifier: Programming Language :: Python :: Implementation :: PyPy
24
+ Classifier: Topic :: Scientific/Engineering
25
+ Classifier: Topic :: Software Development
26
+ Classifier: Topic :: Software Development :: Assemblers
27
+ Classifier: Topic :: Software Development :: Code Generators
28
+ Classifier: Topic :: Software Development :: Compilers
29
+ Classifier: Topic :: Software Development :: Libraries
30
+ Requires-Python: >=3.10
31
+ Requires-Dist: click>=8.1.8
32
+ Requires-Dist: requests>=2.34.2
33
+ Description-Content-Type: text/x-rst
34
+
35
+ .. image:: https://github.com/kriskwiatkowski/NervaPy/blob/master/logo/nervapy.png
36
+ :alt: NervaPy logo
37
+ :align: center
38
+
39
+ ===========================================================================
40
+ NervaPy
41
+ ===========================================================================
42
+
43
+ NervaPy is a Python framework for writing high-performance assembly kernels.
44
+
45
+ NervaPy aims to simplify writing optimized assembly kernels while preserving all optimization opportunities of traditional assembly. Some NervaPy features:
46
+
47
+ - Universal assembly syntax for Windows, Unix, and Golang assembly.
48
+
49
+ * NervaPy can directly generate ELF, MS COFF and Mach-O object files and assembly listings for Golang toolchain
50
+
51
+ - Automatic adaption of function to different calling conventions and ABIs.
52
+
53
+ * Functions for different platforms can be generated from the same assembly source
54
+ * Supports Microsoft x64 ABI, System V x86-64 ABI (Linux, OS X, and FreeBSD), Linux x32 ABI, Native Client x86-64 SFI ABI, Golang AMD64 ABI, Golang AMD64p32 ABI
55
+
56
+ - Automatic register allocation.
57
+
58
+ * NervaPy is flexible and lets mix auto-allocated and hardcoded registers in the same code.
59
+
60
+ - Automation of routine tasks in assembly programming:
61
+
62
+ * Function prolog and epilog and generated by NervaPy
63
+ * De-duplication of data constants (e.g. `Constant.float32x4(1.0)`)
64
+ * Analysis of ISA extensions used in a function
65
+
66
+ - Supports x86-64 instructions up to AVX-512 and SHA
67
+
68
+ * Including 3dnow!+, XOP, FMA3, FMA4, TBM and BMI2.
69
+ * Excluding x87 FPU and most system instructions.
70
+
71
+ - Auto-generation of metadata files
72
+
73
+ * Makefile with module dependencies (`-MMD` and `-MF` options)
74
+ * C header for the generated functions
75
+ * Function metadata in JSON format
76
+
77
+ - Python-based metaprogramming and code-generation.
78
+ - Multiplexing of multiple instruction streams (helpful for software pipelining).
79
+ - Compatible with Python 2 and Python 3, CPython and PyPy.
80
+
81
+ Installation
82
+ ------------
83
+
84
+ NervaPy is actively developed, and thus there are presently no stable releases of 0.2 branch. We recommend that you use the `master` version:
85
+
86
+ .. code-block:: bash
87
+
88
+ pip install --upgrade git+https://github.com/kriskwiatkowski/NervaPy
89
+
90
+ Installation for development
91
+ ****************************
92
+
93
+ If you plan to modify NervaPy, we recommend the following installation procedure:
94
+
95
+ .. code-block:: bash
96
+
97
+ git clone https://github.com/kriskwiatkowski/NervaPy.git
98
+ cd NervaPy
99
+ python setup.py develop
100
+
101
+
102
+ Using NervaPy as a command-line tool
103
+ ------------------------------------
104
+
105
+ .. code-block:: python
106
+
107
+ # These two lines are not needed for NervaPy, but will help you get autocompletion in good code editors
108
+ from nervapy import *
109
+ from nervapy.x86_64 import *
110
+
111
+ # Lets write a function float DotProduct(const float* x, const float* y)
112
+
113
+ # If you want maximum cross-platform compatibility, arguments must have names
114
+ x = Argument(ptr(const_float_), name="x")
115
+ # If name is not specified, it is auto-detected
116
+ y = Argument(ptr(const_float_))
117
+
118
+ # Everything inside the `with` statement is function body
119
+ with Function("DotProduct", (x, y), float_,
120
+ # Enable instructions up to SSE4.2
121
+ # NervaPy will report error if you accidentally use a newer instruction
122
+ target=uarch.default + isa.sse4_2):
123
+
124
+ # Request two 64-bit general-purpose registers. No need to specify exact names.
125
+ reg_x, reg_y = GeneralPurposeRegister64(), GeneralPurposeRegister64()
126
+
127
+ # This is a cross-platform way to load arguments. NervaPy will map it to something proper later.
128
+ LOAD.ARGUMENT(reg_x, x)
129
+ LOAD.ARGUMENT(reg_y, y)
130
+
131
+ # Also request a virtual 128-bit SIMD register...
132
+ xmm_x = XMMRegister()
133
+ # ...and fill it with data
134
+ MOVAPS(xmm_x, [reg_x])
135
+ # It is fine to mix virtual and physical (xmm0-xmm15) registers in the same code
136
+ MOVAPS(xmm2, [reg_y])
137
+
138
+ # Execute dot product instruction, put result into xmm_x
139
+ DPPS(xmm_x, xmm2, 0xF1)
140
+
141
+ # This is a cross-platform way to return results. NervaPy will take care of ABI specifics.
142
+ RETURN(xmm_x)
143
+
144
+ Now you can compile this code into a binary object file that you can link into a program...
145
+
146
+ .. code-block:: bash
147
+
148
+ # Use MS-COFF format with Microsoft ABI for Windows
149
+ python -m nervapy.x86_64 -mabi=ms -mimage-format=ms-coff -o example.obj example.py
150
+ # Use Mach-O format with SysV ABI for OS X
151
+ python -m nervapy.x86_64 -mabi=sysv -mimage-format=mach-o -o example.o example.py
152
+ # Use ELF format with SysV ABI for Linux x86-64
153
+ python -m nervapy.x86_64 -mabi=sysv -mimage-format=elf -o example.o example.py
154
+ # Use ELF format with x32 ABI for Linux x32 (x86-64 with 32-bit pointer)
155
+ python -m nervapy.x86_64 -mabi=x32 -mimage-format=elf -o example.o example.py
156
+ # Use ELF format with Native Client x86-64 ABI for Chromium x86-64
157
+ python -m nervapy.x86_64 -mabi=nacl -mimage-format=elf -o example.o example.py
158
+
159
+ What else? You can convert the program to Plan 9 assembly for use with Go programming language:
160
+
161
+ .. code-block:: bash
162
+
163
+ # Use Go ABI (asm version) with -S flag to generate assembly for Go x86-64 targets
164
+ python -m nervapy.x86_64 -mabi=goasm -S -o example_amd64.s example.py
165
+ # Use Go-p32 ABI (asm version) with -S flag to generate assembly for Go x86-64 targets with 32-bit pointers
166
+ python -m nervapy.x86_64 -mabi=goasm-p32 -S -o example_amd64p32.s example.py
167
+
168
+ If Plan 9 assembly is too restrictive for your use-case, generate ``.syso`` objects `which can be linked into Go programs <https://github.com/golang/go/wiki/GcToolchainTricks#use-syso-file-to-embed-arbitrary-self-contained-c-code>`_:
169
+
170
+ .. code-block:: bash
171
+
172
+ # Use Go ABI (syso version) to generate .syso objects for Go x86-64 targets
173
+ # Image format can be any (ELF/Mach-O/MS-COFF)
174
+ python -m nervapy.x86_64 -mabi=gosyso -mimage-format=elf -o example_amd64.syso example.py
175
+ # Use Go-p32 ABI (syso version) to generate .syso objects for Go x86-64 targets with 32-bit pointers
176
+ # Image format can be any (ELF/Mach-O/MS-COFF)
177
+ python -m nervapy.x86_64 -mabi=gosyso-p32 -mimage-format=elf -o example_amd64p32.syso example.py
178
+
179
+ See `examples <https://github.com/kriskwiatkowski/NervaPy/tree/master/examples>`_ for real-world scenarios of using NervaPy with ``make``, ``nmake`` and ``go generate`` tools.
180
+
181
+ Using NervaPy as a Python module
182
+ --------------------------------
183
+
184
+ When command-line tool does not provide sufficient flexibility, Python scripts can import NervaPy objects from ``nervapy`` and ``nervapy.x86_64`` modules and do arbitrary manipulations on output images, program structure, instructions, and bytecodes.
185
+
186
+ NervaPy as Inline Assembler for Python
187
+ **************************************
188
+
189
+ NervaPy links assembly and Python: it represents assembly instructions and syntax as Python classes, functions, and objects.
190
+ But it also works the other way around: NervaPy can represent your assembly functions as callable Python functions!
191
+
192
+ .. code-block:: python
193
+
194
+ from nervapy import *
195
+ from nervapy.x86_64 import *
196
+
197
+ x = Argument(int32_t)
198
+ y = Argument(int32_t)
199
+
200
+ with Function("Add", (x, y), int32_t) as asm_function:
201
+ reg_x = GeneralPurposeRegister32()
202
+ reg_y = GeneralPurposeRegister32()
203
+
204
+ LOAD.ARGUMENT(reg_x, x)
205
+ LOAD.ARGUMENT(reg_y, y)
206
+
207
+ ADD(reg_x, reg_y)
208
+
209
+ RETURN(reg_x)
210
+
211
+ python_function = asm_function.finalize(abi.detect()).encode().load()
212
+
213
+ print(python_function(2, 2)) # -> prints "4"
214
+
215
+ NervaPy as Instruction Encoder
216
+ ******************************
217
+
218
+ NervaPy can be used to explore instruction length, opcodes, and alternative encodings:
219
+
220
+ .. code-block:: python
221
+
222
+ from nervapy.x86_64 import *
223
+
224
+ ADD(eax, 5).encode() # -> bytearray(b'\x83\xc0\x05')
225
+
226
+ MOVAPS(xmm0, xmm1).encode_options() # -> [bytearray(b'\x0f(\xc1'), bytearray(b'\x0f)\xc8')]
227
+
228
+ VPSLLVD(ymm0, ymm1, [rsi + 8]).encode_length_options() # -> {6: bytearray(b'\xc4\xe2uGF\x08'),
229
+ # 7: bytearray(b'\xc4\xe2uGD&\x08'),
230
+ # 9: bytearray(b'\xc4\xe2uG\x86\x08\x00\x00\x00')}
231
+
232
+ Tutorials
233
+ ---------
234
+
235
+ - `Writing Go assembly functions with NervaPy <https://blog.gopheracademy.com/advent-2016/nervapy/>`_ by `Damian Gryski <https://github.com/dgryski>`_
236
+
237
+ - `Adventures in JIT compilation (Part 4) <http://eli.thegreenplace.net/2017/adventures-in-jit-compilation-part-4-in-python/>`_ by `Eli Bendersky <https://github.com/eliben>`_
238
+
239
+ Users
240
+ -----
241
+
242
+ - `NNPACK <https://github.com/kriskwiatkowski/NNPACK>`_ -- an acceleration layer for convolutional networks on multi-core CPUs.
243
+
244
+ - `ChaCha20 <https://git.schwanenlied.me/yawning/chacha20>`_ -- Go implementation of ChaCha20 cryptographic cipher.
245
+
246
+ - `AEZ <https://git.schwanenlied.me/yawning/aez>`_ -- Go implementation of AEZ authenticated-encryption scheme.
247
+
248
+ - `bp128 <https://github.com/robskie/bp128>`_ -- Go implementation of SIMD-BP128 integer encoding and decoding.
249
+
250
+ - `go-marvin32 <https://github.com/dgryski/go-marvin32>`_ -- Go implementation of Microsoft's Marvin32 hash function.
251
+
252
+ - `go-highway <https://github.com/dgryski/go-highway>`_ -- Go implementation of Google's Highway hash function.
253
+
254
+ - `go-metro <https://github.com/dgryski/go-metro>`_ -- Go implementation of MetroHash function.
255
+
256
+ - `go-stadtx <https://github.com/dgryski/go-stadtx>`_ -- Go implementation of Stadtx hash function.
257
+
258
+ - `go-sip13 <https://github.com/dgryski/go-sip13>`_ -- Go implementation of SipHash 1-3 function.
259
+
260
+ - `go-chaskey <https://github.com/dgryski/go-chaskey>`_ -- Go implementation of Chaskey MAC.
261
+
262
+ - `go-speck <https://github.com/dgryski/go-speck>`_ -- Go implementation of SPECK cipher.
263
+
264
+ - `go-bloomindex <https://github.com/dgryski/go-bloomindex>`_ - Go implementation of Bloom-filter based search index.
265
+
266
+ - `go-groupvariant <https://github.com/dgryski/go-groupvarint>`_ - SSE-optimized group varint integer encoding in Go.
267
+
268
+ - `Yeppp! <http://www.yeppp.info>`_ performance library. All optimized kernels in Yeppp! are implemented in NervaPy (uses old version of NervaPy with deprecated syntax).
269
+
270
+ Peer-Reviewed Publications
271
+ --------------------------
272
+
273
+ - Marat Dukhan "NervaPy: A Python Framework for Developing High-Performance Assembly Kernels", Python for High-Performance Computing (PyHPC) 2013 (`slides <http://www.yeppp.info/resources/nervapy-slides.pdf>`_, `paper <http://www.yeppp.info/resources/nervapy-paper.pdf>`_, code uses deprecated syntax)
274
+
275
+ - Marat Dukhan "NervaPy meets Opcodes: Direct Machine Code Generation from Python", Python for High-Performance Computing (PyHPC) 2015 (`slides <http://www.nervapy.io/slides/pyhpc2015>`_, `paper on ACM Digital Library <https://dl.acm.org/citation.cfm?id=2835860>`_).
276
+
277
+ Other Presentations
278
+ -------------------
279
+
280
+ - Marat Dukhan "Developing Low-Level Assembly Kernels in NervaPy", presentation on `The First BLIS Retreat Workshop <https://www.cs.utexas.edu/users/flame/BLISRetreat/>`_, 2013 (`slides <https://www.cs.utexas.edu/users/flame/BLISRetreat/BLISRetreatTalks/NervaPy.pdf>`_, code uses deprecated syntax)
281
+
282
+ - Marat Dukhan "Porting BLIS micro-kernels to NervaPy", presentation on `The Third BLIS Retreat Workshop <https://www.cs.utexas.edu/users/flame/BLISRetreat2015/>`_, 2015 (`slides <http://www.nervapy.io/slides/blis-retreat-2015/>`_)
283
+
284
+ - Marat Dukhan "Accelerating Data Processing in Go with SIMD Instructions", presentation on `Atlanta Go Meetup <http://www.meetup.com/Go-Users-Group-Atlanta>`_, September 16, 2015 (`slides <https://docs.google.com/presentation/d/1MYg8PyhEf0oIvZ9YU2panNkVXsKt5UQBl_vGEaCeB1k/edit?usp=sharing>`_)
285
+
286
+ Dependencies
287
+ ------------
288
+
289
+ - Nearly all instruction classes in NervaPy are generated from `Opcodes Database <https://github.com/kriskwiatkowski/Opcodes>`_
290
+
291
+ - Instruction encodings in NervaPy are validated against `binutils <https://www.gnu.org/software/binutils/>`_ using auto-generated tests
292
+
293
+ - NervaPy uses `six <https://pythonhosted.org/six/>`_ and `enum34 <https://pypi.python.org/pypi/enum34>`_ packages as a compatibility layer between Python 2 and Python 3
294
+
295
+ Acknowledgements
296
+ ----------------
297
+
298
+ .. image:: https://github.com/kriskwiatkowski/NervaPy/blob/master/logo/hpcgarage.png
299
+ :alt: HPC Garage logo
300
+ :target: http://hpcgarage.org/
301
+
302
+ .. image:: https://github.com/kriskwiatkowski/NervaPy/blob/master/logo/college-of-computing.gif
303
+ :alt: Georgia Tech College of Computing logo
304
+ :target: http://www.cse.gatech.edu/
305
+
306
+ This work is a research project at the HPC Garage lab in the Georgia Institute of Technology, College of Computing, School of Computational Science and Engineering.
307
+
308
+ The work was supported in part by grants to Prof. Richard Vuduc's research lab, `The HPC Garage <www.hpcgarage.org>`_, from the National Science Foundation (NSF) under NSF CAREER award number 0953100; and a grant from the Defense Advanced Research Projects Agency (DARPA) Computer Science Study Group program
309
+
310
+ Any opinions, conclusions or recommendations expressed in this software and documentation are those of the authors and not necessarily reflect those of NSF or DARPA.
@@ -0,0 +1,74 @@
1
+ nervapy/__init__.py,sha256=tde830ThHBm4Dh262lEp5BzpcNBUN0lf6sxSqB4ElkU,2495
2
+ nervapy/abi.py,sha256=lrVAZzaYj_MD_PImgajXwxicruRcBltXo-WqpNO3Lg8,2598
3
+ nervapy/arm.py,sha256=tuwlnsdw1c67PN_8_QiVC26Upt2GqcAijizAxZRT8tg,342
4
+ nervapy/codegen.py,sha256=tr7bjhZrPk6Lq1per-FvhaKhSXgyAF0NI-7xktmZvMk,3230
5
+ nervapy/constant_data.py,sha256=Rd1z07zMxZffDitRBa-_3N3UnKkO9iewzejN1IzuiMQ,10288
6
+ nervapy/encoder.py,sha256=bUF4gViaOBaB3n5t1ULdAD4XSIyDn0V2bDn6CyqHIGE,8784
7
+ nervapy/function.py,sha256=fobi1_gVHzTQjy8N9pUJRnePmqAurA1GtBdpxffTSA8,4249
8
+ nervapy/literal.py,sha256=36rA0FsA3lRTLiKOEkcNbmNKob6OX86_hubKUI160R4,21587
9
+ nervapy/loader.py,sha256=5VU7fzPNHyCbrQOPYi_HX-u0LTffGCG8fDrydEC-Etw,6927
10
+ nervapy/name.py,sha256=kQKMS-UHpySJv-TkGcbZixxIhZrZsGe-dg9LLnZqPS0,6144
11
+ nervapy/parse.py,sha256=M60cyXn1vnmUqYtK-K_bz3wWlTSWpMmbma1cNAcLu-8,2505
12
+ nervapy/stream.py,sha256=eO7iAdiEAgxShhm1AQjMCUPCxci6xj0eH6IMVcbZK9U,1568
13
+ nervapy/util.py,sha256=cNQo35reLk-LQM5KUj2LbT_N2isBHhlpMo4cNvbDiTc,2532
14
+ nervapy/writer.py,sha256=6YSqBKKb7PnY-Bb-5j7gDquJQj3G3nk2Xh2k1fCBkWs,19309
15
+ nervapy/arm/__init__.py,sha256=7PhXycCG-FlCDi7Sbp_YBEgVM1w4UCdZrPS3nZYpB7w,8986
16
+ nervapy/arm/__main__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
+ nervapy/arm/abi.py,sha256=Z_w-mNHc6bzwnYev20Xr2T8bmOb0nTSef1Z-rsEPhXA,2672
18
+ nervapy/arm/formats.py,sha256=sGRXLw1_j5rZk-X_xFp3oZK1sSPFpTZP7ZMeq3mLBK4,1594
19
+ nervapy/arm/function.py,sha256=gN-pwOs_Bl0MwEwdp6FaGyycxt4QAb1z2lFJuKcMlA4,115820
20
+ nervapy/arm/generic.py,sha256=WRKwy5NPgKSA_HwSEi8CbEw4u9LTSR3aFhpETq9EkQo,354086
21
+ nervapy/arm/instructions.py,sha256=wP9cb_jN5bN46ST6YBpzctBm6Z1Y8umMjUnlQqZKl7A,19280
22
+ nervapy/arm/isa.py,sha256=T2zJ7uU0nL8rZgrtfxqXrTs9AE2PZ3ZG3nAoCKuzBfA,12005
23
+ nervapy/arm/literal_pool.py,sha256=mraQJCuD-dqyzPw54UG97laMXA8MwAPw7jVLGLGayRg,11250
24
+ nervapy/arm/microarchitecture.py,sha256=lYXLvQImSzT3SdvyMP4t6oSavG0feHuIiA-s__x11do,6126
25
+ nervapy/arm/pseudo.py,sha256=5HkaJD2xD0ZJVkcpH2NOcTZjRESqsmIPWxL2fqF2wFs,24483
26
+ nervapy/arm/registers.py,sha256=DR4FsoFxiaooS7t-wtFmhVfwxb7v3rD6gaUtAqCaK0s,41860
27
+ nervapy/arm/vfpneon.py,sha256=5CSmJ1bap19oezByzkHtQLOc-Q9SRWmNT49n5nlRHqg,135660
28
+ nervapy/c/__init__.py,sha256=YlL7lK71J-1xWKZH46hjVEUOh-oqHNxPhrjDTk29jYs,21
29
+ nervapy/c/types.py,sha256=SgimoeML9B_rbkCOhmscHi2tbTofZnC-ogjhJtEsl6o,15919
30
+ nervapy/common/__init__.py,sha256=nVWt0v5ae2CsguOHnkFvGmkSOyOSVWRjIaMQxboxwgs,199
31
+ nervapy/common/function.py,sha256=tJJZFdPcSc-0Gg9t74wEMLfbK0YPEcmCeTPxAB5Is1o,169
32
+ nervapy/common/regalloc.py,sha256=hJHaXO_rJmhQUVy1Yf4y96pzLszHyajOso3Hk2GtqSg,5079
33
+ nervapy/formats/__init__.py,sha256=zx99Xv4dN4bpv160kqn9ATdAlIWhqYnEgXthTjqKIWE,144
34
+ nervapy/formats/elf/__init__.py,sha256=u1qGwYM9ZnQHBm0-MBGY6w4curJqsxzyyXjt-2JcM10,210
35
+ nervapy/formats/elf/file.py,sha256=6imXblDIPag5Lfht5kxjq3RrZnNFTiaVK1LcNzoVqZQ,5337
36
+ nervapy/formats/elf/image.py,sha256=Ig-PH65BvAiwRr3RecQLY0_0UkLM8tqveDLHjqYZRw4,4146
37
+ nervapy/formats/elf/section.py,sha256=GxupTeTat7W1iqNfLANuliSfMIy7451grpMZKipVkDw,13695
38
+ nervapy/formats/elf/symbol.py,sha256=uCQj3wVnppEiPcRMZU0xQdttCyhSwm8uXKChbnhjtN0,7252
39
+ nervapy/formats/macho/__init__.py,sha256=zx99Xv4dN4bpv160kqn9ATdAlIWhqYnEgXthTjqKIWE,144
40
+ nervapy/formats/macho/file.py,sha256=T-01LCknoK6OdKmDhWxzJ-ZOUHhs2EIo7LA_mWOz6NU,3012
41
+ nervapy/formats/macho/image.py,sha256=MuWoc72J30VyoFr9ZWoQcjDPDXY6CqQuZJF_X0UZdgc,5121
42
+ nervapy/formats/macho/section.py,sha256=Ya9rPyHtXY30w41HNf-97FSZPZbGfrhn0Ns_bZH-vh8,10120
43
+ nervapy/formats/macho/symbol.py,sha256=RL6VNX4WVvMA25HvQct0Ui1TT4pcguGO8Hy4m8rq0GY,4696
44
+ nervapy/formats/mscoff/__init__.py,sha256=-yTAgrci_L2ABjnHePAMb9KAQLbCPH1apLhixNVV8go,484
45
+ nervapy/formats/mscoff/image.py,sha256=6dxUYYmHeGwDdkMAHa0P0Xv9zFzDsnMluYdTq_qVK2E,4091
46
+ nervapy/formats/mscoff/section.py,sha256=Mjf2TxkuJ_UY9dYs0v-Kmt273p5Qsr_G2Rc0eLvtVF0,5674
47
+ nervapy/formats/mscoff/symbol.py,sha256=mfzmOuxM6Zogl-YsJG7ocCGmvG3B0uRzfqEhWev0ozo,4844
48
+ nervapy/x86_64/__init__.py,sha256=gzgS2YqHP3Ai3Sm8W3_R8xQ4nqwxo3pO_OjklEVTnoU,23997
49
+ nervapy/x86_64/__main__.py,sha256=TQnPqtKpNIum8cm03B_TN9teyw_C3wIfG0k1YJGx2AY,13166
50
+ nervapy/x86_64/abi.py,sha256=4qw7T8JDUcup_ptLZxdu7GcUtuK4P-ZJHP8u-lu-xwE,10286
51
+ nervapy/x86_64/amd.py,sha256=kE-d5SInOm56PikR4fXB38LswA6fr80-uXj2LWP04aw,239567
52
+ nervapy/x86_64/avx.py,sha256=eVl0OWxVtqNMFNSixKVkviYXI7lWTzB0LCYqOQXMNX0,3928949
53
+ nervapy/x86_64/crypto.py,sha256=rP_qVj4EG5SIbNi9fdyD_CEcQm9BKIlgrWUPJeubnjs,56630
54
+ nervapy/x86_64/encoding.py,sha256=ojLQgVNmzjspBV0SzREWWi5naTKrqz_EKcwsVj5F_mM,15830
55
+ nervapy/x86_64/fma.py,sha256=pYTIX7rUDclUlk-BqVmzol_oEeLNNSV2ag0Zkgfa844,766882
56
+ nervapy/x86_64/function.py,sha256=ZwmA6L-E_5xAAtp0sJdmw0nGGnTqYM2-98Pq0bkQyOs,119998
57
+ nervapy/x86_64/generic.py,sha256=lvgb_5oPRJoRdjNHZ0J3D7OskGJPoQuDc3k_B_1fFCA,885368
58
+ nervapy/x86_64/instructions.py,sha256=GT4dXroRLRHqztW0xblH87vco7uzVP9eYAkjllOXCMg,21009
59
+ nervapy/x86_64/isa.py,sha256=lSUGcEcBvpgVPhcqZzqyzRte-esRUrQkncWLH1ycHfA,13866
60
+ nervapy/x86_64/lower.py,sha256=5PzYzAVowFUYbByVpQW5DOMldtdhkNTYCokYNJmbrR8,6138
61
+ nervapy/x86_64/mask.py,sha256=qEI-syVkJjo71aMzUj4zahkFCexiCz9d46fv9kJhOXE,95295
62
+ nervapy/x86_64/meta.py,sha256=jYCHJhEgX_DmXQfMvAZUtc-tKmGWxq47dIj1F4T7Al4,4710
63
+ nervapy/x86_64/mmxsse.py,sha256=AQppVEP7N6SZNyldG4QtoxP8fPC9Qn0I7JFaEvDSbFw,671134
64
+ nervapy/x86_64/nacl.py,sha256=5SLYdpU2mnPJ8uwJKi1jw3X4fNlP34S1-Q0CPhtJwfk,10423
65
+ nervapy/x86_64/operand.py,sha256=Cjv0Q_XxkKkPTP9RZyPoY1jxh9tfO9PPodYEh1nz31g,36154
66
+ nervapy/x86_64/options.py,sha256=fJpjkhrNa85CqIxYQHEYe4zt0cVgpBzgB_2ozVbxHik,491
67
+ nervapy/x86_64/pseudo.py,sha256=rVWrAQ7AXjKEA7-AR5amOVNcIUHuaXk89Uz56F3PmdA,28436
68
+ nervapy/x86_64/registers.py,sha256=k5Rgnf0ywjizP9zUaWzWWVrnZs0gPGYXfzY0pTFbevE,36174
69
+ nervapy/x86_64/types.py,sha256=AB3tFsIfzlToonoXftKTpIxV8tOGLVVIQaqNU8pvwNY,1011
70
+ nervapy/x86_64/uarch.py,sha256=S5tzeXtMRpVrWNgVrnnc64_AmbPg-brUShrbW2EdpqU,11591
71
+ pynerva-0.0.7.dist-info/METADATA,sha256=7AiMcKYna5PK95iM5boIZYmLimnYrPsIyW9MM5qpiO0,14548
72
+ pynerva-0.0.7.dist-info/WHEEL,sha256=mffPy8wBnZQn2VnJUU5jE99KsxaSfiyMHV9Yt0aLVxs,87
73
+ pynerva-0.0.7.dist-info/licenses/LICENSE.rst,sha256=5tb9v8CcnMG_xVlGypaQ3ZJ23urtK3Ksf8XHm96A_zI,1443
74
+ pynerva-0.0.7.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.30.1
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
@@ -0,0 +1,15 @@
1
+ ==============================
2
+ PeachPy license (2-clause BSD)
3
+ ==============================
4
+
5
+ Copyright (c) 2017, Facebook Inc.
6
+ Copyright (c) 2013-2017, Georgia Institute of Technology
7
+ All rights reserved.
8
+
9
+ Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
10
+
11
+ 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
12
+
13
+ 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
14
+
15
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.