Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: master
Fetching contributors…

Octocat-spinner-32-eaf2f5

Cannot retrieve contributors at this time

file 154 lines (90 sloc) 4.392 kb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153
Version 0.6-1

* Minor changes for LLVM 3.4 (fields in TargetOptions that were removed)

Version 0.6-0

* added generatePTX() to convert Module to PTX code. See Rnvvm and libNVVM
for other an additional approach.

* added support specifying address space when creating pointer types

* added CreateFPTrunc() and CreateTrunc()

* added llvmDump() to examine instructions in IR form

* added setMetadata(), getMetadata() and getNumOperands() & getOperands()

* eraseFromParent(), removeFromParent()

* insertBefore(), insertAfter(), moveBefore()

* isa() for Instruction classes.

* More support for raw and formatted ostreams

* setDataLayout() method for Module.

Version 0.5-0

* show() methods for Module, Function, Type to make the
objects more informative when displayed.

* export getBlocks() function.

* sapply() method for iterating over a block

* get function attributes

* Set and get attributes on parameters

* Access parameters as Argument objects, e.g. fun[[1]]

* createLocalVariable() allows the instruction to be inserted
before the terminator of the current block.

* Added llvmShutdown(), llvmStartMultiThreaded(), llvmStopMultiThreaded()

* Methods for getContext().

* Methods for setAlignment() for Store, Load and Alloca instructions.

* Errors verifying a module are reported as a regular error
and not printed on the console.

* Retrieve global variable arrays as R objects.

* createStructGEP() function.

        * ExecutionEngine() supports specifying optimization level.

* createGlobalVariable() initializes array types with constantAggregateZero.

* constantAggregateZero() function.

* llvmAddSymbol() also accepts the names and resolves the
corresponding symbols itself. So we can mix symbols and
strings as arguments.

* <Removed> Put a typeName attribute on the type external pointers to
    be able to identify them in R. This unfortunately causes identical()
           on the external pointers fail in some cases in sameType().

        * Export *SXPType variables representing the type definitions
for different R types, i.e. logical, integer, numeric, ...,
  ANY/SEXP. Removes the need to call getSEXPType('typeName')


* getLLVMTargets() returns the names of the available targets
for code generation.

* New interfaces to IRBuilder methods.

* Types for representing SEXP types in routines.

* Ability to pass R objects (SEXPs) to and from routines.

* Support for passing a value to a routine expecting a Float.

* changed .llvm() to alias .llvmCallFunction() rather than
run() to avoid the overhead of method dispatch.

* Support for intrinsics.

Version 0.4-2

* Support for building from the LLVM subversion repository
for version 3.2 of LLVM. See FAQ.xml.

Version 0.4-1

* ArrayType, VectorType, StructType.

* Methods for Instruction class. (Machine generated)

* Compiles and installs with LLVM 3.1.

* parseIR() function allows us to parse IR code and so we
  could create the code via strings.

Version 0.4-0

* Added getDescription() and method for Type and getTypeID(),
     getScalarType().

* Added createFPToSI() and createSIToFP().

Version 0.3-0

* The package automatically calls InitializeNativeTarget()
unless the R option Rllvm.autoInitialize is set to FALSE
before the package is loaded.
* Added getTerminator(), getInsertBlock()

* Implemented getting logical constants for TRUE and FALSE.

Version 0.2-1

* Method for Optimize referred to a free variable rather than
   a parameter.

* Added getModuleFunctions(), getBlocks(), getPassManager()

Version 0.2-0

* The Optimize function and methods are now extended and
      apply to the code via creating a FunctionPassManager and
invoking its run() method (in C++ for now).
This can work on modules or individual functions.

* getModuleFunctions() allows us to get the list of functions
  in a module.

* showModule() returns the content as a string, but can also
write on the console/stdout().
           We might make it possible to write to a connection in the
future.

* Additional examples in experiments/ that show constant
folding, avoiding temporary variables.

Version 0.1-0

* Addition to configuration to check suitable version of llvm available on the machine.
Something went wrong with that request. Please try again.