Difference between revisions of "LLVM"
Jump to navigation
Jump to search
(Created page with "==Numba== Numba is a NumPy aware dynamic compiler for Python. It creates LLVM bit-code from Python syntax and then creates a wrapper around that bitcode to call from Python. ...") |
m |
||
Line 15: | Line 15: | ||
export('multc c16(c16, c16)'))(mult) |
export('multc c16(c16, c16)'))(mult) |
||
</source> |
</source> |
||
+ | ==llpython== |
||
+ | Part of llvmpy |
||
+ | * [http://www.llvmpy.org/llvmpy-doc/0.12.4/doc/llpython/index.html 0.12.4 doc] |
||
+ | * [https://github.com/llvmpy/llvmpy/tree/master/llpython on Github] |
||
+ | The primary goal of the llpython package is to provide a Python dialect/subset that maps directly to LLVM code. |
||
+ | <br>LLPython differs from its originating LLVM translator, Numba, in the following aspects: |
||
+ | * LLPython code is not intended to work in Python if not translated and wrapped. |
||
+ | * The LLPython translator only uses LLVM types. |
||
+ | * LLPython is explicitly typed, and does not support type inference. LLPython does not support implicit casts, all casts must be explicit. |
||
+ | * LLPython supports code that directly calls the C API, the Python C API, and the llvm.core.Builder methods. |
||
+ | ''We developed LLPython with the initial goal of simplifying writing LLVM code.'' |
||
+ | |||
+ | '''TODO''' not clear yet from the doc how to use it... |
||
+ | ==[http://www.llvmpy.org/ llvmpy]== |
Revision as of 10:30, 20 May 2014
Numba
Numba is a NumPy aware dynamic compiler for Python. It creates LLVM bit-code from Python syntax and then creates a wrapper around that bitcode to call from Python.
pycc allows users to compile Numba functions into a shared library. The user writes the functions, exports them and the compiler will import the module, collect the exported functions and compile them to a shared library. Below is an example:
from numba import *
def mult(a, b):
return a * b
export('mult f8(f8, f8)'))(mult)
export(['multf f4(f4, f4)', 'multi i4(i4, i4)'])(mult)
export('multc c16(c16, c16)'))(mult)
llpython
Part of llvmpy
The primary goal of the llpython package is to provide a Python dialect/subset that maps directly to LLVM code.
LLPython differs from its originating LLVM translator, Numba, in the following aspects:
- LLPython code is not intended to work in Python if not translated and wrapped.
- The LLPython translator only uses LLVM types.
- LLPython is explicitly typed, and does not support type inference. LLPython does not support implicit casts, all casts must be explicit.
- LLPython supports code that directly calls the C API, the Python C API, and the llvm.core.Builder methods.
We developed LLPython with the initial goal of simplifying writing LLVM code.
TODO not clear yet from the doc how to use it...