llvm-project/llvm/lib/MC
Derek Schuff e4825975d8 [WebAssembly] Added initial AsmParser implementation.
It uses the MC framework and the tablegen matcher to do the
heavy lifting. Can handle both explicit and implicit locals
(-disable-wasm-explicit-locals). Comes with a small regression
test.

This is a first basic implementation that can parse most llvm .s
output and round-trips most instructions succesfully, but in order
to keep the commit small, does not address all issues.

There are a fair number of mismatches between what MC / assembly
matcher think a "CPU" should look like and what WASM provides,
some already have workarounds in this commit (e.g. the way it
deals with register operands) and some that require further work.
Some of that further work may involve changing what the
Disassembler outputs (and what s2wasm parses), so are probably
best left to followups.

Some known things missing:
- Many directives are ignored and not emitted.
- Vararg calls are parsed but extra args not emitted.
- Loop signatures are likely incorrect.
- $drop= is not emitted.
- Disassembler does not output SIMD types correctly, so assembler
  can't test them.

Patch by Wouter van Oortmerssen

Differential Revision: https://reviews.llvm.org/D44329

llvm-svn: 328028
2018-03-20 20:06:35 +00:00
..
MCDisassembler Shrink various scheduling tables by using narrower types. 2018-02-23 19:32:56 +00:00
MCParser Delay creating an alias for @@@. 2018-03-09 18:42:25 +00:00
CMakeLists.txt [Asm] Add debug printing for assembler macros 2018-03-06 14:07:01 +00:00
ConstantPools.cpp Re-apply r302416: [ARM] Clear the constant pool cache on explicit .ltorg directives 2017-05-22 09:42:07 +00:00
ELFObjectWriter.cpp Delay creating an alias for @@@. 2018-03-09 18:42:25 +00:00
LLVMBuild.txt
MCAsmBackend.cpp [MC] Adding code padding for performance stability - infrastructure. NFC. 2017-10-24 06:16:03 +00:00
MCAsmInfo.cpp Move Object format code to lib/BinaryFormat. 2017-06-07 03:48:56 +00:00
MCAsmInfoCOFF.cpp [MC] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-02-11 00:27:28 +00:00
MCAsmInfoDarwin.cpp Move Object format code to lib/BinaryFormat. 2017-06-07 03:48:56 +00:00
MCAsmInfoELF.cpp Move Object format code to lib/BinaryFormat. 2017-06-07 03:48:56 +00:00
MCAsmInfoWasm.cpp Remove redundant includes from lib/MC. 2017-12-13 21:30:54 +00:00
MCAsmMacro.cpp [Asm] Fix another layering violation in assmebly macro dumping 2018-03-06 16:51:17 +00:00
MCAsmStreamer.cpp [MC] fix documentation comments; NFC 2018-03-13 17:50:27 +00:00
MCAssembler.cpp [MC] Fix assembler infinite loop on EH table using LEB padding. 2018-02-01 00:25:19 +00:00
MCCodeEmitter.cpp [MC] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-02-08 22:23:19 +00:00
MCCodePadder.cpp [MC] Adding code padding for performance stability - infrastructure. NFC. 2017-10-24 06:16:03 +00:00
MCCodeView.cpp [CodeView] Add line numbers for inlined call sites 2018-01-18 22:55:43 +00:00
MCContext.cpp [DebugInfo] Support DWARF v5 source code embedding extension 2018-02-23 23:01:06 +00:00
MCDwarf.cpp Revert "Reapply "[DWARFv5] Emit file 0 to the line table."" 2018-03-07 16:27:44 +00:00
MCELFObjectTargetWriter.cpp [mips] Do not pass redundant IsN64 flag to MCELFObjectTargetWriter. NFC 2017-09-21 14:04:47 +00:00
MCELFStreamer.cpp Delay creating an alias for @@@. 2018-03-09 18:42:25 +00:00
MCExpr.cpp [WebAssembly] Added initial AsmParser implementation. 2018-03-20 20:06:35 +00:00
MCFragment.cpp NFC: Rename MCSafeSEHFragment to MCSymbolIdFragment 2017-11-08 18:57:02 +00:00
MCInst.cpp Reverting r315590; it did not include changes for llvm-tblgen, which is causing link errors for several people. 2017-10-15 14:32:27 +00:00
MCInstPrinter.cpp Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
MCInstrAnalysis.cpp Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
MCInstrDesc.cpp
MCLabel.cpp Reverting r315590; it did not include changes for llvm-tblgen, which is causing link errors for several people. 2017-10-15 14:32:27 +00:00
MCLinkerOptimizationHint.cpp [MC] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-02-11 00:27:28 +00:00
MCMachOStreamer.cpp Don't create MCFillFragment directly. 2018-01-09 21:55:10 +00:00
MCMachObjectTargetWriter.cpp [MC] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-02-11 00:27:28 +00:00
MCNullStreamer.cpp Remove redundant includes from lib/MC. 2017-12-13 21:30:54 +00:00
MCObjectFileInfo.cpp [DWARFv5] Emit .debug_line_str (in a non-DWO file). 2018-02-06 20:29:21 +00:00
MCObjectStreamer.cpp Re-land r327620 "[CodeView] Initial support for emitting S_BLOCK32 symbols for lexical scopes" 2018-03-15 21:24:04 +00:00
MCObjectWriter.cpp Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
MCRegisterInfo.cpp [MC] Handle unknown literal register numbers in .cfi_* directives 2017-12-01 21:44:27 +00:00
MCSchedule.cpp [MC] Move the reciprocal throughput computation from TargetSchedModel to MCSchedModel. 2018-03-13 16:28:55 +00:00
MCSection.cpp Reverting r315590; it did not include changes for llvm-tblgen, which is causing link errors for several people. 2017-10-15 14:32:27 +00:00
MCSectionCOFF.cpp Move Object format code to lib/BinaryFormat. 2017-06-07 03:48:56 +00:00
MCSectionELF.cpp CodeGen: support an extension to pass linker options on ELF 2018-01-30 16:29:29 +00:00
MCSectionMachO.cpp Fix the GCC build. 2017-01-30 19:05:09 +00:00
MCSectionWasm.cpp Remove redundant includes from lib/MC. 2017-12-13 21:30:54 +00:00
MCStreamer.cpp Delay creating an alias for @@@. 2018-03-09 18:42:25 +00:00
MCSubtargetInfo.cpp Typo: const MCSchedModel SchedModel -> const MCSchedModel &SchedModel 2017-09-27 12:48:48 +00:00
MCSymbol.cpp Reverting r315590; it did not include changes for llvm-tblgen, which is causing link errors for several people. 2017-10-15 14:32:27 +00:00
MCSymbolELF.cpp Remove redundant includes from lib/MC. 2017-12-13 21:30:54 +00:00
MCTargetOptions.cpp Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
MCValue.cpp Reverting r315590; it did not include changes for llvm-tblgen, which is causing link errors for several people. 2017-10-15 14:32:27 +00:00
MCWasmObjectTargetWriter.cpp [WebAssembly] Remove unused methods from MCWasmObjectTargetWriter 2017-06-06 16:38:59 +00:00
MCWasmStreamer.cpp [WebAssembly] Add first claass symbol table to wasm objects 2018-02-23 05:08:34 +00:00
MCWin64EH.cpp Remove redundant includes from lib/MC. 2017-12-13 21:30:54 +00:00
MCWinCOFFStreamer.cpp Reland "Emit Function IDs table for Control Flow Guard" 2018-01-09 23:49:30 +00:00
MCWinEH.cpp Move Object format code to lib/BinaryFormat. 2017-06-07 03:48:56 +00:00
MachObjectWriter.cpp [MC] Issue error message when data region is not terminated 2018-02-12 07:19:05 +00:00
StringTableBuilder.cpp [DWARFv5] Emit .debug_line_str (in a non-DWO file). 2018-02-06 20:29:21 +00:00
SubtargetFeature.cpp Reverting r315590; it did not include changes for llvm-tblgen, which is causing link errors for several people. 2017-10-15 14:32:27 +00:00
WasmObjectWriter.cpp [WebAssembly] Disallow weak undefined globals in the object format 2018-03-09 16:30:44 +00:00
WinCOFFObjectWriter.cpp [MC] Always emit relocations for same-section function references 2018-03-14 19:24:32 +00:00