summaryrefslogtreecommitdiff
path: root/include/llvm/Support/Wasm.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/llvm/Support/Wasm.h')
-rw-r--r--include/llvm/Support/Wasm.h205
1 files changed, 0 insertions, 205 deletions
diff --git a/include/llvm/Support/Wasm.h b/include/llvm/Support/Wasm.h
deleted file mode 100644
index e3831827062c..000000000000
--- a/include/llvm/Support/Wasm.h
+++ /dev/null
@@ -1,205 +0,0 @@
-//===- Wasm.h - Wasm object file format -------------------------*- C++ -*-===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file defines manifest constants for the wasm object file format.
-// See: https://github.com/WebAssembly/design/blob/master/BinaryEncoding.md
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_SUPPORT_WASM_H
-#define LLVM_SUPPORT_WASM_H
-
-#include "llvm/ADT/ArrayRef.h"
-
-namespace llvm {
-namespace wasm {
-
-// Object file magic string.
-const char WasmMagic[] = {'\0', 'a', 's', 'm'};
-// Wasm binary format version
-const uint32_t WasmVersion = 0x1;
-// Wasm uses a 64k page size
-const uint32_t WasmPageSize = 65536;
-
-struct WasmObjectHeader {
- StringRef Magic;
- uint32_t Version;
-};
-
-struct WasmSignature {
- std::vector<int32_t> ParamTypes;
- int32_t ReturnType;
-};
-
-struct WasmExport {
- StringRef Name;
- uint32_t Kind;
- uint32_t Index;
-};
-
-struct WasmLimits {
- uint32_t Flags;
- uint32_t Initial;
- uint32_t Maximum;
-};
-
-struct WasmTable {
- int32_t ElemType;
- WasmLimits Limits;
-};
-
-struct WasmInitExpr {
- uint8_t Opcode;
- union {
- int32_t Int32;
- int64_t Int64;
- int32_t Float32;
- int64_t Float64;
- uint32_t Global;
- } Value;
-};
-
-struct WasmGlobal {
- int32_t Type;
- bool Mutable;
- WasmInitExpr InitExpr;
-};
-
-struct WasmImport {
- StringRef Module;
- StringRef Field;
- uint32_t Kind;
- union {
- uint32_t SigIndex;
- WasmGlobal Global;
- WasmTable Table;
- WasmLimits Memory;
- };
-};
-
-struct WasmLocalDecl {
- int32_t Type;
- uint32_t Count;
-};
-
-struct WasmFunction {
- std::vector<WasmLocalDecl> Locals;
- ArrayRef<uint8_t> Body;
-};
-
-struct WasmDataSegment {
- uint32_t Index;
- WasmInitExpr Offset;
- ArrayRef<uint8_t> Content;
-};
-
-struct WasmElemSegment {
- uint32_t TableIndex;
- WasmInitExpr Offset;
- std::vector<uint32_t> Functions;
-};
-
-struct WasmRelocation {
- uint32_t Type; // The type of the relocation.
- int32_t Index; // Index into function to global index space.
- uint64_t Offset; // Offset from the start of the section.
- int64_t Addend; // A value to add to the symbol.
-};
-
-enum : unsigned {
- WASM_SEC_CUSTOM = 0, // Custom / User-defined section
- WASM_SEC_TYPE = 1, // Function signature declarations
- WASM_SEC_IMPORT = 2, // Import declarations
- WASM_SEC_FUNCTION = 3, // Function declarations
- WASM_SEC_TABLE = 4, // Indirect function table and other tables
- WASM_SEC_MEMORY = 5, // Memory attributes
- WASM_SEC_GLOBAL = 6, // Global declarations
- WASM_SEC_EXPORT = 7, // Exports
- WASM_SEC_START = 8, // Start function declaration
- WASM_SEC_ELEM = 9, // Elements section
- WASM_SEC_CODE = 10, // Function bodies (code)
- WASM_SEC_DATA = 11 // Data segments
-};
-
-// Type immediate encodings used in various contexts.
-enum {
- WASM_TYPE_I32 = -0x01,
- WASM_TYPE_I64 = -0x02,
- WASM_TYPE_F32 = -0x03,
- WASM_TYPE_F64 = -0x04,
- WASM_TYPE_ANYFUNC = -0x10,
- WASM_TYPE_FUNC = -0x20,
- WASM_TYPE_NORESULT = -0x40, // for blocks with no result values
-};
-
-// Kinds of externals (for imports and exports).
-enum : unsigned {
- WASM_EXTERNAL_FUNCTION = 0x0,
- WASM_EXTERNAL_TABLE = 0x1,
- WASM_EXTERNAL_MEMORY = 0x2,
- WASM_EXTERNAL_GLOBAL = 0x3,
-};
-
-// Opcodes used in initializer expressions.
-enum : unsigned {
- WASM_OPCODE_END = 0x0b,
- WASM_OPCODE_GET_GLOBAL = 0x23,
- WASM_OPCODE_I32_CONST = 0x41,
- WASM_OPCODE_I64_CONST = 0x42,
- WASM_OPCODE_F32_CONST = 0x43,
- WASM_OPCODE_F64_CONST = 0x44,
-};
-
-enum : unsigned {
- WASM_NAMES_FUNCTION = 0x1,
- WASM_NAMES_LOCAL = 0x2,
-};
-
-enum : unsigned {
- WASM_LIMITS_FLAG_HAS_MAX = 0x1,
-};
-
-// Subset of types that a value can have
-enum class ValType {
- I32 = WASM_TYPE_I32,
- I64 = WASM_TYPE_I64,
- F32 = WASM_TYPE_F32,
- F64 = WASM_TYPE_F64,
-};
-
-// Linking metadata kinds.
-enum : unsigned {
- WASM_STACK_POINTER = 0x1,
-};
-
-#define WASM_RELOC(name, value) name = value,
-
-enum : unsigned {
-#include "WasmRelocs/WebAssembly.def"
-};
-
-#undef WASM_RELOC
-
-struct Global {
- ValType Type;
- bool Mutable;
-
- // The initial value for this global is either the value of an imported
- // global, in which case InitialModule and InitialName specify the global
- // import, or a value, in which case InitialModule is empty and InitialValue
- // holds the value.
- StringRef InitialModule;
- StringRef InitialName;
- uint64_t InitialValue;
-};
-
-} // end namespace wasm
-} // end namespace llvm
-
-#endif