Difference between revisions of "LLVM"

From HaskellWiki
Jump to: navigation, search
(llvm-extra, synthesizer-llvm)
(fixed nested list)
 
(One intermediate revision by the same user not shown)
Line 7: Line 7:
 
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 the Haskell package <tt>llvm</tt>.
+
You can use this from a Haskell program using essentially two bindings:
There is
+
* a cabal package at [http://hackage.haskell.org/package/llvm Hackage],
+
A strongly typed interface that is mainly intended to accelerate your Haskell programs with low-level code:
* a [http://code.haskell.org/llvm darcs repository],
+
* {{HackagePackage|id=llvm-tf}}, {{HackagePackage|id=llvm-ffi}}
* a [http://projects.haskell.org/cgi-bin/mailman/listinfo/haskell-llvm mailing list],
+
* 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,
 
* 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
 
* 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
   
Additional stuff
 
  +
An untyped interface mainly intended to write compilers and analyse LLVM bitcode:
* [http://hackage.haskell.org/package/llvm-extra 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=llvm-hs}}
 
Applications
 
* [http://hackage.haskell.org/package/synthesizer-llvm synthesizer-llvm] provides efficient signal processing using vector instructions, including a realtime [[Synthesizer|software synthesizer]]
 
   
 
[[Category:Packages]]
 
[[Category:Packages]]

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:

An untyped interface mainly intended to write compilers and analyse LLVM bitcode: