Difference between revisions of "LLVM"
Jump to navigation
Jump to search
(fixed nested list) |
|||
(5 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
− | {{Stub}} |
||
− | |||
[http://llvm.org/ LLVM] is an abbreviation of "Low Level Virtual Machine"; LLVM is: |
[http://llvm.org/ LLVM] is an abbreviation of "Low Level Virtual Machine"; LLVM is: |
||
* A compilation strategy |
* A compilation strategy |
||
Line 6: | Line 4: | ||
* A compiler infrastructure |
* A compiler infrastructure |
||
+ | It is developed by the University of Illinois. |
||
− | It is developed by the University of Illinois. To use this from a Haskell program, one can download the package [http://hackage.haskell.org/cgi-bin/hackage-scripts/package/llvm llvm]. Usage examples can be found in the blog article at [http://augustss.blogspot.com/2009/01/llvm-llvm-low-level-virtual-machine-is.html]. LLVM can improve performance, as described in [http://augustss.blogspot.com/2009/01/performance-update-ive-continued.html A performance update]; it is implemented on many platforms, amongst others the [http://www.ipodobserver.com/story/30184 iPhone]. |
||
+ | It is implemented on many platforms, amongst others the [http://www.ipodobserver.com/story/30184 iPhone]. |
||
+ | |||
+ | You can use this from a Haskell program using essentially two bindings: |
||
+ | |||
+ | A strongly typed interface that is mainly intended to accelerate your Haskell programs with low-level code: |
||
+ | * {{HackagePackage|id=llvm-tf}}, {{HackagePackage|id=llvm-ffi}} |
||
+ | * a [http://hub.darcs.net/thielema/llvm-ffi/ darcs repository], |
||
+ | * a [http://augustss.blogspot.com/2009/01/llvm-llvm-low-level-virtual-machine-is.html blog article] with examples, |
||
+ | * the article "[http://augustss.blogspot.com/2009/01/performance-update-ive-continued.html A performance update]" that describes, how LLVM can improve performance |
||
+ | * {{HackagePackage|id=llvm-extra}} provides high-level control structures (<hask>ifThenElse</hask>, <hask>whileLoop</hask>, <hask>Maybe</hask>), vector instructions, automatic adaption to target specific extensions |
||
+ | * {{HackagePackage|id=knead}} provides array processing similar to {{HackagePackage|id=accelerate}} |
||
+ | * Example applications: |
||
+ | ** {{HackagePackage|id=synthesizer-llvm}} provides efficient signal processing using vector instructions, including a live [[Synthesizer|software synthesizer]] |
||
+ | ** {{HackagePackage|id=patch-image}} constructs a big image from overlapping parts |
||
+ | |||
+ | An untyped interface mainly intended to write compilers and analyse LLVM bitcode: |
||
+ | * {{HackagePackage|id=llvm-hs}} |
||
⚫ | |||
[[Category:Packages]] |
[[Category:Packages]] |
||
⚫ | |||
+ | [[Category:Compiler tools]] |
Latest revision as of 11:22, 2 October 2020
LLVM is an abbreviation of "Low Level Virtual Machine"; LLVM is:
- A compilation strategy
- A virtual instruction set
- A compiler infrastructure
It is developed by the University of Illinois. It is implemented on many platforms, amongst others the iPhone.
You can use this from a Haskell program using essentially two bindings:
A strongly typed interface that is mainly intended to accelerate your Haskell programs with low-level code:
- llvm-tf, llvm-ffi
- a darcs repository,
- a blog article with examples,
- the article "A performance update" that describes, how LLVM can improve performance
- llvm-extra provides high-level control structures (
ifThenElse
,whileLoop
,Maybe
), vector instructions, automatic adaption to target specific extensions - knead provides array processing similar to accelerate
- Example applications:
- synthesizer-llvm provides efficient signal processing using vector instructions, including a live software synthesizer
- patch-image constructs a big image from overlapping parts
An untyped interface mainly intended to write compilers and analyse LLVM bitcode: