MLIR  22.0.0git
Namespaces | Macros | Functions
TranslateFromWasm.cpp File Reference
#include "mlir/Dialect/WasmSSA/IR/WasmSSA.h"
#include "mlir/IR/Attributes.h"
#include "mlir/IR/Builders.h"
#include "mlir/IR/BuiltinAttributeInterfaces.h"
#include "mlir/IR/BuiltinAttributes.h"
#include "mlir/IR/BuiltinTypes.h"
#include "mlir/IR/Location.h"
#include "mlir/Support/LLVM.h"
#include "mlir/Target/Wasm/WasmBinaryEncoding.h"
#include "mlir/Target/Wasm/WasmImporter.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/DebugLog.h"
#include "llvm/Support/Endian.h"
#include "llvm/Support/FormatVariadic.h"
#include "llvm/Support/LEB128.h"
#include "llvm/Support/LogicalResult.h"
#include <cstddef>
#include <cstdint>
#include <variant>

Go to the source code of this file.

Namespaces

 mlir
 Include the generated interface declarations.
 
 mlir::wasm
 

Macros

#define DEBUG_TYPE   "wasm-translate"
 
#define APPLY_WASM_SEC_TRANSFORM
 
#define WASM_SEC_TRANSFORM(section)
 
#define BUILD_NUMERIC_OP(OP_NAME, N_ARGS, PREFIX, SUFFIX, TYPE)
 
#define BUILD_NUMERIC_BINOP_INT(OP_NAME, PREFIX)
 
#define BUILD_NUMERIC_BINOP_FP(OP_NAME, PREFIX)
 
#define BUILD_NUMERIC_BINOP_INTFP(OP_NAME, PREFIX)
 
#define BUILD_NUMERIC_UNARY_OP_INT(OP_NAME, PREFIX)
 
#define BUILD_NUMERIC_UNARY_OP_FP(OP_NAME, PREFIX)
 
#define BUILD_CONVERSION_OP(IN_T, OUT_T, SOURCE_OP, TARGET_OP)
 
#define BUILD_CONVERT_OP_FOR(DEST_T, WIDTH)
 
#define BUILD_SLICE_EXTEND_PARSER(IT_WIDTH, EXTRACT_WIDTH)
 
#define BUILD_REINTERPRET_PARSER(WIDTH, FP_TYPE)
 

Functions

OwningOpRef< ModuleOp > mlir::wasm::importWebAssemblyToModule (llvm::SourceMgr &source, MLIRContext *context)
 If source contains a valid Wasm binary file, this function returns a a ModuleOp containing the representation of the Wasm module encoded in the source file in the wasmssa dialect. More...
 

Macro Definition Documentation

◆ APPLY_WASM_SEC_TRANSFORM

#define APPLY_WASM_SEC_TRANSFORM
Value:
WASM_SEC_TRANSFORM(TYPE) \
WASM_SEC_TRANSFORM(IMPORT) \
WASM_SEC_TRANSFORM(FUNCTION) \
WASM_SEC_TRANSFORM(TABLE) \
WASM_SEC_TRANSFORM(MEMORY) \
WASM_SEC_TRANSFORM(GLOBAL) \
WASM_SEC_TRANSFORM(EXPORT) \
WASM_SEC_TRANSFORM(START) \
WASM_SEC_TRANSFORM(ELEMENT) \
WASM_SEC_TRANSFORM(CODE) \
WASM_SEC_TRANSFORM(DATA) \
WASM_SEC_TRANSFORM(DATACOUNT)
#define EXPORT
#define WASM_SEC_TRANSFORM(section)

Definition at line 64 of file TranslateFromWasm.cpp.

◆ BUILD_CONVERSION_OP

#define BUILD_CONVERSION_OP (   IN_T,
  OUT_T,
  SOURCE_OP,
  TARGET_OP 
)
Value:
template <> \
inline parsed_inst_t ExpressionParser::parseSpecificInstruction< \
WasmBinaryEncoding::OpCode::SOURCE_OP>(OpBuilder & builder) { \
return buildConvertOp<TARGET_OP, IN_T, OUT_T>(builder); \
}
This class helps build Operations.
Definition: Builders.h:207

Definition at line 1413 of file TranslateFromWasm.cpp.

◆ BUILD_CONVERT_OP_FOR

