summaryrefslogtreecommitdiff
path: root/compiler/llvmGen/Llvm/AbsSyn.hs
Commit message (Collapse)AuthorAgeFilesLines
* Add more primops for atomic ops on byte arraysJohan Tibell2014-06-241-0/+7
| | | | | | | | | | | | | | | | | | | Summary: Add more primops for atomic ops on byte arrays Adds the following primops: * atomicReadIntArray# * atomicWriteIntArray# * fetchSubIntArray# * fetchOrIntArray# * fetchXorIntArray# * fetchAndIntArray# Makes these pre-existing out-of-line primops inline: * fetchAddIntArray# * casIntArray#
* Iteration on dterei's metadata designPeter Wortmann2013-06-271-15/+5
| | | | | | | | | | | | | | | | | | | | | - MetaArgs is not needed, as variables are already meta data - Same goes for MetaVal - its only reason for existing seems to be to support LLVM's strange pretty-printing for meta-data annotations, and I feel that is better to keep the data structure clean and handle it in the pretty-printing instead. - Rename "MetaData" to "MetaAnnot". Meta-data is still meta-data when it is not associated with an expression or statement - for example compile unit data for debugging. I feel the old name was a bit misleading. - Make the renamed MetaAnnot a proper data type instead of a type alias for a pair. - Rename "MetaExpr" constructor to "MetaStruct". As the data is much more like a LLVM structure (not array, as it can contain values). - Fix a warning
* Add ability to call functions with metadata as arguments to LLVMDavid Terei2013-06-271-0/+21
| | | | backend.
* Rework LLVM metadata representation to be more accurate.David Terei2013-06-271-4/+3
|
* Fixed moer tyopsGabor Greif2013-04-251-8/+8
|
* Add support for LLVM vectors.Geoffrey Mainland2013-02-011-0/+15
| | | | | This patch adds support for LLVM vectors and vector operations to our internal LLVM abstract syntax data types.
* Improve support for LLVM >= 3.0 write barrier. (#5814)David Terei2012-01-301-7/+18
|
* llvmGen: Use new fence instructionBen Gamari2012-01-301-0/+10
| | | | Signed-off-by: David Terei <davidterei@gmail.com>
* Add Metadata support to LLVM bindings.David Terei2012-01-121-0/+15
|
* Add new mem{cpy,set,move} cmm prim ops.David Terei2011-05-311-0/+6
|
* LLVM: Add inline assembly to binding.David Terei2010-07-141-0/+13
|
* LLVM: Allow getelementptr to use LlvmVar for indexes.David Terei2010-07-121-4/+2
|
* LLVM: Fix various typos in commentsDavid Terei2010-07-071-4/+4
|
* LLVM: Add alias type defenitions to LlvmModule.David Terei2010-07-071-0/+3
|
* LLVM: Use the inbounds keyword for getelementptr instructions.David Terei2010-07-021-1/+2
|
* Add support for parameter attributes to the llvm BE bindingDavid Terei2010-06-241-0/+3
| | | | | | These allow annotations of the code produced by the backend which should bring some perforamnce gains. At the moment the attributes aren't being used though.
* Declare some top level globals to be constant when appropriateDavid Terei2010-06-211-3/+0
| | | | | | | This involved removing the old constant handling mechanism which was fairly hard to use. Now being constant or not is simply a property of a global variable instead of a separate type.
* Add support of TNTC to llvm backendDavid Terei2010-06-181-3/+6
| | | | | | | We do this through a gnu as feature called subsections, where you can put data/code into a numbered subsection and those subsections will be joined together in descending order by gas at compile time.
* Add new LLVM code generator to GHC. (Version 2)David Terei2010-06-151-0/+209
This was done as part of an honours thesis at UNSW, the paper describing the work and results can be found at: http://www.cse.unsw.edu.au/~pls/thesis/davidt-thesis.pdf A Homepage for the backend can be found at: http://hackage.haskell.org/trac/ghc/wiki/Commentary/Compiler/Backends/LLVM Quick summary of performance is that for the 'nofib' benchmark suite, runtimes are within 5% slower than the NCG and generally better than the C code generator. For some code though, such as the DPH projects benchmark, the LLVM code generator outperforms the NCG and C code generator by about a 25% reduction in run times.