llvmlite 0.43.0rc1__cp310-cp310-win_amd64.whl → 0.44.0__cp310-cp310-win_amd64.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.

Potentially problematic release.


This version of llvmlite might be problematic. Click here for more details.

Files changed (47) hide show
  1. llvmlite/__init__.py +10 -3
  2. llvmlite/_version.py +2 -2
  3. llvmlite/binding/__init__.py +19 -18
  4. llvmlite/binding/analysis.py +69 -69
  5. llvmlite/binding/common.py +34 -34
  6. llvmlite/binding/context.py +39 -29
  7. llvmlite/binding/dylib.py +45 -45
  8. llvmlite/binding/executionengine.py +330 -330
  9. llvmlite/binding/ffi.py +395 -390
  10. llvmlite/binding/initfini.py +73 -73
  11. llvmlite/binding/linker.py +20 -20
  12. llvmlite/binding/llvmlite.dll +0 -0
  13. llvmlite/binding/module.py +349 -349
  14. llvmlite/binding/newpassmanagers.py +357 -0
  15. llvmlite/binding/object_file.py +82 -82
  16. llvmlite/binding/options.py +17 -17
  17. llvmlite/binding/orcjit.py +342 -342
  18. llvmlite/binding/passmanagers.py +946 -939
  19. llvmlite/binding/targets.py +520 -450
  20. llvmlite/binding/transforms.py +151 -151
  21. llvmlite/binding/typeref.py +285 -198
  22. llvmlite/binding/value.py +632 -618
  23. llvmlite/ir/__init__.py +11 -11
  24. llvmlite/ir/_utils.py +80 -80
  25. llvmlite/ir/builder.py +1120 -1119
  26. llvmlite/ir/context.py +20 -20
  27. llvmlite/ir/instructions.py +920 -893
  28. llvmlite/ir/module.py +246 -246
  29. llvmlite/ir/transforms.py +64 -64
  30. llvmlite/ir/types.py +734 -614
  31. llvmlite/ir/values.py +1217 -1217
  32. llvmlite/tests/__init__.py +57 -57
  33. llvmlite/tests/__main__.py +3 -3
  34. llvmlite/tests/customize.py +407 -407
  35. llvmlite/tests/refprune_proto.py +329 -329
  36. llvmlite/tests/test_binding.py +3208 -2585
  37. llvmlite/tests/test_ir.py +2994 -2729
  38. llvmlite/tests/test_refprune.py +730 -557
  39. llvmlite/tests/test_valuerepr.py +60 -60
  40. llvmlite/utils.py +29 -29
  41. {llvmlite-0.43.0rc1.dist-info → llvmlite-0.44.0.dist-info}/LICENSE +24 -24
  42. {llvmlite-0.43.0rc1.dist-info → llvmlite-0.44.0.dist-info}/LICENSE.thirdparty +225 -225
  43. {llvmlite-0.43.0rc1.dist-info → llvmlite-0.44.0.dist-info}/METADATA +7 -6
  44. llvmlite-0.44.0.dist-info/RECORD +46 -0
  45. {llvmlite-0.43.0rc1.dist-info → llvmlite-0.44.0.dist-info}/WHEEL +1 -1
  46. llvmlite-0.43.0rc1.dist-info/RECORD +0 -45
  47. {llvmlite-0.43.0rc1.dist-info → llvmlite-0.44.0.dist-info}/top_level.txt +0 -0