#define BUILD_CONVERT_OP_FOR (   DEST_T,
  WIDTH 
)
Value:
BUILD_CONVERSION_OP(uint32_t, DEST_T, convertUI32F##WIDTH, ConvertUOp) \
BUILD_CONVERSION_OP(int32_t, DEST_T, convertSI32F##WIDTH, ConvertSOp) \
BUILD_CONVERSION_OP(uint64_t, DEST_T, convertUI64F##WIDTH, ConvertUOp) \
BUILD_CONVERSION_OP(int64_t, DEST_T, convertSI64F##WIDTH, ConvertSOp)
#define BUILD_CONVERSION_OP(IN_T, OUT_T, SOURCE_OP, TARGET_OP)

Definition at line 1420 of file TranslateFromWasm.cpp.

◆ BUILD_NUMERIC_BINOP_FP

#define BUILD_NUMERIC_BINOP_FP (   OP_NAME,
  PREFIX 
)
Value:
BUILD_NUMERIC_OP(OP_NAME, 2, PREFIX, F32, float) \
BUILD_NUMERIC_OP(OP_NAME, 2, PREFIX, F64, double)
#define BUILD_NUMERIC_OP(OP_NAME, N_ARGS, PREFIX, SUFFIX, TYPE)

Definition at line 1309 of file TranslateFromWasm.cpp.

◆ BUILD_NUMERIC_BINOP_INT

#define BUILD_NUMERIC_BINOP_INT (   OP_NAME,
  PREFIX 
)
Value:
BUILD_NUMERIC_OP(OP_NAME, 2, PREFIX, I32, int32_t) \
BUILD_NUMERIC_OP(OP_NAME, 2, PREFIX, I64, int64_t)

Definition at line 1304 of file TranslateFromWasm.cpp.

◆ BUILD_NUMERIC_BINOP_INTFP

#define BUILD_NUMERIC_BINOP_INTFP (   OP_NAME,
  PREFIX 
)
Value:
BUILD_NUMERIC_BINOP_INT(OP_NAME, PREFIX) \
BUILD_NUMERIC_BINOP_FP(OP_NAME, PREFIX)
#define BUILD_NUMERIC_BINOP_INT(OP_NAME, PREFIX)

Definition at line 1314 of file TranslateFromWasm.cpp.

◆ BUILD_NUMERIC_OP

#define BUILD_NUMERIC_OP (   OP_NAME,
  N_ARGS,
  PREFIX,
  SUFFIX,
  TYPE 
)
Value:
template <> \
inline parsed_inst_t ExpressionParser::parseSpecificInstruction< \
WasmBinaryEncoding::OpCode::PREFIX##SUFFIX>(OpBuilder & builder) { \
return buildNumericOp<OP_NAME, TYPE, N_ARGS>(builder); \
}

Definition at line 1296 of file TranslateFromWasm.cpp.

◆ BUILD_NUMERIC_UNARY_OP_FP

#define BUILD_NUMERIC_UNARY_OP_FP (   OP_NAME,
  PREFIX 
)
Value:
BUILD_NUMERIC_OP(OP_NAME, 1, PREFIX, F32, float) \
BUILD_NUMERIC_OP(OP_NAME, 1, PREFIX, F64, double)

Definition at line 1324 of file TranslateFromWasm.cpp.

◆ BUILD_NUMERIC_UNARY_OP_INT

#define BUILD_NUMERIC_UNARY_OP_INT (   OP_NAME,
  PREFIX 
)
Value:
BUILD_NUMERIC_OP(OP_NAME, 1, PREFIX, I32, int32_t) \
BUILD_NUMERIC_OP(OP_NAME, 1, PREFIX, I64, int64_t)

Definition at line 1319 of file TranslateFromWasm.cpp.

◆ BUILD_REINTERPRET_PARSER

#define BUILD_REINTERPRET_PARSER (   WIDTH,
  FP_TYPE 
)
Value:
template <> \
inline parsed_inst_t ExpressionParser::parseSpecificInstruction< \
WasmBinaryEncoding::OpCode::reinterpretF##WIDTH##AsI##WIDTH>(OpBuilder & \
builder) { \
return buildConvertOp<ReinterpretOp, FP_TYPE, int##WIDTH##_t>(builder); \
} \
\
template <> \
inline parsed_inst_t ExpressionParser::parseSpecificInstruction< \
WasmBinaryEncoding::OpCode::reinterpretI##WIDTH##AsF##WIDTH>(OpBuilder & \
builder) { \
return buildConvertOp<ReinterpretOp, int##WIDTH##_t, FP_TYPE>(builder); \
}

Definition at line 1460 of file TranslateFromWasm.cpp.

◆ BUILD_SLICE_EXTEND_PARSER

#define BUILD_SLICE_EXTEND_PARSER (   IT_WIDTH,
  EXTRACT_WIDTH 
)
Value:
template <> \
parsed_inst_t ExpressionParser::parseSpecificInstruction< \
WasmBinaryEncoding::OpCode::extendI##IT_WIDTH##EXTRACT_WIDTH##S>( \
OpBuilder & builder) { \
using inout_t = int##IT_WIDTH##_t; \
auto attr = builder.getUI32IntegerAttr(EXTRACT_WIDTH); \
return buildConvertOp<ExtendLowBitsSOp, inout_t, inout_t>(builder, attr); \
}

Definition at line 1436 of file TranslateFromWasm.cpp.

◆ DEBUG_TYPE

#define DEBUG_TYPE   "wasm-translate"

Definition at line 34 of file TranslateFromWasm.cpp.

◆ WASM_SEC_TRANSFORM

#define WASM_SEC_TRANSFORM (   section)
Value:
template <> \
[[maybe_unused]] constexpr const char \
*wasmSectionName<WasmSectionType::section> = #section;

Definition at line 82 of file TranslateFromWasm.cpp.