1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-26 14:33:02 +02:00
llvm-mirror/lib/Target/WebAssembly
Dan Gohman 2a82f5451f [WebAssembly] Make expression-stack pushing explicit
Modelling of the expression stack is evolving. This patch takes another
step by making pushes explicit.

Differential Revision: http://reviews.llvm.org/D14338

llvm-svn: 252334
2015-11-06 19:45:01 +00:00
..
InstPrinter [WebAssembly] Add WebAssemblyMCInstLower.cpp. 2015-11-05 19:28:16 +00:00
MCTargetDesc [WebAssembly] Add WebAssemblyMCInstLower.cpp. 2015-11-05 19:28:16 +00:00
TargetInfo
CMakeLists.txt [WebAssembly] Add WebAssemblyMCInstLower.cpp. 2015-11-05 19:28:16 +00:00
LLVMBuild.txt [WebAssembly] Make WebAssemblyCodeGen depend on WebAssemblyAsmPrinter 2015-11-02 23:23:16 +00:00
Makefile [WebAssembly] Skeleton FastISel support 2015-08-24 18:44:37 +00:00
README.txt
Relooper.cpp WebAssembly: relooper analysis pass 2015-10-16 16:35:49 +00:00
Relooper.h WebAssembly: relooper analysis pass 2015-10-16 16:35:49 +00:00
WebAssembly.h WebAssembly: relooper analysis pass 2015-10-16 16:35:49 +00:00
WebAssembly.td WebAssembly: add a generic CPU 2015-07-27 23:25:54 +00:00
WebAssemblyAsmPrinter.cpp [WebAssembly] Make expression-stack pushing explicit 2015-11-06 19:45:01 +00:00
WebAssemblyCFGStackify.cpp [WebAssembly] Fix CFG stackification of nested loops. 2015-10-02 21:11:36 +00:00
WebAssemblyFastISel.cpp [WebAssembly] Skeleton FastISel support 2015-08-24 18:44:37 +00:00
WebAssemblyFrameLowering.cpp [WebAssembly] Use the checked form of MachineFunction::getSubtarget. NFC. 2015-08-24 16:46:31 +00:00
WebAssemblyFrameLowering.h
WebAssemblyInstrAtomics.td
WebAssemblyInstrCall.td [WebAssembly] Support for direct call and call_indirect. 2015-09-28 16:22:39 +00:00
WebAssemblyInstrControl.td [WebAssembly] Add AsmString strings for most instructions. 2015-11-05 20:42:30 +00:00
WebAssemblyInstrConv.td [WebAssembly] Add AsmString strings for most instructions. 2015-11-05 20:42:30 +00:00
WebAssemblyInstrFloat.td [WebAssembly] Add AsmString strings for most instructions. 2015-11-05 20:42:30 +00:00
WebAssemblyInstrFormats.td [WebAssembly] Add AsmString strings for most instructions. 2015-11-05 20:42:30 +00:00
WebAssemblyInstrInfo.cpp WebAssembly: fix syntax for br_if. 2015-10-20 00:37:42 +00:00
WebAssemblyInstrInfo.h [WebAssembly] Check in an initial CFG Stackifier pass 2015-09-16 16:51:30 +00:00
WebAssemblyInstrInfo.td [WebAssembly] Rename Immediate instructions to Const. 2015-11-05 20:44:29 +00:00
WebAssemblyInstrInteger.td [WebAssembly] Fix copypasta. 2015-11-05 20:59:49 +00:00
WebAssemblyInstrMemory.td [WebAssembly] Fix copypasta. 2015-11-05 20:59:49 +00:00
WebAssemblyInstrSIMD.td
WebAssemblyISD.def WebAssembly: fix syntax for br_if. 2015-10-20 00:37:42 +00:00
WebAssemblyISelDAGToDAG.cpp
WebAssemblyISelLowering.cpp [WebAssembly] Switch to a more traditional assembly syntax 2015-10-06 00:27:55 +00:00
WebAssemblyISelLowering.h [WebAssembly] Check in an initial CFG Stackifier pass 2015-09-16 16:51:30 +00:00
WebAssemblyMachineFunctionInfo.cpp
WebAssemblyMachineFunctionInfo.h [WebAssembly] Switch to a more traditional assembly syntax 2015-10-06 00:27:55 +00:00
WebAssemblyMCInstLower.cpp [WebAssembly] Add WebAssemblyMCInstLower.cpp. 2015-11-05 19:28:16 +00:00
WebAssemblyMCInstLower.h [WebAssembly] Add WebAssemblyMCInstLower.cpp. 2015-11-05 19:28:16 +00:00
WebAssemblyRegisterInfo.cpp
WebAssemblyRegisterInfo.h
WebAssemblyRegisterInfo.td [WebAssembly] Rename several functions and types according to the new spec. 2015-09-26 01:09:44 +00:00
WebAssemblySelectionDAGInfo.cpp
WebAssemblySelectionDAGInfo.h
WebAssemblySubtarget.cpp
WebAssemblySubtarget.h
WebAssemblyTargetMachine.cpp Try to fix WebAssembly build after r247864 2015-09-16 23:59:57 +00:00
WebAssemblyTargetMachine.h
WebAssemblyTargetObjectFile.h
WebAssemblyTargetTransformInfo.cpp [WebAssembly] Tell TargetTransformInfo about popcnt and sqrt. 2015-08-24 16:51:46 +00:00
WebAssemblyTargetTransformInfo.h Try to fix WebAssembly build after r247864 2015-09-16 23:59:57 +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.

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