R interface to LLVM C++ API to be able to create compiled code from within R
R C++ TeX Shell C LLVM Other
Failed to load latest commit information.
Paper changes for llvm 3.8 Jul 8, 2016
R make certain to return Rff's pointerType, and not Rllvm's pointerType… Jul 27, 2016
TU computations to determine which enum symbols are overloaded/duplicated Jul 25, 2016
Web example about ptx updated to also include the direct generation Jul 16, 2013
ctests testing equivalent code as tests/stringPointer.R Jul 11, 2016
experiments added a routine that takes more arguments that the MCJIT can accept. … Jul 26, 2016
explorations timing experiments. See the StatSci paper Jul 8, 2016
inst created with a recent clang Jul 26, 2016
man incomplete code for getFunctionAddress Jul 26, 2016
src make some of the problematic tests/ scripts work Jul 27, 2016
tests added getAssemblyCode Jul 27, 2016
tools compute enum values for LLVM 3.5 for AttrKind Feb 11, 2015
.Rbuildignore cleaning up the package Feb 7, 2015
.gitignore minor updates Jun 29, 2013
BuildingLLVM.md formatting Jul 11, 2016
Changelog getSuccessors, etc. deals with a ReturnInst object which has no succe… Feb 18, 2015
Classes moved to git Dec 6, 2011
CodeGenFAQ.xml added new IR instruction generators - select/ternary, switch and test… Apr 19, 2013
CompilerNotes updated cumsum timings Apr 10, 2013
DESCRIPTION added getAssemblyCode Jul 27, 2016
DebuggingRuntimeProblems.Rdb some document! Jul 12, 2016
FAQ.xml spelling error. But we have two llvmShutdown()s Oct 6, 2015
INSTALL.md formatting lists Jul 11, 2016
IRNotes updated cumsum timings Apr 10, 2013
NAMESPACE added getAssemblyCode Jul 27, 2016
Notes generate C++ code Jun 23, 2013
READ .. Jul 26, 2016
README.md info about Rffi Jul 27, 2016
SeeMachineCode info Jul 26, 2016
ThingsToRemember ... Jun 7, 2014
Todo.xml info Jul 27, 2016
UpdateLLVMVersion information about updating to a new version of llvm Jul 8, 2016
VinceQues moved to git Dec 6, 2011
cleanup R CMD check issues Jun 14, 2014
configure support for specifying location of llvm-config via --with-llvm-config Jul 11, 2016
configure.in support for specifying location of llvm-config via --with-llvm-config Jul 12, 2016
funcGroups.R added several functions Jul 6, 2013
makePassCode.R code to programmatically read LLVM header files. Additional functiona… Jul 13, 2014
simpleCall.R still trying to get the fgets example working Apr 17, 2013
test.R sorted out the createGlobal and the initializer. See globalStringVar.Rdb Apr 16, 2013
testPTX.R ptx for GPU example Jul 8, 2016
types.R moved to git Dec 6, 2011

README.md

RLLVM

RLLVM is an R interface to LLVM. This interface allows one to create compiled code from within R through LLVM's intermediate representation (IR), which LLVM can then extensively and efficiently optimize.

For examples, see the RLLVM page on Omegahat.

The current repository builds against LLVM 3.5, 3.6, 3.7, and3.8. Importantly, recent versions of LLVM default to the MCJIT execution engine. This unfortunately has very limited ability to invoke routines compiled via Rllvm, i.e., using the .llvm() and run() functions. Acccordingly, we have implemented a simple (but reasonably comprehensive) mechanism to invoke these routines. We use the Rffi package to do this. We might shift to the rdyncall package.

So this package now requires the Rffi package. This comes with its own version of libffi, but will find a more up-to-date version if it is installed (see pkg-config).

These packages are not yet on CRAN.

Related packages are Rffi, Rllvm (this one), RLLVMCompile, RCUDA, RCIndex.