opnsense-src/lib/Target/WebAssembly
2015-08-07 23:01:33 +00:00
..
InstPrinter Vendor import of llvm trunk r241361: 2015-07-05 14:21:36 +00:00
MCTargetDesc Vendor import of llvm trunk r242221: 2015-08-07 23:01:33 +00:00
TargetInfo Vendor import of llvm trunk r241361: 2015-07-05 14:21:36 +00:00
CMakeLists.txt Vendor import of llvm trunk r242221: 2015-08-07 23:01:33 +00:00
LLVMBuild.txt Vendor import of llvm trunk r241361: 2015-07-05 14:21:36 +00:00
Makefile Vendor import of llvm trunk r242221: 2015-08-07 23:01:33 +00:00
README.txt Vendor import of llvm trunk r242221: 2015-08-07 23:01:33 +00:00
WebAssembly.h Vendor import of llvm trunk r241361: 2015-07-05 14:21:36 +00:00
WebAssembly.td Vendor import of llvm trunk r241361: 2015-07-05 14:21:36 +00:00
WebAssemblyFrameLowering.cpp Vendor import of llvm trunk r241361: 2015-07-05 14:21:36 +00:00
WebAssemblyFrameLowering.h Vendor import of llvm trunk r241361: 2015-07-05 14:21:36 +00:00
WebAssemblyInstrAtomics.td Vendor import of llvm trunk r242221: 2015-08-07 23:01:33 +00:00
WebAssemblyInstrCall.td Vendor import of llvm trunk r242221: 2015-08-07 23:01:33 +00:00
WebAssemblyInstrConv.td Vendor import of llvm trunk r242221: 2015-08-07 23:01:33 +00:00
WebAssemblyInstrFloat.td Vendor import of llvm trunk r242221: 2015-08-07 23:01:33 +00:00
WebAssemblyInstrFormats.td Vendor import of llvm trunk r242221: 2015-08-07 23:01:33 +00:00
WebAssemblyInstrInfo.cpp Vendor import of llvm trunk r241361: 2015-07-05 14:21:36 +00:00
WebAssemblyInstrInfo.h Vendor import of llvm trunk r241361: 2015-07-05 14:21:36 +00:00
WebAssemblyInstrInfo.td Vendor import of llvm trunk r242221: 2015-08-07 23:01:33 +00:00
WebAssemblyInstrInteger.td Vendor import of llvm trunk r242221: 2015-08-07 23:01:33 +00:00
WebAssemblyInstrMemory.td Vendor import of llvm trunk r242221: 2015-08-07 23:01:33 +00:00
WebAssemblyInstrSIMD.td Vendor import of llvm trunk r242221: 2015-08-07 23:01:33 +00:00
WebAssemblyISelDAGToDAG.cpp Vendor import of llvm trunk r241361: 2015-07-05 14:21:36 +00:00
WebAssemblyISelLowering.cpp Vendor import of llvm trunk r242221: 2015-08-07 23:01:33 +00:00
WebAssemblyISelLowering.h Vendor import of llvm trunk r241361: 2015-07-05 14:21:36 +00:00
WebAssemblyMachineFunctionInfo.cpp Vendor import of llvm trunk r241361: 2015-07-05 14:21:36 +00:00
WebAssemblyMachineFunctionInfo.h Vendor import of llvm trunk r241361: 2015-07-05 14:21:36 +00:00
WebAssemblyRegisterInfo.cpp Vendor import of llvm trunk r242221: 2015-08-07 23:01:33 +00:00
WebAssemblyRegisterInfo.h Vendor import of llvm trunk r242221: 2015-08-07 23:01:33 +00:00
WebAssemblyRegisterInfo.td Vendor import of llvm trunk r242221: 2015-08-07 23:01:33 +00:00
WebAssemblySelectionDAGInfo.cpp Vendor import of llvm trunk r242221: 2015-08-07 23:01:33 +00:00
WebAssemblySelectionDAGInfo.h Vendor import of llvm trunk r242221: 2015-08-07 23:01:33 +00:00
WebAssemblySubtarget.cpp Vendor import of llvm trunk r242221: 2015-08-07 23:01:33 +00:00
WebAssemblySubtarget.h Vendor import of llvm trunk r241361: 2015-07-05 14:21:36 +00:00
WebAssemblyTargetMachine.cpp Vendor import of llvm trunk r241361: 2015-07-05 14:21:36 +00:00
WebAssemblyTargetMachine.h Vendor import of llvm trunk r241361: 2015-07-05 14:21:36 +00:00
WebAssemblyTargetObjectFile.h Vendor import of llvm trunk r241361: 2015-07-05 14:21:36 +00:00
WebAssemblyTargetTransformInfo.cpp Vendor import of llvm trunk r241361: 2015-07-05 14:21:36 +00:00
WebAssemblyTargetTransformInfo.h Vendor import of llvm trunk r242221: 2015-08-07 23:01:33 +00:00

//===-- README.txt - Notes for WebAssembly code gen -----------------------===//

This WebAssembly backend is presently in a very early stage of development.
The code should build and not break anything else, but don't expect a lot more
at this point.

For more information on WebAssembly itself, see the design documents:
  * https://github.com/WebAssembly/design/blob/master/README.md

The following documents contain some information on the planned semantics and
binary encoding of WebAssembly itself:
  * https://github.com/WebAssembly/design/blob/master/AstSemantics.md
  * https://github.com/WebAssembly/design/blob/master/BinaryEncoding.md

Interesting work that remains to be done:
* Write a pass to restructurize irreducible control flow. This needs to be done
  before register allocation to be efficient, because it may duplicate basic
  blocks and WebAssembly performs register allocation at a whole-function
  level. Note that LLVM's GPU code has such a pass, but it linearizes control
  flow (e.g. both sides of branches execute and are masked) which is undesirable
  for WebAssembly.
* Basic relooper to expose control flow as an AST.
* Figure out how to properly use MC for virtual ISAs. This may require some
  refactoring of MC.

//===---------------------------------------------------------------------===//