@@ -1,151 +1,151 @@
1
- from ctypes import c_uint, c_bool
2
- from llvmlite.binding import ffi
3
- from llvmlite.binding import passmanagers
4
-
5
-
6
- def create_pass_manager_builder():
7
- return PassManagerBuilder()
8
-
9
-
10
- class PassManagerBuilder(ffi.ObjectRef):
11
- __slots__ = ()
12
-
13
- def __init__(self, ptr=None):
14
- if ptr is None:
15
- ptr = ffi.lib.LLVMPY_PassManagerBuilderCreate()
16
- ffi.ObjectRef.__init__(self, ptr)
17
-
18
- @property
19
- def opt_level(self):
20
- """
21
- The general optimization level as an integer between 0 and 3.
22
- """
23
- return ffi.lib.LLVMPY_PassManagerBuilderGetOptLevel(self)
24
-
25
- @opt_level.setter
26
- def opt_level(self, level):
27
- ffi.lib.LLVMPY_PassManagerBuilderSetOptLevel(self, level)
28
-
29
- @property
30
- def size_level(self):
31
- """
32
- Whether and how much to optimize for size. An integer between 0 and 2.
33
- """
34
- return ffi.lib.LLVMPY_PassManagerBuilderGetSizeLevel(self)
35
-
36
- @size_level.setter
37
- def size_level(self, size):
38
- ffi.lib.LLVMPY_PassManagerBuilderSetSizeLevel(self, size)
39
-
40
- @property
41
- def inlining_threshold(self):
42
- """
43
- The integer threshold for inlining a function into another. The higher,
44
- the more likely inlining a function is. This attribute is write-only.
45
- """
46
- raise NotImplementedError("inlining_threshold is write-only")
47
-
48
- @inlining_threshold.setter
49
- def inlining_threshold(self, threshold):
50
- ffi.lib.LLVMPY_PassManagerBuilderUseInlinerWithThreshold(
51
- self, threshold)
52
-
53
- @property
54
- def disable_unroll_loops(self):
55
- """
56
- If true, disable loop unrolling.
57
- """
58
- return ffi.lib.LLVMPY_PassManagerBuilderGetDisableUnrollLoops(self)
59
-
60
- @disable_unroll_loops.setter
61
- def disable_unroll_loops(self, disable=True):
62
- ffi.lib.LLVMPY_PassManagerBuilderSetDisableUnrollLoops(self, disable)
63
-
64
- @property
65
- def loop_vectorize(self):
66
- """
67
- If true, allow vectorizing loops.
68
- """
69
- return ffi.lib.LLVMPY_PassManagerBuilderGetLoopVectorize(self)
70
-
71
- @loop_vectorize.setter
72
- def loop_vectorize(self, enable=True):
73
- return ffi.lib.LLVMPY_PassManagerBuilderSetLoopVectorize(self, enable)
74
-
75
- @property
76
- def slp_vectorize(self):
77
- """
78
- If true, enable the "SLP vectorizer", which uses a different algorithm
79
- from the loop vectorizer. Both may be enabled at the same time.
80
- """
81
- return ffi.lib.LLVMPY_PassManagerBuilderGetSLPVectorize(self)
82
-
83
- @slp_vectorize.setter
84
- def slp_vectorize(self, enable=True):
85
- return ffi.lib.LLVMPY_PassManagerBuilderSetSLPVectorize(self, enable)
86
-
87
- def _populate_module_pm(self, pm):
88
- ffi.lib.LLVMPY_PassManagerBuilderPopulateModulePassManager(self, pm)
89
-
90
- def _populate_function_pm(self, pm):
91
- ffi.lib.LLVMPY_PassManagerBuilderPopulateFunctionPassManager(self, pm)
92
-
93
- def populate(self, pm):
94
- if isinstance(pm, passmanagers.ModulePassManager):
95
- self._populate_module_pm(pm)
96
- elif isinstance(pm, passmanagers.FunctionPassManager):
97
- self._populate_function_pm(pm)
98
- else:
99
- raise TypeError(pm)
100
-
101
- def _dispose(self):
102
- self._capi.LLVMPY_PassManagerBuilderDispose(self)
103
-
104
-
105
- # ============================================================================
106
- # FFI
107
-
108
- ffi.lib.LLVMPY_PassManagerBuilderCreate.restype = ffi.LLVMPassManagerBuilderRef
109
-
110
- ffi.lib.LLVMPY_PassManagerBuilderDispose.argtypes = [
111
- ffi.LLVMPassManagerBuilderRef,
112
- ]
113
-
114
- ffi.lib.LLVMPY_PassManagerBuilderPopulateModulePassManager.argtypes = [
115
- ffi.LLVMPassManagerBuilderRef,
116
- ffi.LLVMPassManagerRef,
117
- ]
118
-
119
- ffi.lib.LLVMPY_PassManagerBuilderPopulateFunctionPassManager.argtypes = [
120
- ffi.LLVMPassManagerBuilderRef,
121
- ffi.LLVMPassManagerRef,
122
- ]
123
-
124
- # Unsigned int PassManagerBuilder properties
125
-
126
- for _func in (ffi.lib.LLVMPY_PassManagerBuilderSetOptLevel,
127
- ffi.lib.LLVMPY_PassManagerBuilderSetSizeLevel,
128
- ffi.lib.LLVMPY_PassManagerBuilderUseInlinerWithThreshold,
129
- ):
130
- _func.argtypes = [ffi.LLVMPassManagerBuilderRef, c_uint]
131
-
132
- for _func in (ffi.lib.LLVMPY_PassManagerBuilderGetOptLevel,
133
- ffi.lib.LLVMPY_PassManagerBuilderGetSizeLevel,
134
- ):
135
- _func.argtypes = [ffi.LLVMPassManagerBuilderRef]
136
- _func.restype = c_uint
137
-
138
- # Boolean PassManagerBuilder properties
139
-
140
- for _func in (ffi.lib.LLVMPY_PassManagerBuilderSetDisableUnrollLoops,
141
- ffi.lib.LLVMPY_PassManagerBuilderSetLoopVectorize,
142
- ffi.lib.LLVMPY_PassManagerBuilderSetSLPVectorize,
143
- ):
144
- _func.argtypes = [ffi.LLVMPassManagerBuilderRef, c_bool]
145
-
146
- for _func in (ffi.lib.LLVMPY_PassManagerBuilderGetDisableUnrollLoops,
147
- ffi.lib.LLVMPY_PassManagerBuilderGetLoopVectorize,
148
- ffi.lib.LLVMPY_PassManagerBuilderGetSLPVectorize,
149
- ):
150
- _func.argtypes = [ffi.LLVMPassManagerBuilderRef]
151
- _func.restype = c_bool
1
+ from ctypes import c_uint, c_bool
2
+ from llvmlite.binding import ffi
3
+ from llvmlite.binding import passmanagers
4
+
5
+
6
+ def create_pass_manager_builder():
7
+ return PassManagerBuilder()
8
+
9
+
10
+ class PassManagerBuilder(ffi.ObjectRef):
11
+ __slots__ = ()
12
+
13
+ def __init__(self, ptr=None):
14
+ if ptr is None:
15
+ ptr = ffi.lib.LLVMPY_PassManagerBuilderCreate()
16
+ ffi.ObjectRef.__init__(self, ptr)
17
+
18
+ @property
19
+ def opt_level(self):
20
+ """
21
+ The general optimization level as an integer between 0 and 3.
22
+ """
23
+ return ffi.lib.LLVMPY_PassManagerBuilderGetOptLevel(self)
24
+
25
+ @opt_level.setter
26
+ def opt_level(self, level):
27
+ ffi.lib.LLVMPY_PassManagerBuilderSetOptLevel(self, level)
28
+
29
+ @property
30
+ def size_level(self):
31
+ """
32
+ Whether and how much to optimize for size. An integer between 0 and 2.
33
+ """
34
+ return ffi.lib.LLVMPY_PassManagerBuilderGetSizeLevel(self)
35
+
36
+ @size_level.setter
37
+ def size_level(self, size):
38
+ ffi.lib.LLVMPY_PassManagerBuilderSetSizeLevel(self, size)
39
+
40
+ @property
41
+ def inlining_threshold(self):
42
+ """
43
+ The integer threshold for inlining a function into another. The higher,
44
+ the more likely inlining a function is. This attribute is write-only.
45
+ """
46
+ raise NotImplementedError("inlining_threshold is write-only")
47
+
48
+ @inlining_threshold.setter
49
+ def inlining_threshold(self, threshold):
50
+ ffi.lib.LLVMPY_PassManagerBuilderUseInlinerWithThreshold(
51
+ self, threshold)
52
+
53
+ @property
54
+ def disable_unroll_loops(self):
55
+ """
56
+ If true, disable loop unrolling.
57
+ """
58
+ return ffi.lib.LLVMPY_PassManagerBuilderGetDisableUnrollLoops(self)
59
+
60
+ @disable_unroll_loops.setter
61
+ def disable_unroll_loops(self, disable=True):
62
+ ffi.lib.LLVMPY_PassManagerBuilderSetDisableUnrollLoops(self, disable)
63
+
64
+ @property
65
+ def loop_vectorize(self):
66
+ """
67
+ If true, allow vectorizing loops.
68
+ """
69
+ return ffi.lib.LLVMPY_PassManagerBuilderGetLoopVectorize(self)
70
+
71
+ @loop_vectorize.setter
72
+ def loop_vectorize(self, enable=True):
73
+ return ffi.lib.LLVMPY_PassManagerBuilderSetLoopVectorize(self, enable)
74
+
75
+ @property
76
+ def slp_vectorize(self):
77
+ """
78
+ If true, enable the "SLP vectorizer", which uses a different algorithm
79
+ from the loop vectorizer. Both may be enabled at the same time.
80
+ """
81
+ return ffi.lib.LLVMPY_PassManagerBuilderGetSLPVectorize(self)
82
+
83
+ @slp_vectorize.setter
84
+ def slp_vectorize(self, enable=True):
85
+ return ffi.lib.LLVMPY_PassManagerBuilderSetSLPVectorize(self, enable)
86
+
87
+ def _populate_module_pm(self, pm):
88
+ ffi.lib.LLVMPY_PassManagerBuilderPopulateModulePassManager(self, pm)
89
+
90
+ def _populate_function_pm(self, pm):
91
+ ffi.lib.LLVMPY_PassManagerBuilderPopulateFunctionPassManager(self, pm)
92
+
93
+ def populate(self, pm):
94
+ if isinstance(pm, passmanagers.ModulePassManager):
95
+ self._populate_module_pm(pm)
96
+ elif isinstance(pm, passmanagers.FunctionPassManager):
97
+ self._populate_function_pm(pm)
98
+ else:
99
+ raise TypeError(pm)
100
+
101
+ def _dispose(self):
102
+ self._capi.LLVMPY_PassManagerBuilderDispose(self)
103
+
104
+
105
+ # ============================================================================
106
+ # FFI
107
+
108
+ ffi.lib.LLVMPY_PassManagerBuilderCreate.restype = ffi.LLVMPassManagerBuilderRef
109
+
110
+ ffi.lib.LLVMPY_PassManagerBuilderDispose.argtypes = [
111
+ ffi.LLVMPassManagerBuilderRef,
112
+ ]
113
+
114
+ ffi.lib.LLVMPY_PassManagerBuilderPopulateModulePassManager.argtypes = [
115
+ ffi.LLVMPassManagerBuilderRef,
116
+ ffi.LLVMPassManagerRef,
117
+ ]
118
+
119
+ ffi.lib.LLVMPY_PassManagerBuilderPopulateFunctionPassManager.argtypes = [
120
+ ffi.LLVMPassManagerBuilderRef,
121
+ ffi.LLVMPassManagerRef,
122
+ ]
123
+
124
+ # Unsigned int PassManagerBuilder properties
125
+
126
+ for _func in (ffi.lib.LLVMPY_PassManagerBuilderSetOptLevel,
127
+ ffi.lib.LLVMPY_PassManagerBuilderSetSizeLevel,
128
+ ffi.lib.LLVMPY_PassManagerBuilderUseInlinerWithThreshold,
129
+ ):
130
+ _func.argtypes = [ffi.LLVMPassManagerBuilderRef, c_uint]
131
+
132
+ for _func in (ffi.lib.LLVMPY_PassManagerBuilderGetOptLevel,
133
+ ffi.lib.LLVMPY_PassManagerBuilderGetSizeLevel,
134
+ ):
135
+ _func.argtypes = [ffi.LLVMPassManagerBuilderRef]
136
+ _func.restype = c_uint
137
+
138
+ # Boolean PassManagerBuilder properties
139
+
140
+ for _func in (ffi.lib.LLVMPY_PassManagerBuilderSetDisableUnrollLoops,
141
+ ffi.lib.LLVMPY_PassManagerBuilderSetLoopVectorize,
142
+ ffi.lib.LLVMPY_PassManagerBuilderSetSLPVectorize,
143
+ ):
144
+ _func.argtypes = [ffi.LLVMPassManagerBuilderRef, c_bool]
145
+
146
+ for _func in (ffi.lib.LLVMPY_PassManagerBuilderGetDisableUnrollLoops,
147
+ ffi.lib.LLVMPY_PassManagerBuilderGetLoopVectorize,
148
+ ffi.lib.LLVMPY_PassManagerBuilderGetSLPVectorize,
149
+ ):
150
+ _func.argtypes = [ffi.LLVMPassManagerBuilderRef]
151
+ _func.restype = c_bool