llvmlite 0.43.0rc1__cp311-cp311-win_amd64.whl → 0.44.0rc2__cp311-cp311-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.
- llvmlite/__init__.py +7 -0
- llvmlite/_version.py +2 -2
- llvmlite/binding/__init__.py +1 -0
- llvmlite/binding/context.py +12 -2
- llvmlite/binding/ffi.py +6 -1
- llvmlite/binding/llvmlite.dll +0 -0
- llvmlite/binding/newpassmanagers.py +357 -0
- llvmlite/binding/passmanagers.py +25 -18
- llvmlite/binding/targets.py +75 -5
- llvmlite/binding/typeref.py +88 -1
- llvmlite/binding/value.py +14 -0
- llvmlite/ir/builder.py +8 -7
- llvmlite/ir/context.py +2 -2
- llvmlite/ir/instructions.py +52 -25
- llvmlite/ir/types.py +137 -17
- llvmlite/ir/values.py +2 -2
- llvmlite/tests/test_binding.py +663 -40
- llvmlite/tests/test_ir.py +411 -146
- llvmlite/tests/test_refprune.py +179 -6
- {llvmlite-0.43.0rc1.dist-info → llvmlite-0.44.0rc2.dist-info}/METADATA +7 -6
- llvmlite-0.44.0rc2.dist-info/RECORD +46 -0
- {llvmlite-0.43.0rc1.dist-info → llvmlite-0.44.0rc2.dist-info}/WHEEL +1 -1
- llvmlite-0.43.0rc1.dist-info/RECORD +0 -45
- {llvmlite-0.43.0rc1.dist-info → llvmlite-0.44.0rc2.dist-info}/LICENSE +0 -0
- {llvmlite-0.43.0rc1.dist-info → llvmlite-0.44.0rc2.dist-info}/LICENSE.thirdparty +0 -0
- {llvmlite-0.43.0rc1.dist-info → llvmlite-0.44.0rc2.dist-info}/top_level.txt +0 -0
llvmlite/tests/test_refprune.py
CHANGED
|
@@ -3,7 +3,12 @@ from llvmlite import ir
|
|
|
3
3
|
from llvmlite import binding as llvm
|
|
4
4
|
from llvmlite.tests import TestCase
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
import llvmlite.tests.refprune_proto as proto
|
|
7
|
+
|
|
8
|
+
# TODO:: Get rid of Legacy tests once completely transitioned to NewPassManager
|
|
9
|
+
|
|
10
|
+
# FIXME: Remove me once typed pointers are no longer supported.
|
|
11
|
+
from llvmlite import opaque_pointers_enabled
|
|
7
12
|
|
|
8
13
|
|
|
9
14
|
def _iterate_cases(generate_test):
|
|
@@ -18,6 +23,15 @@ def _iterate_cases(generate_test):
|
|
|
18
23
|
yield f'test_{k}', wrap(case_fn)
|
|
19
24
|
|
|
20
25
|
|
|
26
|
+
class PassManagerMixin():
|
|
27
|
+
|
|
28
|
+
def pb(self):
|
|
29
|
+
llvm.initialize_native_target()
|
|
30
|
+
tm = llvm.Target.from_default_triple().create_target_machine()
|
|
31
|
+
pto = llvm.create_pipeline_tuning_options(speed_level=0, size_level=0)
|
|
32
|
+
return llvm.create_pass_builder(tm, pto)
|
|
33
|
+
|
|
34
|
+
|
|
21
35
|
class TestRefPrunePrototype(TestCase):
|
|
22
36
|
"""
|
|
23
37
|
Test that the prototype is working.
|
|
@@ -35,7 +49,7 @@ class TestRefPrunePrototype(TestCase):
|
|
|
35
49
|
ptr_ty = ir.IntType(8).as_pointer()
|
|
36
50
|
|
|
37
51
|
|
|
38
|
-
class TestRefPrunePass(TestCase):
|
|
52
|
+
class TestRefPrunePass(TestCase, PassManagerMixin):
|
|
39
53
|
"""
|
|
40
54
|
Test that the C++ implementation matches the expected behavior as for
|
|
41
55
|
the prototype.
|
|
@@ -115,6 +129,14 @@ class TestRefPrunePass(TestCase):
|
|
|
115
129
|
return m
|
|
116
130
|
|
|
117
131
|
def apply_refprune(self, irmod):
|
|
132
|
+
mod = llvm.parse_assembly(str(irmod))
|
|
133
|
+
pb = self.pb()
|
|
134
|
+
pm = pb.getModulePassManager()
|
|
135
|
+
pm.add_refprune_pass()
|
|
136
|
+
pm.run(mod, pb)
|
|
137
|
+
return mod
|
|
138
|
+
|
|
139
|
+
def apply_refprune_legacy(self, irmod):
|
|
118
140
|
mod = llvm.parse_assembly(str(irmod))
|
|
119
141
|
pm = llvm.ModulePassManager()
|
|
120
142
|
pm.add_refprune_pass()
|
|
@@ -153,12 +175,21 @@ class TestRefPrunePass(TestCase):
|
|
|
153
175
|
outmod = self.apply_refprune(irmod)
|
|
154
176
|
self.check(outmod, expected, nodes)
|
|
155
177
|
|
|
178
|
+
def generate_test_legacy(self, case_gen):
|
|
179
|
+
nodes, edges, expected = case_gen()
|
|
180
|
+
irmod = self.generate_ir(nodes, edges)
|
|
181
|
+
outmod = self.apply_refprune_legacy(irmod)
|
|
182
|
+
self.check(outmod, expected, nodes)
|
|
183
|
+
|
|
156
184
|
# Generate tests
|
|
157
185
|
for name, case in _iterate_cases(generate_test):
|
|
158
186
|
locals()[name] = case
|
|
159
187
|
|
|
188
|
+
for name, case in _iterate_cases(generate_test_legacy):
|
|
189
|
+
locals()[name + "_legacy"] = case
|
|
160
190
|
|
|
161
|
-
|
|
191
|
+
|
|
192
|
+
class BaseTestByIR(TestCase, PassManagerMixin):
|
|
162
193
|
refprune_bitmask = 0
|
|
163
194
|
|
|
164
195
|
prologue = r"""
|
|
@@ -167,6 +198,20 @@ declare void @NRT_decref(i8* %ptr)
|
|
|
167
198
|
"""
|
|
168
199
|
|
|
169
200
|
def check(self, irmod, subgraph_limit=None):
|
|
201
|
+
mod = llvm.parse_assembly(f"{self.prologue}\n{irmod}")
|
|
202
|
+
pb = self.pb()
|
|
203
|
+
pm = pb.getModulePassManager()
|
|
204
|
+
if subgraph_limit is None:
|
|
205
|
+
pm.add_refprune_pass(self.refprune_bitmask)
|
|
206
|
+
else:
|
|
207
|
+
pm.add_refprune_pass(self.refprune_bitmask,
|
|
208
|
+
subgraph_limit=subgraph_limit)
|
|
209
|
+
before = llvm.dump_refprune_stats()
|
|
210
|
+
pm.run(mod, pb)
|
|
211
|
+
after = llvm.dump_refprune_stats()
|
|
212
|
+
return mod, after - before
|
|
213
|
+
|
|
214
|
+
def check_legacy(self, irmod, subgraph_limit=None):
|
|
170
215
|
mod = llvm.parse_assembly(f"{self.prologue}\n{irmod}")
|
|
171
216
|
pm = llvm.ModulePassManager()
|
|
172
217
|
if subgraph_limit is None:
|
|
@@ -195,6 +240,10 @@ define void @main(i8* %ptr) {
|
|
|
195
240
|
mod, stats = self.check(self.per_bb_ir_1)
|
|
196
241
|
self.assertEqual(stats.basicblock, 2)
|
|
197
242
|
|
|
243
|
+
def test_per_bb_1_legacy(self):
|
|
244
|
+
mod, stats = self.check_legacy(self.per_bb_ir_1)
|
|
245
|
+
self.assertEqual(stats.basicblock, 2)
|
|
246
|
+
|
|
198
247
|
per_bb_ir_2 = r"""
|
|
199
248
|
define void @main(i8* %ptr) {
|
|
200
249
|
call void @NRT_incref(i8* %ptr)
|
|
@@ -210,9 +259,31 @@ define void @main(i8* %ptr) {
|
|
|
210
259
|
mod, stats = self.check(self.per_bb_ir_2)
|
|
211
260
|
self.assertEqual(stats.basicblock, 4)
|
|
212
261
|
# not pruned
|
|
213
|
-
|
|
262
|
+
# FIXME: Remove `else' once TP are no longer supported.
|
|
263
|
+
if opaque_pointers_enabled:
|
|
264
|
+
self.assertIn("call void @NRT_incref(ptr %ptr)", str(mod))
|
|
265
|
+
else:
|
|
266
|
+
self.assertIn("call void @NRT_incref(i8* %ptr)", str(mod))
|
|
267
|
+
|
|
268
|
+
def test_per_bb_2_legacy(self):
|
|
269
|
+
mod, stats = self.check_legacy(self.per_bb_ir_2)
|
|
270
|
+
self.assertEqual(stats.basicblock, 4)
|
|
271
|
+
# not pruned
|
|
272
|
+
# FIXME: Remove `else' once TP are no longer supported.
|
|
273
|
+
if opaque_pointers_enabled:
|
|
274
|
+
self.assertIn("call void @NRT_incref(ptr %ptr)", str(mod))
|
|
275
|
+
else:
|
|
276
|
+
self.assertIn("call void @NRT_incref(i8* %ptr)", str(mod))
|
|
214
277
|
|
|
215
278
|
per_bb_ir_3 = r"""
|
|
279
|
+
define void @main(ptr %ptr, ptr %other) {
|
|
280
|
+
call void @NRT_incref(ptr %ptr)
|
|
281
|
+
call void @NRT_incref(ptr %ptr)
|
|
282
|
+
call void @NRT_decref(ptr %ptr)
|
|
283
|
+
call void @NRT_decref(ptr %other)
|
|
284
|
+
ret void
|
|
285
|
+
}
|
|
286
|
+
""" if opaque_pointers_enabled else r"""
|
|
216
287
|
define void @main(i8* %ptr, i8* %other) {
|
|
217
288
|
call void @NRT_incref(i8* %ptr)
|
|
218
289
|
call void @NRT_incref(i8* %ptr)
|
|
@@ -226,10 +297,34 @@ define void @main(i8* %ptr, i8* %other) {
|
|
|
226
297
|
mod, stats = self.check(self.per_bb_ir_3)
|
|
227
298
|
self.assertEqual(stats.basicblock, 2)
|
|
228
299
|
# not pruned
|
|
229
|
-
|
|
300
|
+
# FIXME: Remove `else' once TP are no longer supported.
|
|
301
|
+
if opaque_pointers_enabled:
|
|
302
|
+
self.assertIn("call void @NRT_decref(ptr %other)", str(mod))
|
|
303
|
+
else:
|
|
304
|
+
self.assertIn("call void @NRT_decref(i8* %other)", str(mod))
|
|
305
|
+
|
|
306
|
+
def test_per_bb_3_legacy(self):
|
|
307
|
+
mod, stats = self.check_legacy(self.per_bb_ir_3)
|
|
308
|
+
self.assertEqual(stats.basicblock, 2)
|
|
309
|
+
# not pruned
|
|
310
|
+
# FIXME: Remove `else' once TP are no longer supported.
|
|
311
|
+
if opaque_pointers_enabled:
|
|
312
|
+
self.assertIn("call void @NRT_decref(ptr %other)", str(mod))
|
|
313
|
+
else:
|
|
314
|
+
self.assertIn("call void @NRT_decref(i8* %other)", str(mod))
|
|
230
315
|
|
|
231
316
|
per_bb_ir_4 = r"""
|
|
232
317
|
; reordered
|
|
318
|
+
define void @main(ptr %ptr, ptr %other) {
|
|
319
|
+
call void @NRT_incref(ptr %ptr)
|
|
320
|
+
call void @NRT_decref(ptr %ptr)
|
|
321
|
+
call void @NRT_decref(ptr %ptr)
|
|
322
|
+
call void @NRT_decref(ptr %other)
|
|
323
|
+
call void @NRT_incref(ptr %ptr)
|
|
324
|
+
ret void
|
|
325
|
+
}
|
|
326
|
+
""" if opaque_pointers_enabled else r"""
|
|
327
|
+
; reordered
|
|
233
328
|
define void @main(i8* %ptr, i8* %other) {
|
|
234
329
|
call void @NRT_incref(i8* %ptr)
|
|
235
330
|
call void @NRT_decref(i8* %ptr)
|
|
@@ -244,7 +339,21 @@ define void @main(i8* %ptr, i8* %other) {
|
|
|
244
339
|
mod, stats = self.check(self.per_bb_ir_4)
|
|
245
340
|
self.assertEqual(stats.basicblock, 4)
|
|
246
341
|
# not pruned
|
|
247
|
-
|
|
342
|
+
# FIXME: Remove `else' once TP are no longer supported.
|
|
343
|
+
if opaque_pointers_enabled:
|
|
344
|
+
self.assertIn("call void @NRT_decref(ptr %other)", str(mod))
|
|
345
|
+
else:
|
|
346
|
+
self.assertIn("call void @NRT_decref(i8* %other)", str(mod))
|
|
347
|
+
|
|
348
|
+
def test_per_bb_4_legacy(self):
|
|
349
|
+
mod, stats = self.check_legacy(self.per_bb_ir_4)
|
|
350
|
+
self.assertEqual(stats.basicblock, 4)
|
|
351
|
+
# not pruned
|
|
352
|
+
# FIXME: Remove `else' once TP are no longer supported.
|
|
353
|
+
if opaque_pointers_enabled:
|
|
354
|
+
self.assertIn("call void @NRT_decref(ptr %other)", str(mod))
|
|
355
|
+
else:
|
|
356
|
+
self.assertIn("call void @NRT_decref(i8* %other)", str(mod))
|
|
248
357
|
|
|
249
358
|
|
|
250
359
|
class TestDiamond(BaseTestByIR):
|
|
@@ -265,6 +374,10 @@ bb_B:
|
|
|
265
374
|
mod, stats = self.check(self.per_diamond_1)
|
|
266
375
|
self.assertEqual(stats.diamond, 2)
|
|
267
376
|
|
|
377
|
+
def test_per_diamond_1_legacy(self):
|
|
378
|
+
mod, stats = self.check_legacy(self.per_diamond_1)
|
|
379
|
+
self.assertEqual(stats.diamond, 2)
|
|
380
|
+
|
|
268
381
|
per_diamond_2 = r"""
|
|
269
382
|
define void @main(i8* %ptr, i1 %cond) {
|
|
270
383
|
bb_A:
|
|
@@ -284,6 +397,10 @@ bb_D:
|
|
|
284
397
|
mod, stats = self.check(self.per_diamond_2)
|
|
285
398
|
self.assertEqual(stats.diamond, 2)
|
|
286
399
|
|
|
400
|
+
def test_per_diamond_2_legacy(self):
|
|
401
|
+
mod, stats = self.check_legacy(self.per_diamond_2)
|
|
402
|
+
self.assertEqual(stats.diamond, 2)
|
|
403
|
+
|
|
287
404
|
per_diamond_3 = r"""
|
|
288
405
|
define void @main(i8* %ptr, i1 %cond) {
|
|
289
406
|
bb_A:
|
|
@@ -304,6 +421,10 @@ bb_D:
|
|
|
304
421
|
mod, stats = self.check(self.per_diamond_3)
|
|
305
422
|
self.assertEqual(stats.diamond, 0)
|
|
306
423
|
|
|
424
|
+
def test_per_diamond_3_legacy(self):
|
|
425
|
+
mod, stats = self.check_legacy(self.per_diamond_3)
|
|
426
|
+
self.assertEqual(stats.diamond, 0)
|
|
427
|
+
|
|
307
428
|
per_diamond_4 = r"""
|
|
308
429
|
define void @main(i8* %ptr, i1 %cond) {
|
|
309
430
|
bb_A:
|
|
@@ -324,6 +445,10 @@ bb_D:
|
|
|
324
445
|
mod, stats = self.check(self.per_diamond_4)
|
|
325
446
|
self.assertEqual(stats.diamond, 2)
|
|
326
447
|
|
|
448
|
+
def test_per_diamond_4_legacy(self):
|
|
449
|
+
mod, stats = self.check_legacy(self.per_diamond_4)
|
|
450
|
+
self.assertEqual(stats.diamond, 2)
|
|
451
|
+
|
|
327
452
|
per_diamond_5 = r"""
|
|
328
453
|
define void @main(i8* %ptr, i1 %cond) {
|
|
329
454
|
bb_A:
|
|
@@ -345,6 +470,10 @@ bb_D:
|
|
|
345
470
|
mod, stats = self.check(self.per_diamond_5)
|
|
346
471
|
self.assertEqual(stats.diamond, 4)
|
|
347
472
|
|
|
473
|
+
def test_per_diamond_5_legacy(self):
|
|
474
|
+
mod, stats = self.check_legacy(self.per_diamond_5)
|
|
475
|
+
self.assertEqual(stats.diamond, 4)
|
|
476
|
+
|
|
348
477
|
|
|
349
478
|
class TestFanout(BaseTestByIR):
|
|
350
479
|
"""More complex cases are tested in TestRefPrunePass
|
|
@@ -370,6 +499,10 @@ bb_C:
|
|
|
370
499
|
mod, stats = self.check(self.fanout_1)
|
|
371
500
|
self.assertEqual(stats.fanout, 3)
|
|
372
501
|
|
|
502
|
+
def test_fanout_1_legacy(self):
|
|
503
|
+
mod, stats = self.check_legacy(self.fanout_1)
|
|
504
|
+
self.assertEqual(stats.fanout, 3)
|
|
505
|
+
|
|
373
506
|
fanout_2 = r"""
|
|
374
507
|
define void @main(i8* %ptr, i1 %cond, i8** %excinfo) {
|
|
375
508
|
bb_A:
|
|
@@ -388,6 +521,10 @@ bb_C:
|
|
|
388
521
|
mod, stats = self.check(self.fanout_2)
|
|
389
522
|
self.assertEqual(stats.fanout, 0)
|
|
390
523
|
|
|
524
|
+
def test_fanout_2_legacy(self):
|
|
525
|
+
mod, stats = self.check_legacy(self.fanout_2)
|
|
526
|
+
self.assertEqual(stats.fanout, 0)
|
|
527
|
+
|
|
391
528
|
fanout_3 = r"""
|
|
392
529
|
define void @main(i8* %ptr, i1 %cond) {
|
|
393
530
|
bb_A:
|
|
@@ -416,6 +553,16 @@ bb_C:
|
|
|
416
553
|
mod, stats = self.check(self.fanout_3, subgraph_limit=1)
|
|
417
554
|
self.assertEqual(stats.fanout, 0)
|
|
418
555
|
|
|
556
|
+
def test_fanout_3_legacy(self):
|
|
557
|
+
mod, stats = self.check_legacy(self.fanout_3)
|
|
558
|
+
self.assertEqual(stats.fanout, 6)
|
|
559
|
+
|
|
560
|
+
def test_fanout_3_limited_legacy(self):
|
|
561
|
+
# With subgraph limit at 1, it is essentially turning off the fanout
|
|
562
|
+
# pruner.
|
|
563
|
+
mod, stats = self.check_legacy(self.fanout_3, subgraph_limit=1)
|
|
564
|
+
self.assertEqual(stats.fanout, 0)
|
|
565
|
+
|
|
419
566
|
|
|
420
567
|
class TestFanoutRaise(BaseTestByIR):
|
|
421
568
|
refprune_bitmask = llvm.RefPruneSubpasses.FANOUT_RAISE
|
|
@@ -439,6 +586,10 @@ bb_C:
|
|
|
439
586
|
mod, stats = self.check(self.fanout_raise_1)
|
|
440
587
|
self.assertEqual(stats.fanout_raise, 2)
|
|
441
588
|
|
|
589
|
+
def test_fanout_raise_1_legacy(self):
|
|
590
|
+
mod, stats = self.check_legacy(self.fanout_raise_1)
|
|
591
|
+
self.assertEqual(stats.fanout_raise, 2)
|
|
592
|
+
|
|
442
593
|
fanout_raise_2 = r"""
|
|
443
594
|
define i32 @main(i8* %ptr, i1 %cond, i8** %excinfo) {
|
|
444
595
|
bb_A:
|
|
@@ -461,6 +612,12 @@ bb_C:
|
|
|
461
612
|
mod, stats = self.check(self.fanout_raise_2)
|
|
462
613
|
self.assertEqual(stats.fanout_raise, 0)
|
|
463
614
|
|
|
615
|
+
def test_fanout_raise_2_legacy(self):
|
|
616
|
+
# This is ensuring that fanout_raise is not pruning when the metadata
|
|
617
|
+
# is incorrectly named.
|
|
618
|
+
mod, stats = self.check_legacy(self.fanout_raise_2)
|
|
619
|
+
self.assertEqual(stats.fanout_raise, 0)
|
|
620
|
+
|
|
464
621
|
fanout_raise_3 = r"""
|
|
465
622
|
define i32 @main(i8* %ptr, i1 %cond, i8** %excinfo) {
|
|
466
623
|
bb_A:
|
|
@@ -481,6 +638,10 @@ bb_C:
|
|
|
481
638
|
mod, stats = self.check(self.fanout_raise_3)
|
|
482
639
|
self.assertEqual(stats.fanout_raise, 2)
|
|
483
640
|
|
|
641
|
+
def test_fanout_raise_3_legacy(self):
|
|
642
|
+
mod, stats = self.check_legacy(self.fanout_raise_3)
|
|
643
|
+
self.assertEqual(stats.fanout_raise, 2)
|
|
644
|
+
|
|
484
645
|
fanout_raise_4 = r"""
|
|
485
646
|
define i32 @main(i8* %ptr, i1 %cond, i8** %excinfo) {
|
|
486
647
|
bb_A:
|
|
@@ -499,6 +660,10 @@ bb_C:
|
|
|
499
660
|
mod, stats = self.check(self.fanout_raise_4)
|
|
500
661
|
self.assertEqual(stats.fanout_raise, 0)
|
|
501
662
|
|
|
663
|
+
def test_fanout_raise_4_legacy(self):
|
|
664
|
+
mod, stats = self.check_legacy(self.fanout_raise_4)
|
|
665
|
+
self.assertEqual(stats.fanout_raise, 0)
|
|
666
|
+
|
|
502
667
|
fanout_raise_5 = r"""
|
|
503
668
|
define i32 @main(i8* %ptr, i1 %cond, i8** %excinfo) {
|
|
504
669
|
bb_A:
|
|
@@ -521,6 +686,10 @@ common.ret:
|
|
|
521
686
|
mod, stats = self.check(self.fanout_raise_5)
|
|
522
687
|
self.assertEqual(stats.fanout_raise, 2)
|
|
523
688
|
|
|
689
|
+
def test_fanout_raise_5_legacy(self):
|
|
690
|
+
mod, stats = self.check_legacy(self.fanout_raise_5)
|
|
691
|
+
self.assertEqual(stats.fanout_raise, 2)
|
|
692
|
+
|
|
524
693
|
# test case 6 is from https://github.com/numba/llvmlite/issues/1023
|
|
525
694
|
fanout_raise_6 = r"""
|
|
526
695
|
define i32 @main(i8* %ptr, i1 %cond1, i1 %cond2, i1 %cond3, i8** %excinfo) {
|
|
@@ -552,6 +721,10 @@ bb_F:
|
|
|
552
721
|
mod, stats = self.check(self.fanout_raise_6)
|
|
553
722
|
self.assertEqual(stats.fanout_raise, 7)
|
|
554
723
|
|
|
724
|
+
def test_fanout_raise_6_legacy(self):
|
|
725
|
+
mod, stats = self.check_legacy(self.fanout_raise_6)
|
|
726
|
+
self.assertEqual(stats.fanout_raise, 7)
|
|
727
|
+
|
|
555
728
|
|
|
556
729
|
if __name__ == '__main__':
|
|
557
730
|
unittest.main()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: llvmlite
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.44.0rc2
|
|
4
4
|
Summary: lightweight wrapper around basic LLVM functionality
|
|
5
5
|
Home-page: http://llvmlite.readthedocs.io
|
|
6
6
|
License: BSD
|
|
@@ -10,13 +10,13 @@ Classifier: Intended Audience :: Developers
|
|
|
10
10
|
Classifier: Operating System :: OS Independent
|
|
11
11
|
Classifier: Programming Language :: Python
|
|
12
12
|
Classifier: Programming Language :: Python :: 3
|
|
13
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
14
13
|
Classifier: Programming Language :: Python :: 3.10
|
|
15
14
|
Classifier: Programming Language :: Python :: 3.11
|
|
16
15
|
Classifier: Programming Language :: Python :: 3.12
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
17
17
|
Classifier: Topic :: Software Development :: Code Generators
|
|
18
18
|
Classifier: Topic :: Software Development :: Compilers
|
|
19
|
-
Requires-Python: >=3.
|
|
19
|
+
Requires-Python: >=3.10
|
|
20
20
|
License-File: LICENSE
|
|
21
21
|
License-File: LICENSE.thirdparty
|
|
22
22
|
|
|
@@ -79,17 +79,18 @@ Key Benefits
|
|
|
79
79
|
Compatibility
|
|
80
80
|
=============
|
|
81
81
|
|
|
82
|
-
llvmlite has been tested with Python 3.
|
|
82
|
+
llvmlite has been tested with Python 3.10 -- 3.13 and is likely to work with
|
|
83
83
|
greater versions.
|
|
84
84
|
|
|
85
|
-
As of version 0.
|
|
85
|
+
As of version 0.44.0, llvmlite requires LLVM 15.x.x on all architectures
|
|
86
86
|
|
|
87
87
|
Historical compatibility table:
|
|
88
88
|
|
|
89
89
|
================= ========================
|
|
90
90
|
llvmlite versions compatible LLVM versions
|
|
91
91
|
================= ========================
|
|
92
|
-
0.
|
|
92
|
+
0.44.0 - ...... 15.x.x
|
|
93
|
+
0.41.0 - 0.43.0 14.x.x
|
|
93
94
|
0.40.0 - 0.40.1 11.x.x and 14.x.x (12.x.x and 13.x.x untested but may work)
|
|
94
95
|
0.37.0 - 0.39.1 11.x.x
|
|
95
96
|
0.34.0 - 0.36.0 10.0.x (9.0.x for ``aarch64`` only)
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
llvmlite/__init__.py,sha256=0ZBnzGNkAKkpurkYwTruxE5bGAR8HbfU92LAsirsZOs,364
|
|
2
|
+
llvmlite/_version.py,sha256=_w30c2QE-fndevz2jBXZV67uiKeyhbRW9vJRbtlo5K0,432
|
|
3
|
+
llvmlite/utils.py,sha256=pjxZnAAR2kmKLUTyIEoHKVFt70rK9kQMgBp7x2KDBn0,724
|
|
4
|
+
llvmlite/binding/__init__.py,sha256=mQukSZ4dbzFGkEgxrzqjW8lzww8MRq72UTHCQPpewkE,455
|
|
5
|
+
llvmlite/binding/analysis.py,sha256=9hzt_SNJNY-VUPIaOQcI3ZM0Ock2uLjzS8KNkkFZLQI,2322
|
|
6
|
+
llvmlite/binding/common.py,sha256=HK0ftE8o6i1_hLkwrpN73p6AFaDzOvPJ0KHte8ikCNk,776
|
|
7
|
+
llvmlite/binding/context.py,sha256=9daowjuBGe1a1tjEORXbcgjUVFJQXkk7N2vnISViby4,1137
|
|
8
|
+
llvmlite/binding/dylib.py,sha256=1yBZq1rcP-GDrHDyZkNMrEHAuD43yK3v_sQ_wQ2fAmE,1345
|
|
9
|
+
llvmlite/binding/executionengine.py,sha256=h8EdSkQQeNjzyBL5psNeOMeuyiAtPN_UHPssr1L-tPo,11352
|
|
10
|
+
llvmlite/binding/ffi.py,sha256=WVmQUUYU1CCascZi8yXNUePjcFOVhS-UQlVFm1NldmU,12761
|
|
11
|
+
llvmlite/binding/initfini.py,sha256=F6r9ubo5qngIFRz08022vOxFMVikstcu_tq8LrXsJCM,1668
|
|
12
|
+
llvmlite/binding/linker.py,sha256=Pd3ePT5kBa7ZxUTApskS3zymsZ7uJ932QF88oRpbc2Y,509
|
|
13
|
+
llvmlite/binding/llvmlite.dll,sha256=ib0qOH2jsRgC_luCayBq9IYfKs0aGmUgn8_NGvK_mQA,88621056
|
|
14
|
+
llvmlite/binding/module.py,sha256=05ig4UzCu8Vdcf1Uk2iFxlbDvYtMksNM4fER2P-0Kz8,11523
|
|
15
|
+
llvmlite/binding/newpassmanagers.py,sha256=9WPX94bckXMzoH20olvRoHmygx3K5V4ZMYzt4jhaVxM,11701
|
|
16
|
+
llvmlite/binding/object_file.py,sha256=4mj6EkKafX4ieGy-bSvU46sckYNFzLLWNhLSvkfnGeM,2746
|
|
17
|
+
llvmlite/binding/options.py,sha256=DTfM0Feim-maHwAc9C0Q4HHb8ootXlI3RtdzDX3-CKQ,526
|
|
18
|
+
llvmlite/binding/orcjit.py,sha256=eY0sxPJTBOv7Q1rUVMPTF2AEkeYrKzKJ8QbRzDuUx8Q,12198
|
|
19
|
+
llvmlite/binding/passmanagers.py,sha256=78YjfBpeBbV17qKoGbUhyFE1pfwVnvUw-eR08Q0OdVA,36145
|
|
20
|
+
llvmlite/binding/targets.py,sha256=nKLJecd-reeNvHWFYIYYXlvipajapsKj1hJLq71GXG8,17863
|
|
21
|
+
llvmlite/binding/transforms.py,sha256=bGrsY0Wnr9Zsk8Q2BrkA9bZjHCwYAQZE1AMl0HaF4jM,5098
|
|
22
|
+
llvmlite/binding/typeref.py,sha256=y66zwDNuImA38iFUBFC3i-ePhqMUeMCw467IZGDrBnw,8791
|
|
23
|
+
llvmlite/binding/value.py,sha256=sd-JGpW2RDg1g5TAELeJMNaRp_mQjDvhfxlExWBtggI,20109
|
|
24
|
+
llvmlite/ir/__init__.py,sha256=lQuvg8hwt1obBTWybIqlxCFtnIncDK1gHWcwpDH4tO0,269
|
|
25
|
+
llvmlite/ir/_utils.py,sha256=6EbPTTZ7lVyxxHIzIx7PV8Tjl-aUTewotGwesD_6xmY,2081
|
|
26
|
+
llvmlite/ir/builder.py,sha256=zPC5g1Hu3oEgAWBrchoq7BojAR8Xi9MP6EyOPYVKxGI,34748
|
|
27
|
+
llvmlite/ir/context.py,sha256=GB8Hm66vy9rkpENf_Psb90g4Tf20AzcbF4gvnAWN2j0,560
|
|
28
|
+
llvmlite/ir/instructions.py,sha256=HAmdrDyWgR947-GlLINFT-wf5ptFSpev2Z3RVlg-VeY,33973
|
|
29
|
+
llvmlite/ir/module.py,sha256=8URQg2_RKoEi0SbgY7DDBM5Veb-v1w9P1-hIc7W8T8Y,9320
|
|
30
|
+
llvmlite/ir/transforms.py,sha256=AS59PY8GaEUITpPMGJefuK_UUJxFHgPYZcok8HlZJaU,1616
|
|
31
|
+
llvmlite/ir/types.py,sha256=OFNElaCDJTEHhFoEJw4xJY3DDXkFk-jHTR2KK3JDuf4,20756
|
|
32
|
+
llvmlite/ir/values.py,sha256=5Ck6qpa0-xhisdFDkmfIPwjSANEJP0ecQ0IgfPU2bkI,35240
|
|
33
|
+
llvmlite/tests/__init__.py,sha256=bjwcCUkizqVJEjD0YGSfXc5KA99tFI-6NK78Mr-zRrU,1435
|
|
34
|
+
llvmlite/tests/__main__.py,sha256=akCE3R4XPkV3ywVk4LsKMplMU_u8MmK15bVnYRVJFfI,43
|
|
35
|
+
llvmlite/tests/customize.py,sha256=TWOCtgBTa57uCogdEOnWsX-jKKssTbWAItET3-9INTs,13675
|
|
36
|
+
llvmlite/tests/refprune_proto.py,sha256=4ZwWsoDzVx6Ih-Z8yVxctOjEhGRKonV3QkL2815Mmiw,9006
|
|
37
|
+
llvmlite/tests/test_binding.py,sha256=f0q3_IwGjmsd0UK9Dp-ShO2t9xUXEXaYELpFXmr7CXA,112419
|
|
38
|
+
llvmlite/tests/test_ir.py,sha256=kuuzEDUSujOUZEGMq3QhAm0eKiuVm6j3l_5eM8Z_VV8,121554
|
|
39
|
+
llvmlite/tests/test_refprune.py,sha256=bhEdCqqI1df_dxivGONUBL56gn8na8N6XDbvNil1AIE,22350
|
|
40
|
+
llvmlite/tests/test_valuerepr.py,sha256=uSEyNSVuo2JFZDL7QARFgsbKiNzgR2HFALcwK6yXSGc,2049
|
|
41
|
+
llvmlite-0.44.0rc2.dist-info/LICENSE,sha256=8z_CZxFReVSrz6WQQ-4H0BpmI7ZhwdJsxpsJM85P-5g,1322
|
|
42
|
+
llvmlite-0.44.0rc2.dist-info/LICENSE.thirdparty,sha256=e1ZMevmrRG0kW6Zq3IzaL2HR0WL4QomVV0megLcVmTo,12786
|
|
43
|
+
llvmlite-0.44.0rc2.dist-info/METADATA,sha256=TWOejITh4jM0eDu7_ghoTmr8vmgyfpkSqQ0Gf8cp3pM,4955
|
|
44
|
+
llvmlite-0.44.0rc2.dist-info/WHEEL,sha256=yEpuRje-u1Z_HrXQj-UTAfIAegW_HcP2GJ7Ek8BJkUM,102
|
|
45
|
+
llvmlite-0.44.0rc2.dist-info/top_level.txt,sha256=WJi8Gq92jA2wv_aV1Oshp9iZ-zMa43Kcmw80kWeGYGA,9
|
|
46
|
+
llvmlite-0.44.0rc2.dist-info/RECORD,,
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
llvmlite/__init__.py,sha256=H1Gry6WUS7YcF46WxcqGc4J5D5JErCeM60Db2awDFM8,95
|
|
2
|
-
llvmlite/_version.py,sha256=ZJaGh_3dgGZCzdfP_zlumTYA5oB89BJr2ErxxT6iH_o,432
|
|
3
|
-
llvmlite/utils.py,sha256=pjxZnAAR2kmKLUTyIEoHKVFt70rK9kQMgBp7x2KDBn0,724
|
|
4
|
-
llvmlite/binding/__init__.py,sha256=t2JUIsAZBjO_KEMqJSYZSj0FeJFshRiSc7uz4nIv7qo,423
|
|
5
|
-
llvmlite/binding/analysis.py,sha256=9hzt_SNJNY-VUPIaOQcI3ZM0Ock2uLjzS8KNkkFZLQI,2322
|
|
6
|
-
llvmlite/binding/common.py,sha256=HK0ftE8o6i1_hLkwrpN73p6AFaDzOvPJ0KHte8ikCNk,776
|
|
7
|
-
llvmlite/binding/context.py,sha256=dbIdktL3-H_IhEjrXdhXcYI85DH6XFrL7l3Ce9GWOlM,686
|
|
8
|
-
llvmlite/binding/dylib.py,sha256=1yBZq1rcP-GDrHDyZkNMrEHAuD43yK3v_sQ_wQ2fAmE,1345
|
|
9
|
-
llvmlite/binding/executionengine.py,sha256=h8EdSkQQeNjzyBL5psNeOMeuyiAtPN_UHPssr1L-tPo,11352
|
|
10
|
-
llvmlite/binding/ffi.py,sha256=M1vNcqm4RfTDothQVXdokG02cPpWrBK2_wnC32dM6sQ,12478
|
|
11
|
-
llvmlite/binding/initfini.py,sha256=F6r9ubo5qngIFRz08022vOxFMVikstcu_tq8LrXsJCM,1668
|
|
12
|
-
llvmlite/binding/linker.py,sha256=Pd3ePT5kBa7ZxUTApskS3zymsZ7uJ932QF88oRpbc2Y,509
|
|
13
|
-
llvmlite/binding/llvmlite.dll,sha256=H9yQQtHGE4Q0GlqZ20vnmZm5VEsUFcHEbMaJRSpzsCg,80394752
|
|
14
|
-
llvmlite/binding/module.py,sha256=05ig4UzCu8Vdcf1Uk2iFxlbDvYtMksNM4fER2P-0Kz8,11523
|
|
15
|
-
llvmlite/binding/object_file.py,sha256=4mj6EkKafX4ieGy-bSvU46sckYNFzLLWNhLSvkfnGeM,2746
|
|
16
|
-
llvmlite/binding/options.py,sha256=DTfM0Feim-maHwAc9C0Q4HHb8ootXlI3RtdzDX3-CKQ,526
|
|
17
|
-
llvmlite/binding/orcjit.py,sha256=eY0sxPJTBOv7Q1rUVMPTF2AEkeYrKzKJ8QbRzDuUx8Q,12198
|
|
18
|
-
llvmlite/binding/passmanagers.py,sha256=sD7wKxL7fvX300K2h0A3aO8cuF5jCyO1AduYOfoc7lw,36018
|
|
19
|
-
llvmlite/binding/targets.py,sha256=Qj1HrDQ17qPH3kfDRCuYrFuOjCi1X7A2qMtltOSFHSs,15252
|
|
20
|
-
llvmlite/binding/transforms.py,sha256=bGrsY0Wnr9Zsk8Q2BrkA9bZjHCwYAQZE1AMl0HaF4jM,5098
|
|
21
|
-
llvmlite/binding/typeref.py,sha256=GNzmyKQLAj1qUKYAGhCCmfppxMLZvwwH-Cy3LZjirGs,5732
|
|
22
|
-
llvmlite/binding/value.py,sha256=gLKxJVDDea1NvZTEhsNsp4NB49uaITCpif9yHAdMVB4,19574
|
|
23
|
-
llvmlite/ir/__init__.py,sha256=lQuvg8hwt1obBTWybIqlxCFtnIncDK1gHWcwpDH4tO0,269
|
|
24
|
-
llvmlite/ir/_utils.py,sha256=6EbPTTZ7lVyxxHIzIx7PV8Tjl-aUTewotGwesD_6xmY,2081
|
|
25
|
-
llvmlite/ir/builder.py,sha256=oHp07eCDznehP578ut-lsOAuGZIJC7Qe6en4tUoMVs8,34598
|
|
26
|
-
llvmlite/ir/context.py,sha256=uCaNbjV0NzlTmBwRQSCX9X_v9MYTj0L1HWzphOTXY5w,538
|
|
27
|
-
llvmlite/ir/instructions.py,sha256=RjW5hOMIxXJkcoohDJd1jyejZKdEH041NoVIJJOdh8I,32660
|
|
28
|
-
llvmlite/ir/module.py,sha256=8URQg2_RKoEi0SbgY7DDBM5Veb-v1w9P1-hIc7W8T8Y,9320
|
|
29
|
-
llvmlite/ir/transforms.py,sha256=AS59PY8GaEUITpPMGJefuK_UUJxFHgPYZcok8HlZJaU,1616
|
|
30
|
-
llvmlite/ir/types.py,sha256=CvfNF4k37uje8iJxiwstKhTt0j81cOv26pa4DK7yqQk,16763
|
|
31
|
-
llvmlite/ir/values.py,sha256=ahu3zTWTRWz9yPvJJFDv_HlDYZSHgO9jgrKQBYG_0Eg,35218
|
|
32
|
-
llvmlite/tests/__init__.py,sha256=bjwcCUkizqVJEjD0YGSfXc5KA99tFI-6NK78Mr-zRrU,1435
|
|
33
|
-
llvmlite/tests/__main__.py,sha256=akCE3R4XPkV3ywVk4LsKMplMU_u8MmK15bVnYRVJFfI,43
|
|
34
|
-
llvmlite/tests/customize.py,sha256=TWOCtgBTa57uCogdEOnWsX-jKKssTbWAItET3-9INTs,13675
|
|
35
|
-
llvmlite/tests/refprune_proto.py,sha256=4ZwWsoDzVx6Ih-Z8yVxctOjEhGRKonV3QkL2815Mmiw,9006
|
|
36
|
-
llvmlite/tests/test_binding.py,sha256=f4nlMJDmgrFaSftf1R9Bf0JFqi7ULXSky3yEjpEoLZg,89193
|
|
37
|
-
llvmlite/tests/test_ir.py,sha256=36b3ucGPSjtiVi-k5LXSDksjW0MmwtyydgBuLj24pgc,108434
|
|
38
|
-
llvmlite/tests/test_refprune.py,sha256=1BrCU971C-S2xWZRdR71kYAWZ_qdiFu2slkEoY-AVHA,15645
|
|
39
|
-
llvmlite/tests/test_valuerepr.py,sha256=uSEyNSVuo2JFZDL7QARFgsbKiNzgR2HFALcwK6yXSGc,2049
|
|
40
|
-
llvmlite-0.43.0rc1.dist-info/LICENSE,sha256=8z_CZxFReVSrz6WQQ-4H0BpmI7ZhwdJsxpsJM85P-5g,1322
|
|
41
|
-
llvmlite-0.43.0rc1.dist-info/LICENSE.thirdparty,sha256=e1ZMevmrRG0kW6Zq3IzaL2HR0WL4QomVV0megLcVmTo,12786
|
|
42
|
-
llvmlite-0.43.0rc1.dist-info/METADATA,sha256=bPTfDtz8hfdqbyNzCoUksnYQnPw4KjLHW-cOlJi2ZmE,4925
|
|
43
|
-
llvmlite-0.43.0rc1.dist-info/WHEEL,sha256=nSybvzWlmdJnHiUQSY-d7V1ycwEVUTqXiTvr2eshg44,102
|
|
44
|
-
llvmlite-0.43.0rc1.dist-info/top_level.txt,sha256=WJi8Gq92jA2wv_aV1Oshp9iZ-zMa43Kcmw80kWeGYGA,9
|
|
45
|
-
llvmlite-0.43.0rc1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|