llvmlite 0.44.0rc2__cp311-cp311-macosx_11_0_arm64.whl → 0.45.0rc1__cp311-cp311-macosx_11_0_arm64.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 +6 -5
- llvmlite/_version.py +2 -2
- llvmlite/binding/__init__.py +1 -2
- llvmlite/binding/config.py +143 -0
- llvmlite/binding/context.py +2 -10
- llvmlite/binding/ffi.py +1 -1
- llvmlite/binding/initfini.py +14 -2
- llvmlite/binding/libllvmlite.dylib +0 -0
- llvmlite/binding/newpassmanagers.py +759 -67
- llvmlite/binding/targets.py +14 -72
- llvmlite/binding/typeref.py +1 -19
- llvmlite/ir/module.py +11 -1
- llvmlite/ir/types.py +15 -19
- llvmlite/tests/refprune_proto.py +1 -0
- llvmlite/tests/test_binding.py +394 -452
- llvmlite/tests/test_ir.py +169 -68
- llvmlite/tests/test_refprune.py +10 -166
- {llvmlite-0.44.0rc2.dist-info → llvmlite-0.45.0rc1.dist-info}/METADATA +13 -8
- llvmlite-0.45.0rc1.dist-info/RECORD +44 -0
- {llvmlite-0.44.0rc2.dist-info → llvmlite-0.45.0rc1.dist-info}/WHEEL +1 -1
- llvmlite/binding/passmanagers.py +0 -946
- llvmlite/binding/transforms.py +0 -151
- llvmlite-0.44.0rc2.dist-info/LICENSE.thirdparty +0 -225
- llvmlite-0.44.0rc2.dist-info/RECORD +0 -46
- {llvmlite-0.44.0rc2.dist-info → llvmlite-0.45.0rc1.dist-info/licenses}/LICENSE +0 -0
- {llvmlite-0.44.0rc2.dist-info → llvmlite-0.45.0rc1.dist-info}/top_level.txt +0 -0
llvmlite/tests/test_refprune.py
CHANGED
|
@@ -1,15 +1,11 @@
|
|
|
1
1
|
import unittest
|
|
2
|
+
from collections import defaultdict
|
|
2
3
|
from llvmlite import ir
|
|
3
4
|
from llvmlite import binding as llvm
|
|
4
5
|
from llvmlite.tests import TestCase
|
|
5
6
|
|
|
6
7
|
import llvmlite.tests.refprune_proto as proto
|
|
7
8
|
|
|
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
|
|
12
|
-
|
|
13
9
|
|
|
14
10
|
def _iterate_cases(generate_test):
|
|
15
11
|
def wrap(fn):
|
|
@@ -136,16 +132,13 @@ class TestRefPrunePass(TestCase, PassManagerMixin):
|
|
|
136
132
|
pm.run(mod, pb)
|
|
137
133
|
return mod
|
|
138
134
|
|
|
139
|
-
def apply_refprune_legacy(self, irmod):
|
|
140
|
-
mod = llvm.parse_assembly(str(irmod))
|
|
141
|
-
pm = llvm.ModulePassManager()
|
|
142
|
-
pm.add_refprune_pass()
|
|
143
|
-
pm.run(mod)
|
|
144
|
-
return mod
|
|
145
|
-
|
|
146
135
|
def check(self, mod, expected, nodes):
|
|
147
136
|
# preprocess incref/decref locations
|
|
148
|
-
|
|
137
|
+
|
|
138
|
+
# LLVM >= 18 adds an extra empty block "LoopExit" which causes
|
|
139
|
+
# regular dict to throw KeyError
|
|
140
|
+
d = defaultdict(lambda: defaultdict(int))
|
|
141
|
+
|
|
149
142
|
for k, vs in nodes.items():
|
|
150
143
|
n_incref = vs.count('incref')
|
|
151
144
|
n_decref = vs.count('decref')
|
|
@@ -160,6 +153,7 @@ class TestRefPrunePass(TestCase, PassManagerMixin):
|
|
|
160
153
|
for f in mod.functions:
|
|
161
154
|
if f.name == 'main':
|
|
162
155
|
break
|
|
156
|
+
|
|
163
157
|
# check each BB
|
|
164
158
|
for bb in f.blocks:
|
|
165
159
|
stats = d[bb.name]
|
|
@@ -175,19 +169,10 @@ class TestRefPrunePass(TestCase, PassManagerMixin):
|
|
|
175
169
|
outmod = self.apply_refprune(irmod)
|
|
176
170
|
self.check(outmod, expected, nodes)
|
|
177
171
|
|
|
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
|
-
|
|
184
172
|
# Generate tests
|
|
185
173
|
for name, case in _iterate_cases(generate_test):
|
|
186
174
|
locals()[name] = case
|
|
187
175
|
|
|
188
|
-
for name, case in _iterate_cases(generate_test_legacy):
|
|
189
|
-
locals()[name + "_legacy"] = case
|
|
190
|
-
|
|
191
176
|
|
|
192
177
|
class BaseTestByIR(TestCase, PassManagerMixin):
|
|
193
178
|
refprune_bitmask = 0
|
|
@@ -211,19 +196,6 @@ declare void @NRT_decref(i8* %ptr)
|
|
|
211
196
|
after = llvm.dump_refprune_stats()
|
|
212
197
|
return mod, after - before
|
|
213
198
|
|
|
214
|
-
def check_legacy(self, irmod, subgraph_limit=None):
|
|
215
|
-
mod = llvm.parse_assembly(f"{self.prologue}\n{irmod}")
|
|
216
|
-
pm = llvm.ModulePassManager()
|
|
217
|
-
if subgraph_limit is None:
|
|
218
|
-
pm.add_refprune_pass(self.refprune_bitmask)
|
|
219
|
-
else:
|
|
220
|
-
pm.add_refprune_pass(self.refprune_bitmask,
|
|
221
|
-
subgraph_limit=subgraph_limit)
|
|
222
|
-
before = llvm.dump_refprune_stats()
|
|
223
|
-
pm.run(mod)
|
|
224
|
-
after = llvm.dump_refprune_stats()
|
|
225
|
-
return mod, after - before
|
|
226
|
-
|
|
227
199
|
|
|
228
200
|
class TestPerBB(BaseTestByIR):
|
|
229
201
|
refprune_bitmask = llvm.RefPruneSubpasses.PER_BB
|
|
@@ -240,10 +212,6 @@ define void @main(i8* %ptr) {
|
|
|
240
212
|
mod, stats = self.check(self.per_bb_ir_1)
|
|
241
213
|
self.assertEqual(stats.basicblock, 2)
|
|
242
214
|
|
|
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
|
-
|
|
247
215
|
per_bb_ir_2 = r"""
|
|
248
216
|
define void @main(i8* %ptr) {
|
|
249
217
|
call void @NRT_incref(i8* %ptr)
|
|
@@ -259,21 +227,7 @@ define void @main(i8* %ptr) {
|
|
|
259
227
|
mod, stats = self.check(self.per_bb_ir_2)
|
|
260
228
|
self.assertEqual(stats.basicblock, 4)
|
|
261
229
|
# not pruned
|
|
262
|
-
|
|
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))
|
|
230
|
+
self.assertIn("call void @NRT_incref(ptr %ptr)", str(mod))
|
|
277
231
|
|
|
278
232
|
per_bb_ir_3 = r"""
|
|
279
233
|
define void @main(ptr %ptr, ptr %other) {
|
|
@@ -283,35 +237,13 @@ define void @main(ptr %ptr, ptr %other) {
|
|
|
283
237
|
call void @NRT_decref(ptr %other)
|
|
284
238
|
ret void
|
|
285
239
|
}
|
|
286
|
-
""" if opaque_pointers_enabled else r"""
|
|
287
|
-
define void @main(i8* %ptr, i8* %other) {
|
|
288
|
-
call void @NRT_incref(i8* %ptr)
|
|
289
|
-
call void @NRT_incref(i8* %ptr)
|
|
290
|
-
call void @NRT_decref(i8* %ptr)
|
|
291
|
-
call void @NRT_decref(i8* %other)
|
|
292
|
-
ret void
|
|
293
|
-
}
|
|
294
240
|
"""
|
|
295
241
|
|
|
296
242
|
def test_per_bb_3(self):
|
|
297
243
|
mod, stats = self.check(self.per_bb_ir_3)
|
|
298
244
|
self.assertEqual(stats.basicblock, 2)
|
|
299
245
|
# not pruned
|
|
300
|
-
|
|
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))
|
|
246
|
+
self.assertIn("call void @NRT_decref(ptr %other)", str(mod))
|
|
315
247
|
|
|
316
248
|
per_bb_ir_4 = r"""
|
|
317
249
|
; reordered
|
|
@@ -323,37 +255,13 @@ define void @main(ptr %ptr, ptr %other) {
|
|
|
323
255
|
call void @NRT_incref(ptr %ptr)
|
|
324
256
|
ret void
|
|
325
257
|
}
|
|
326
|
-
""" if opaque_pointers_enabled else r"""
|
|
327
|
-
; reordered
|
|
328
|
-
define void @main(i8* %ptr, i8* %other) {
|
|
329
|
-
call void @NRT_incref(i8* %ptr)
|
|
330
|
-
call void @NRT_decref(i8* %ptr)
|
|
331
|
-
call void @NRT_decref(i8* %ptr)
|
|
332
|
-
call void @NRT_decref(i8* %other)
|
|
333
|
-
call void @NRT_incref(i8* %ptr)
|
|
334
|
-
ret void
|
|
335
|
-
}
|
|
336
258
|
"""
|
|
337
259
|
|
|
338
260
|
def test_per_bb_4(self):
|
|
339
261
|
mod, stats = self.check(self.per_bb_ir_4)
|
|
340
262
|
self.assertEqual(stats.basicblock, 4)
|
|
341
263
|
# not pruned
|
|
342
|
-
|
|
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))
|
|
264
|
+
self.assertIn("call void @NRT_decref(ptr %other)", str(mod))
|
|
357
265
|
|
|
358
266
|
|
|
359
267
|
class TestDiamond(BaseTestByIR):
|
|
@@ -374,10 +282,6 @@ bb_B:
|
|
|
374
282
|
mod, stats = self.check(self.per_diamond_1)
|
|
375
283
|
self.assertEqual(stats.diamond, 2)
|
|
376
284
|
|
|
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
|
-
|
|
381
285
|
per_diamond_2 = r"""
|
|
382
286
|
define void @main(i8* %ptr, i1 %cond) {
|
|
383
287
|
bb_A:
|
|
@@ -397,10 +301,6 @@ bb_D:
|
|
|
397
301
|
mod, stats = self.check(self.per_diamond_2)
|
|
398
302
|
self.assertEqual(stats.diamond, 2)
|
|
399
303
|
|
|
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
|
-
|
|
404
304
|
per_diamond_3 = r"""
|
|
405
305
|
define void @main(i8* %ptr, i1 %cond) {
|
|
406
306
|
bb_A:
|
|
@@ -421,10 +321,6 @@ bb_D:
|
|
|
421
321
|
mod, stats = self.check(self.per_diamond_3)
|
|
422
322
|
self.assertEqual(stats.diamond, 0)
|
|
423
323
|
|
|
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
|
-
|
|
428
324
|
per_diamond_4 = r"""
|
|
429
325
|
define void @main(i8* %ptr, i1 %cond) {
|
|
430
326
|
bb_A:
|
|
@@ -445,10 +341,6 @@ bb_D:
|
|
|
445
341
|
mod, stats = self.check(self.per_diamond_4)
|
|
446
342
|
self.assertEqual(stats.diamond, 2)
|
|
447
343
|
|
|
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
|
-
|
|
452
344
|
per_diamond_5 = r"""
|
|
453
345
|
define void @main(i8* %ptr, i1 %cond) {
|
|
454
346
|
bb_A:
|
|
@@ -470,10 +362,6 @@ bb_D:
|
|
|
470
362
|
mod, stats = self.check(self.per_diamond_5)
|
|
471
363
|
self.assertEqual(stats.diamond, 4)
|
|
472
364
|
|
|
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
|
-
|
|
477
365
|
|
|
478
366
|
class TestFanout(BaseTestByIR):
|
|
479
367
|
"""More complex cases are tested in TestRefPrunePass
|
|
@@ -499,10 +387,6 @@ bb_C:
|
|
|
499
387
|
mod, stats = self.check(self.fanout_1)
|
|
500
388
|
self.assertEqual(stats.fanout, 3)
|
|
501
389
|
|
|
502
|
-
def test_fanout_1_legacy(self):
|
|
503
|
-
mod, stats = self.check_legacy(self.fanout_1)
|
|
504
|
-
self.assertEqual(stats.fanout, 3)
|
|
505
|
-
|
|
506
390
|
fanout_2 = r"""
|
|
507
391
|
define void @main(i8* %ptr, i1 %cond, i8** %excinfo) {
|
|
508
392
|
bb_A:
|
|
@@ -521,10 +405,6 @@ bb_C:
|
|
|
521
405
|
mod, stats = self.check(self.fanout_2)
|
|
522
406
|
self.assertEqual(stats.fanout, 0)
|
|
523
407
|
|
|
524
|
-
def test_fanout_2_legacy(self):
|
|
525
|
-
mod, stats = self.check_legacy(self.fanout_2)
|
|
526
|
-
self.assertEqual(stats.fanout, 0)
|
|
527
|
-
|
|
528
408
|
fanout_3 = r"""
|
|
529
409
|
define void @main(i8* %ptr, i1 %cond) {
|
|
530
410
|
bb_A:
|
|
@@ -553,16 +433,6 @@ bb_C:
|
|
|
553
433
|
mod, stats = self.check(self.fanout_3, subgraph_limit=1)
|
|
554
434
|
self.assertEqual(stats.fanout, 0)
|
|
555
435
|
|
|
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
|
-
|
|
566
436
|
|
|
567
437
|
class TestFanoutRaise(BaseTestByIR):
|
|
568
438
|
refprune_bitmask = llvm.RefPruneSubpasses.FANOUT_RAISE
|
|
@@ -586,10 +456,6 @@ bb_C:
|
|
|
586
456
|
mod, stats = self.check(self.fanout_raise_1)
|
|
587
457
|
self.assertEqual(stats.fanout_raise, 2)
|
|
588
458
|
|
|
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
|
-
|
|
593
459
|
fanout_raise_2 = r"""
|
|
594
460
|
define i32 @main(i8* %ptr, i1 %cond, i8** %excinfo) {
|
|
595
461
|
bb_A:
|
|
@@ -612,12 +478,6 @@ bb_C:
|
|
|
612
478
|
mod, stats = self.check(self.fanout_raise_2)
|
|
613
479
|
self.assertEqual(stats.fanout_raise, 0)
|
|
614
480
|
|
|
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
|
-
|
|
621
481
|
fanout_raise_3 = r"""
|
|
622
482
|
define i32 @main(i8* %ptr, i1 %cond, i8** %excinfo) {
|
|
623
483
|
bb_A:
|
|
@@ -638,10 +498,6 @@ bb_C:
|
|
|
638
498
|
mod, stats = self.check(self.fanout_raise_3)
|
|
639
499
|
self.assertEqual(stats.fanout_raise, 2)
|
|
640
500
|
|
|
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
|
-
|
|
645
501
|
fanout_raise_4 = r"""
|
|
646
502
|
define i32 @main(i8* %ptr, i1 %cond, i8** %excinfo) {
|
|
647
503
|
bb_A:
|
|
@@ -660,10 +516,6 @@ bb_C:
|
|
|
660
516
|
mod, stats = self.check(self.fanout_raise_4)
|
|
661
517
|
self.assertEqual(stats.fanout_raise, 0)
|
|
662
518
|
|
|
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
|
-
|
|
667
519
|
fanout_raise_5 = r"""
|
|
668
520
|
define i32 @main(i8* %ptr, i1 %cond, i8** %excinfo) {
|
|
669
521
|
bb_A:
|
|
@@ -686,10 +538,6 @@ common.ret:
|
|
|
686
538
|
mod, stats = self.check(self.fanout_raise_5)
|
|
687
539
|
self.assertEqual(stats.fanout_raise, 2)
|
|
688
540
|
|
|
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
|
-
|
|
693
541
|
# test case 6 is from https://github.com/numba/llvmlite/issues/1023
|
|
694
542
|
fanout_raise_6 = r"""
|
|
695
543
|
define i32 @main(i8* %ptr, i1 %cond1, i1 %cond2, i1 %cond3, i8** %excinfo) {
|
|
@@ -721,10 +569,6 @@ bb_F:
|
|
|
721
569
|
mod, stats = self.check(self.fanout_raise_6)
|
|
722
570
|
self.assertEqual(stats.fanout_raise, 7)
|
|
723
571
|
|
|
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
|
-
|
|
728
572
|
|
|
729
573
|
if __name__ == '__main__':
|
|
730
574
|
unittest.main()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: llvmlite
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.45.0rc1
|
|
4
4
|
Summary: lightweight wrapper around basic LLVM functionality
|
|
5
5
|
Home-page: http://llvmlite.readthedocs.io
|
|
6
6
|
License: BSD
|
|
@@ -18,7 +18,14 @@ Classifier: Topic :: Software Development :: Code Generators
|
|
|
18
18
|
Classifier: Topic :: Software Development :: Compilers
|
|
19
19
|
Requires-Python: >=3.10
|
|
20
20
|
License-File: LICENSE
|
|
21
|
-
|
|
21
|
+
Dynamic: classifier
|
|
22
|
+
Dynamic: description
|
|
23
|
+
Dynamic: home-page
|
|
24
|
+
Dynamic: license
|
|
25
|
+
Dynamic: license-file
|
|
26
|
+
Dynamic: project-url
|
|
27
|
+
Dynamic: requires-python
|
|
28
|
+
Dynamic: summary
|
|
22
29
|
|
|
23
30
|
========
|
|
24
31
|
llvmlite
|
|
@@ -27,9 +34,6 @@ llvmlite
|
|
|
27
34
|
.. image:: https://dev.azure.com/numba/numba/_apis/build/status/numba.llvmlite?branchName=main
|
|
28
35
|
:target: https://dev.azure.com/numba/numba/_build/latest?definitionId=2&branchName=main
|
|
29
36
|
:alt: Azure Pipelines
|
|
30
|
-
.. image:: https://codeclimate.com/github/numba/llvmlite/badges/gpa.svg
|
|
31
|
-
:target: https://codeclimate.com/github/numba/llvmlite
|
|
32
|
-
:alt: Code Climate
|
|
33
37
|
.. image:: https://coveralls.io/repos/github/numba/llvmlite/badge.svg
|
|
34
38
|
:target: https://coveralls.io/github/numba/llvmlite
|
|
35
39
|
:alt: Coveralls.io
|
|
@@ -82,14 +86,15 @@ Compatibility
|
|
|
82
86
|
llvmlite has been tested with Python 3.10 -- 3.13 and is likely to work with
|
|
83
87
|
greater versions.
|
|
84
88
|
|
|
85
|
-
As of version 0.
|
|
89
|
+
As of version 0.45.0, llvmlite requires LLVM 20.x.x on all architectures
|
|
86
90
|
|
|
87
91
|
Historical compatibility table:
|
|
88
92
|
|
|
89
93
|
================= ========================
|
|
90
94
|
llvmlite versions compatible LLVM versions
|
|
91
95
|
================= ========================
|
|
92
|
-
0.
|
|
96
|
+
0.45.0 - ...... 20.x.x
|
|
97
|
+
0.44.0 15.x.x and 16.x.x
|
|
93
98
|
0.41.0 - 0.43.0 14.x.x
|
|
94
99
|
0.40.0 - 0.40.1 11.x.x and 14.x.x (12.x.x and 13.x.x untested but may work)
|
|
95
100
|
0.37.0 - 0.39.1 11.x.x
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
llvmlite/__init__.py,sha256=_UwFsDa2wiXx1WLx0XUV2WkrPZpQwjXTR4sPSNQ2nDM,461
|
|
2
|
+
llvmlite/_version.py,sha256=rRobyvsRXBIn7pAsgy9RtNBxG8h0XDtkRYzxeIRPQ4I,421
|
|
3
|
+
llvmlite/utils.py,sha256=BwgrA2JaYaZiHRafshoZBHiYSBskJQMG_K2F2jbW2-w,695
|
|
4
|
+
llvmlite/binding/__init__.py,sha256=FAVr7gLzepeEKb26NiW5WeQA1C0mmlRkUrKdmPqubUc,404
|
|
5
|
+
llvmlite/binding/analysis.py,sha256=BbCcAAGY0GLAEUek6ZogHkBAmFA9kvpS7333XyIrbhc,2253
|
|
6
|
+
llvmlite/binding/common.py,sha256=eCSnnY4sctgeqVwDv9PrH6jpMI45nJPmAz4rfjbPsf8,742
|
|
7
|
+
llvmlite/binding/config.py,sha256=o9UReyRbcWQLZHzNowSLmoL6hsvZfiOm8Y8uijKteNs,4473
|
|
8
|
+
llvmlite/binding/context.py,sha256=0uEJwi4u0y5pp3gHubmmJYvwT1z3I1jmzAByq-DVnvI,675
|
|
9
|
+
llvmlite/binding/dylib.py,sha256=ypfikOYKiWQZi8h00LhLBXwmPlJ5d86yLOUn01pDjmM,1300
|
|
10
|
+
llvmlite/binding/executionengine.py,sha256=PgUFCVJdGvrxXCZAevMv8nUAL8n29Xm58FYO1XYLafc,11022
|
|
11
|
+
llvmlite/binding/ffi.py,sha256=m7Y1TZC2b1JBptcwzDburElm_fKuGkwrBsKzcYY4zLc,12434
|
|
12
|
+
llvmlite/binding/initfini.py,sha256=_o87ZBtIVDmkN-QU2pypVRKuGOE6XokHOWysJCX9Y_I,2163
|
|
13
|
+
llvmlite/binding/libllvmlite.dylib,sha256=GXI2aEST-k0LOyeFIxfCHyAHmNk2lYo2wpizuYPg4EE,116497808
|
|
14
|
+
llvmlite/binding/linker.py,sha256=M4bAkoxVAUgxqai5S0_iCHS5EcNRPBX_9zldVqFLV90,489
|
|
15
|
+
llvmlite/binding/module.py,sha256=Zf9GcuCEFf1xtOmP-jXqKtJbj4dO8l9a2NEPKTwsimI,11174
|
|
16
|
+
llvmlite/binding/newpassmanagers.py,sha256=Mzgc9CM0jnmYGL4UAMkWdnfxMoBPVzSYoNFxx2Q44gY,34496
|
|
17
|
+
llvmlite/binding/object_file.py,sha256=qZMTAi6gcVQq2e3KghHNxVH3Ivzr7zxDPecfiZ1Riy8,2664
|
|
18
|
+
llvmlite/binding/options.py,sha256=aDH4SFh6VZ11agtUJO9vAxhVhQkIGAByK9IHKeuRcAI,509
|
|
19
|
+
llvmlite/binding/orcjit.py,sha256=HUWDKicxrYK5s2trdrM_KEmkfvwifrP4E9MxmCb8JSM,11856
|
|
20
|
+
llvmlite/binding/targets.py,sha256=P4YCkQIUkw2puaL_JbdJyawPsxgVtEZ7Vpe2KDLI9KQ,15369
|
|
21
|
+
llvmlite/binding/typeref.py,sha256=kqg757zMfTayKzzjajlHeBjzyB77B9wtN9XzYT5xzx8,7805
|
|
22
|
+
llvmlite/binding/value.py,sha256=GVsScOUMcSx9vrIq2LQiBPlsfjIHGsbcuELyf8wnSnQ,19477
|
|
23
|
+
llvmlite/ir/__init__.py,sha256=rNPtrPLshsPJYO4GegWAU-rpbpiYo0xU-CQb3rt0JtE,258
|
|
24
|
+
llvmlite/ir/_utils.py,sha256=mkpyEMlQ9nHMcWmBMBsJm4S16Y0BfvxBf5brsdMmKio,2001
|
|
25
|
+
llvmlite/ir/builder.py,sha256=23dpZ2Sw6Kq_Db2qRvRqaKEQwhOztJdq2g6l4QfzpBo,33628
|
|
26
|
+
llvmlite/ir/context.py,sha256=tIFLM1FDatctrgN45jrdxbxIPQjgQTRLGoImkCdgcVA,540
|
|
27
|
+
llvmlite/ir/instructions.py,sha256=BFYnbjDBjjI21_ilOMx67Rg_x7OjUlcTjNDFKiry5os,33053
|
|
28
|
+
llvmlite/ir/module.py,sha256=-5cDgxA83a9vGsABTJx9CyxalsH39X8iW3Etd4D0urM,9472
|
|
29
|
+
llvmlite/ir/transforms.py,sha256=pV79pB20m4N_HLmBEksw5VVP8cxyf7AYGDCbS1E7fOQ,1552
|
|
30
|
+
llvmlite/ir/types.py,sha256=_qNlE5QhAMc5aeiTbmH44JRiN7r1-Nbl9eADNBns4CQ,19909
|
|
31
|
+
llvmlite/ir/values.py,sha256=FkRpEoG2ur3TqpFwj7co5ymYCnADU5EcmsjaOF--b90,34023
|
|
32
|
+
llvmlite/tests/__init__.py,sha256=TBHEOsEq-9M9rF94nES2HxefA-7GYwNE00Y7gTkHrD8,1378
|
|
33
|
+
llvmlite/tests/__main__.py,sha256=10_On1rLj4CX1xsBJ9TbjULvNSp_K0qk9U1N6azUTUw,40
|
|
34
|
+
llvmlite/tests/customize.py,sha256=85Af1gyZ5rtXXI3qpeTc2DXMrgETjv7hrLN-73A7Fhg,13268
|
|
35
|
+
llvmlite/tests/refprune_proto.py,sha256=w3hRtkd4VtcfoHYkZkjZJgzOJCW6TxorK-JFohxNZME,8702
|
|
36
|
+
llvmlite/tests/test_binding.py,sha256=CsoJ8RtgWFqF6C0WKjVNroO6D0az2YAc3kgJn_rO75A,112250
|
|
37
|
+
llvmlite/tests/test_ir.py,sha256=SHZcrQ8b2Dx9Wey8djktIQFS8xIeITZYHCjeBQPPWEE,122399
|
|
38
|
+
llvmlite/tests/test_refprune.py,sha256=BGLf4IwZOoRAGy2qjyKNJJzQviG778FTjMz2sHbGFrA,15660
|
|
39
|
+
llvmlite/tests/test_valuerepr.py,sha256=57MaGznJUnqCf0etajnOCoBRue5-nmFTx1bds_5atlE,1989
|
|
40
|
+
llvmlite-0.45.0rc1.dist-info/licenses/LICENSE,sha256=S5pyZLAROnsybuhPwkS3OZG1NbSDPkpW1YdQ8qciUNw,1298
|
|
41
|
+
llvmlite-0.45.0rc1.dist-info/METADATA,sha256=i-n7N1uPtD527twYjIcy3iv_a8NZH9P_UJtDZfc3bxo,4831
|
|
42
|
+
llvmlite-0.45.0rc1.dist-info/WHEEL,sha256=qxQkdhERtGxJzqnVOBnucx1aUmU2n3HmuzYdln_LyOw,109
|
|
43
|
+
llvmlite-0.45.0rc1.dist-info/top_level.txt,sha256=WJi8Gq92jA2wv_aV1Oshp9iZ-zMa43Kcmw80kWeGYGA,9
|
|
44
|
+
llvmlite-0.45.0rc1.dist-info/RECORD,,
|