void writeHeader(const MCAssembler &Asm);
+ void writeValueType(wasm::ValType Ty) {
+ encodeSLEB128(int32_t(Ty), getStream());
+ }
+
void recordRelocation(MCAssembler &Asm, const MCAsmLayout &Layout,
const MCFragment *Fragment, const MCFixup &Fixup,
MCValue Target, bool &IsPCRel,
assert((Name != nullptr) == (SectionId == wasm::WASM_SEC_CUSTOM) &&
"Only custom sections can have names");
- write8(SectionId);
+ encodeULEB128(SectionId, getStream());
Section.SizeOffset = getStream().tell();
enum { Plain, Empty, Tombstone } State;
// The return types of the function.
- SmallVector<unsigned, 1> Returns;
+ SmallVector<wasm::ValType, 1> Returns;
// The parameter types of the function.
- SmallVector<unsigned, 4> Params;
+ SmallVector<wasm::ValType, 4> Params;
WasmFunctionType() : State(Plain) {}
}
static unsigned getHashValue(const WasmFunctionType &FuncTy) {
uintptr_t Value = FuncTy.State;
- for (unsigned Ret : FuncTy.Returns)
- Value += DenseMapInfo<unsigned>::getHashValue(Ret);
- for (unsigned Param : FuncTy.Params)
- Value += DenseMapInfo<unsigned>::getHashValue(Param);
+ for (wasm::ValType Ret : FuncTy.Returns)
+ Value += DenseMapInfo<int32_t>::getHashValue(int32_t(Ret));
+ for (wasm::ValType Param : FuncTy.Params)
+ Value += DenseMapInfo<int32_t>::getHashValue(int32_t(Param));
return Value;
}
static bool isEqual(const WasmFunctionType &LHS,
encodeULEB128(FunctionTypes.size(), getStream());
for (WasmFunctionType &FuncTy : FunctionTypes) {
- write8(wasm::WASM_TYPE_FUNC);
+ encodeSLEB128(wasm::WASM_TYPE_FUNC, getStream());
encodeULEB128(FuncTy.Params.size(), getStream());
- for (unsigned Ty : FuncTy.Params)
- write8(Ty);
+ for (wasm::ValType Ty : FuncTy.Params)
+ writeValueType(Ty);
encodeULEB128(FuncTy.Returns.size(), getStream());
- for (unsigned Ty : FuncTy.Returns)
- write8(Ty);
+ for (wasm::ValType Ty : FuncTy.Returns)
+ writeValueType(Ty);
}
endSection(Section);
encodeULEB128(FieldName.size(), getStream());
writeBytes(FieldName);
- write8(Import.Kind);
+ encodeULEB128(Import.Kind, getStream());
switch (Import.Kind) {
case wasm::WASM_EXTERNAL_FUNCTION:
encodeULEB128(Import.Type, getStream());
break;
case wasm::WASM_EXTERNAL_GLOBAL:
- write8(Import.Type);
- write8(0); // mutability
+ encodeSLEB128(Import.Type, getStream());
+ encodeULEB128(0, getStream()); // mutability
break;
default:
llvm_unreachable("unsupported import kind");
// The number of tables, fixed to 1 for now.
encodeULEB128(1, getStream());
- write8(wasm::WASM_TYPE_ANYFUNC);
+ encodeSLEB128(wasm::WASM_TYPE_ANYFUNC, getStream());
encodeULEB128(0, getStream()); // flags
encodeULEB128(TableElems.size(), getStream()); // initial
encodeULEB128(Globals.size(), getStream());
for (const WasmGlobal &Global : Globals) {
- write8(Global.Type);
+ encodeSLEB128(Global.Type, getStream());
write8(Global.IsMutable);
write8(wasm::WASM_OPCODE_I32_CONST);
encodeULEB128(Export.FieldName.size(), getStream());
writeBytes(Export.FieldName);
- write8(Export.Kind);
+ encodeSLEB128(Export.Kind, getStream());
encodeULEB128(Export.Index, getStream());
}
if (!CodeRelocations.empty()) {
startSection(Section, wasm::WASM_SEC_CUSTOM, "reloc.CODE");
- write8(wasm::WASM_SEC_CODE);
+ encodeULEB128(wasm::WASM_SEC_CODE, getStream());
encodeULEB128(CodeRelocations.size(), getStream());
if (!DataRelocations.empty()) {
startSection(Section, wasm::WASM_SEC_CUSTOM, "reloc.DATA");
- write8(wasm::WASM_SEC_DATA);
+ encodeULEB128(wasm::WASM_SEC_DATA, getStream());
encodeULEB128(DataRelocations.size(), getStream());
};
void llvm::GetSignature(const WebAssemblySubtarget &Subtarget,
- RTLIB::Libcall LC,
- SmallVectorImpl<unsigned> &Rets,
- SmallVectorImpl<unsigned> &Params)
-{
+ RTLIB::Libcall LC, SmallVectorImpl<wasm::ValType> &Rets,
+ SmallVectorImpl<wasm::ValType> &Params) {
assert(Rets.empty());
assert(Params.empty());
case func:
break;
case f32_func_f32:
- Rets.push_back(unsigned(WebAssembly::ExprType::F32));
- Params.push_back(unsigned(WebAssembly::ExprType::F32));
+ Rets.push_back(wasm::ValType::F32);
+ Params.push_back(wasm::ValType::F32);
break;
case f32_func_f64:
- Rets.push_back(unsigned(WebAssembly::ExprType::F32));
- Params.push_back(unsigned(WebAssembly::ExprType::F64));
+ Rets.push_back(wasm::ValType::F32);
+ Params.push_back(wasm::ValType::F64);
break;
case f32_func_i32:
- Rets.push_back(unsigned(WebAssembly::ExprType::F32));
- Params.push_back(unsigned(WebAssembly::ExprType::I32));
+ Rets.push_back(wasm::ValType::F32);
+ Params.push_back(wasm::ValType::I32);
break;
case f32_func_i64:
- Rets.push_back(unsigned(WebAssembly::ExprType::F32));
- Params.push_back(unsigned(WebAssembly::ExprType::I64));
+ Rets.push_back(wasm::ValType::F32);
+ Params.push_back(wasm::ValType::I64);
break;
case f32_func_i16:
- Rets.push_back(unsigned(WebAssembly::ExprType::F32));
- Params.push_back(unsigned(WebAssembly::ExprType::I32));
+ Rets.push_back(wasm::ValType::F32);
+ Params.push_back(wasm::ValType::I32);
break;
case f64_func_f32:
- Rets.push_back(unsigned(WebAssembly::ExprType::F64));
- Params.push_back(unsigned(WebAssembly::ExprType::F32));
+ Rets.push_back(wasm::ValType::F64);
+ Params.push_back(wasm::ValType::F32);
break;
case f64_func_f64:
- Rets.push_back(unsigned(WebAssembly::ExprType::F64));
- Params.push_back(unsigned(WebAssembly::ExprType::F64));
+ Rets.push_back(wasm::ValType::F64);
+ Params.push_back(wasm::ValType::F64);
break;
case f64_func_i32:
- Rets.push_back(unsigned(WebAssembly::ExprType::F64));
- Params.push_back(unsigned(WebAssembly::ExprType::I32));
+ Rets.push_back(wasm::ValType::F64);
+ Params.push_back(wasm::ValType::I32);
break;
case f64_func_i64:
- Rets.push_back(unsigned(WebAssembly::ExprType::F64));
- Params.push_back(unsigned(WebAssembly::ExprType::I64));
+ Rets.push_back(wasm::ValType::F64);
+ Params.push_back(wasm::ValType::I64);
break;
case i32_func_f32:
- Rets.push_back(unsigned(WebAssembly::ExprType::I32));
- Params.push_back(unsigned(WebAssembly::ExprType::F32));
+ Rets.push_back(wasm::ValType::I32);
+ Params.push_back(wasm::ValType::F32);
break;
case i32_func_f64:
- Rets.push_back(unsigned(WebAssembly::ExprType::I32));
- Params.push_back(unsigned(WebAssembly::ExprType::F64));
+ Rets.push_back(wasm::ValType::I32);
+ Params.push_back(wasm::ValType::F64);
break;
case i32_func_i32:
- Rets.push_back(unsigned(WebAssembly::ExprType::I32));
- Params.push_back(unsigned(WebAssembly::ExprType::I32));
+ Rets.push_back(wasm::ValType::I32);
+ Params.push_back(wasm::ValType::I32);
break;
case i64_func_f32:
- Rets.push_back(unsigned(WebAssembly::ExprType::I64));
- Params.push_back(unsigned(WebAssembly::ExprType::F32));
+ Rets.push_back(wasm::ValType::I64);
+ Params.push_back(wasm::ValType::F32);
break;
case i64_func_f64:
- Rets.push_back(unsigned(WebAssembly::ExprType::I64));
- Params.push_back(unsigned(WebAssembly::ExprType::F64));
+ Rets.push_back(wasm::ValType::I64);
+ Params.push_back(wasm::ValType::F64);
break;
case i64_func_i64:
- Rets.push_back(unsigned(WebAssembly::ExprType::I64));
- Params.push_back(unsigned(WebAssembly::ExprType::I64));
+ Rets.push_back(wasm::ValType::I64);
+ Params.push_back(wasm::ValType::I64);
break;
case f32_func_f32_f32:
- Rets.push_back(unsigned(WebAssembly::ExprType::F32));
- Params.push_back(unsigned(WebAssembly::ExprType::F32));
- Params.push_back(unsigned(WebAssembly::ExprType::F32));
+ Rets.push_back(wasm::ValType::F32);
+ Params.push_back(wasm::ValType::F32);
+ Params.push_back(wasm::ValType::F32);
break;
case f32_func_f32_i32:
- Rets.push_back(unsigned(WebAssembly::ExprType::F32));
- Params.push_back(unsigned(WebAssembly::ExprType::F32));
- Params.push_back(unsigned(WebAssembly::ExprType::I32));
+ Rets.push_back(wasm::ValType::F32);
+ Params.push_back(wasm::ValType::F32);
+ Params.push_back(wasm::ValType::I32);
break;
case f32_func_i64_i64:
- Rets.push_back(unsigned(WebAssembly::ExprType::F32));
- Params.push_back(unsigned(WebAssembly::ExprType::I64));
- Params.push_back(unsigned(WebAssembly::ExprType::I64));
+ Rets.push_back(wasm::ValType::F32);
+ Params.push_back(wasm::ValType::I64);
+ Params.push_back(wasm::ValType::I64);
break;
case f64_func_f64_f64:
- Rets.push_back(unsigned(WebAssembly::ExprType::F64));
- Params.push_back(unsigned(WebAssembly::ExprType::F64));
- Params.push_back(unsigned(WebAssembly::ExprType::F64));
+ Rets.push_back(wasm::ValType::F64);
+ Params.push_back(wasm::ValType::F64);
+ Params.push_back(wasm::ValType::F64);
break;
case f64_func_f64_i32:
- Rets.push_back(unsigned(WebAssembly::ExprType::F64));
- Params.push_back(unsigned(WebAssembly::ExprType::F64));
- Params.push_back(unsigned(WebAssembly::ExprType::I32));
+ Rets.push_back(wasm::ValType::F64);
+ Params.push_back(wasm::ValType::F64);
+ Params.push_back(wasm::ValType::I32);
break;
case f64_func_i64_i64:
- Rets.push_back(unsigned(WebAssembly::ExprType::F64));
- Params.push_back(unsigned(WebAssembly::ExprType::I64));
- Params.push_back(unsigned(WebAssembly::ExprType::I64));
+ Rets.push_back(wasm::ValType::F64);
+ Params.push_back(wasm::ValType::I64);
+ Params.push_back(wasm::ValType::I64);
break;
case i16_func_f32:
- Rets.push_back(unsigned(WebAssembly::ExprType::I32));
- Params.push_back(unsigned(WebAssembly::ExprType::F32));
+ Rets.push_back(wasm::ValType::I32);
+ Params.push_back(wasm::ValType::F32);
break;
case i8_func_i8_i8:
- Rets.push_back(unsigned(WebAssembly::ExprType::I32));
- Params.push_back(unsigned(WebAssembly::ExprType::I32));
- Params.push_back(unsigned(WebAssembly::ExprType::I32));
+ Rets.push_back(wasm::ValType::I32);
+ Params.push_back(wasm::ValType::I32);
+ Params.push_back(wasm::ValType::I32);
break;
case func_f32_iPTR_iPTR:
- Params.push_back(unsigned(WebAssembly::ExprType::F32));
- Params.push_back(unsigned(iPTR));
- Params.push_back(unsigned(iPTR));
+ Params.push_back(wasm::ValType::F32);
+ Params.push_back(wasm::ValType(iPTR));
+ Params.push_back(wasm::ValType(iPTR));
break;
case func_f64_iPTR_iPTR:
- Params.push_back(unsigned(WebAssembly::ExprType::F64));
- Params.push_back(unsigned(iPTR));
- Params.push_back(unsigned(iPTR));
+ Params.push_back(wasm::ValType::F64);
+ Params.push_back(wasm::ValType(iPTR));
+ Params.push_back(wasm::ValType(iPTR));
break;
case i16_func_i16_i16:
- Rets.push_back(unsigned(WebAssembly::ExprType::I32));
- Params.push_back(unsigned(WebAssembly::ExprType::I32));
- Params.push_back(unsigned(WebAssembly::ExprType::I32));
+ Rets.push_back(wasm::ValType::I32);
+ Params.push_back(wasm::ValType::I32);
+ Params.push_back(wasm::ValType::I32);
break;
case i32_func_f32_f32:
- Rets.push_back(unsigned(WebAssembly::ExprType::I32));
- Params.push_back(unsigned(WebAssembly::ExprType::F32));
- Params.push_back(unsigned(WebAssembly::ExprType::F32));
+ Rets.push_back(wasm::ValType::I32);
+ Params.push_back(wasm::ValType::F32);
+ Params.push_back(wasm::ValType::F32);
break;
case i32_func_f64_f64:
- Rets.push_back(unsigned(WebAssembly::ExprType::I32));
- Params.push_back(unsigned(WebAssembly::ExprType::F64));
- Params.push_back(unsigned(WebAssembly::ExprType::F64));
+ Rets.push_back(wasm::ValType::I32);
+ Params.push_back(wasm::ValType::F64);
+ Params.push_back(wasm::ValType::F64);
break;
case i32_func_i32_i32:
- Rets.push_back(unsigned(WebAssembly::ExprType::I32));
- Params.push_back(unsigned(WebAssembly::ExprType::I32));
- Params.push_back(unsigned(WebAssembly::ExprType::I32));
+ Rets.push_back(wasm::ValType::I32);
+ Params.push_back(wasm::ValType::I32);
+ Params.push_back(wasm::ValType::I32);
break;
case i64_func_i64_i64:
- Rets.push_back(unsigned(WebAssembly::ExprType::I64));
- Params.push_back(unsigned(WebAssembly::ExprType::I64));
- Params.push_back(unsigned(WebAssembly::ExprType::I64));
+ Rets.push_back(wasm::ValType::I64);
+ Params.push_back(wasm::ValType::I64);
+ Params.push_back(wasm::ValType::I64);
break;
case i64_i64_func_f32:
#if 0 // TODO: Enable this when wasm gets multiple-return-value support.
- Rets.push_back(unsigned(WebAssembly::ExprType::I64));
- Rets.push_back(unsigned(WebAssembly::ExprType::I64));
+ Rets.push_back(wasm::ValType::I64);
+ Rets.push_back(wasm::ValType::I64);
#else
- Params.push_back(unsigned(iPTR));
+ Params.push_back(wasm::ValType(iPTR));
#endif
- Params.push_back(unsigned(WebAssembly::ExprType::F32));
+ Params.push_back(wasm::ValType::F32);
break;
case i64_i64_func_f64:
#if 0 // TODO: Enable this when wasm gets multiple-return-value support.
- Rets.push_back(unsigned(WebAssembly::ExprType::I64));
- Rets.push_back(unsigned(WebAssembly::ExprType::I64));
+ Rets.push_back(wasm::ValType::I64);
+ Rets.push_back(wasm::ValType::I64);
#else
- Params.push_back(unsigned(iPTR));
+ Params.push_back(wasm::ValType(iPTR));
#endif
- Params.push_back(unsigned(WebAssembly::ExprType::F64));
+ Params.push_back(wasm::ValType::F64);
break;
case i16_i16_func_i16_i16:
#if 0 // TODO: Enable this when wasm gets multiple-return-value support.
- Rets.push_back(unsigned(WebAssembly::ExprType::I32));
- Rets.push_back(unsigned(WebAssembly::ExprType::I32));
+ Rets.push_back(wasm::ValType::I32);
+ Rets.push_back(wasm::ValType::I32);
#else
- Params.push_back(unsigned(iPTR));
+ Params.push_back(wasm::ValType(iPTR));
#endif
- Params.push_back(unsigned(WebAssembly::ExprType::I32));
- Params.push_back(unsigned(WebAssembly::ExprType::I32));
+ Params.push_back(wasm::ValType::I32);
+ Params.push_back(wasm::ValType::I32);
break;
case i32_i32_func_i32_i32:
#if 0 // TODO: Enable this when wasm gets multiple-return-value support.
- Rets.push_back(unsigned(WebAssembly::ExprType::I32));
- Rets.push_back(unsigned(WebAssembly::ExprType::I32));
+ Rets.push_back(wasm::ValType::I32);
+ Rets.push_back(wasm::ValType::I32);
#else
- Params.push_back(unsigned(iPTR));
+ Params.push_back(wasm::ValType(iPTR));
#endif
- Params.push_back(unsigned(WebAssembly::ExprType::I32));
- Params.push_back(unsigned(WebAssembly::ExprType::I32));
+ Params.push_back(wasm::ValType::I32);
+ Params.push_back(wasm::ValType::I32);
break;
case i64_i64_func_i64_i64:
#if 0 // TODO: Enable this when wasm gets multiple-return-value support.
- Rets.push_back(unsigned(WebAssembly::ExprType::I64));
- Rets.push_back(unsigned(WebAssembly::ExprType::I64));
+ Rets.push_back(wasm::ValType::I64);
+ Rets.push_back(wasm::ValType::I64);
#else
- Params.push_back(unsigned(iPTR));
+ Params.push_back(wasm::ValType(iPTR));
#endif
- Params.push_back(unsigned(WebAssembly::ExprType::I64));
- Params.push_back(unsigned(WebAssembly::ExprType::I64));
+ Params.push_back(wasm::ValType::I64);
+ Params.push_back(wasm::ValType::I64);
break;
case i64_i64_func_i64_i64_i64_i64:
#if 0 // TODO: Enable this when wasm gets multiple-return-value support.
- Rets.push_back(unsigned(WebAssembly::ExprType::I64));
- Rets.push_back(unsigned(WebAssembly::ExprType::I64));
+ Rets.push_back(wasm::ValType::I64);
+ Rets.push_back(wasm::ValType::I64);
#else
- Params.push_back(unsigned(iPTR));
+ Params.push_back(wasm::ValType(iPTR));
#endif
- Params.push_back(unsigned(WebAssembly::ExprType::I64));
- Params.push_back(unsigned(WebAssembly::ExprType::I64));
- Params.push_back(unsigned(WebAssembly::ExprType::I64));
- Params.push_back(unsigned(WebAssembly::ExprType::I64));
+ Params.push_back(wasm::ValType::I64);
+ Params.push_back(wasm::ValType::I64);
+ Params.push_back(wasm::ValType::I64);
+ Params.push_back(wasm::ValType::I64);
break;
case i64_i64_i64_i64_func_i64_i64_i64_i64:
#if 0 // TODO: Enable this when wasm gets multiple-return-value support.
- Rets.push_back(unsigned(WebAssembly::ExprType::I64));
- Rets.push_back(unsigned(WebAssembly::ExprType::I64));
- Rets.push_back(unsigned(WebAssembly::ExprType::I64));
- Rets.push_back(unsigned(WebAssembly::ExprType::I64));
+ Rets.push_back(wasm::ValType::I64);
+ Rets.push_back(wasm::ValType::I64);
+ Rets.push_back(wasm::ValType::I64);
+ Rets.push_back(wasm::ValType::I64);
#else
- Params.push_back(unsigned(iPTR));
+ Params.push_back(wasm::ValType(iPTR));
#endif
- Params.push_back(unsigned(WebAssembly::ExprType::I64));
- Params.push_back(unsigned(WebAssembly::ExprType::I64));
- Params.push_back(unsigned(WebAssembly::ExprType::I64));
- Params.push_back(unsigned(WebAssembly::ExprType::I64));
+ Params.push_back(wasm::ValType::I64);
+ Params.push_back(wasm::ValType::I64);
+ Params.push_back(wasm::ValType::I64);
+ Params.push_back(wasm::ValType::I64);
break;
case i64_i64_func_i64_i64_i32:
#if 0 // TODO: Enable this when wasm gets multiple-return-value support.
- Rets.push_back(unsigned(WebAssembly::ExprType::I64));
- Rets.push_back(unsigned(WebAssembly::ExprType::I64));
- Rets.push_back(unsigned(WebAssembly::ExprType::I64));
- Rets.push_back(unsigned(WebAssembly::ExprType::I64));
+ Rets.push_back(wasm::ValType::I64);
+ Rets.push_back(wasm::ValType::I64);
+ Rets.push_back(wasm::ValType::I64);
+ Rets.push_back(wasm::ValType::I64);
#else
- Params.push_back(unsigned(iPTR));
+ Params.push_back(wasm::ValType(iPTR));
#endif
- Params.push_back(unsigned(WebAssembly::ExprType::I64));
- Params.push_back(unsigned(WebAssembly::ExprType::I64));
- Params.push_back(unsigned(WebAssembly::ExprType::I32));
+ Params.push_back(wasm::ValType::I64);
+ Params.push_back(wasm::ValType::I64);
+ Params.push_back(wasm::ValType::I32);
break;
case iPTR_func_iPTR_i32_iPTR:
- Rets.push_back(unsigned(iPTR));
- Params.push_back(unsigned(iPTR));
- Params.push_back(unsigned(WebAssembly::ExprType::I32));
- Params.push_back(unsigned(iPTR));
+ Rets.push_back(wasm::ValType(iPTR));
+ Params.push_back(wasm::ValType(iPTR));
+ Params.push_back(wasm::ValType::I32);
+ Params.push_back(wasm::ValType(iPTR));
break;
case iPTR_func_iPTR_iPTR_iPTR:
- Rets.push_back(unsigned(iPTR));
- Params.push_back(unsigned(iPTR));
- Params.push_back(unsigned(iPTR));
- Params.push_back(unsigned(iPTR));
+ Rets.push_back(wasm::ValType(iPTR));
+ Params.push_back(wasm::ValType(iPTR));
+ Params.push_back(wasm::ValType(iPTR));
+ Params.push_back(wasm::ValType(iPTR));
break;
case f32_func_f32_f32_f32:
- Rets.push_back(unsigned(WebAssembly::ExprType::F32));
- Params.push_back(unsigned(WebAssembly::ExprType::F32));
- Params.push_back(unsigned(WebAssembly::ExprType::F32));
- Params.push_back(unsigned(WebAssembly::ExprType::F32));
+ Rets.push_back(wasm::ValType::F32);
+ Params.push_back(wasm::ValType::F32);
+ Params.push_back(wasm::ValType::F32);
+ Params.push_back(wasm::ValType::F32);
break;
case f64_func_f64_f64_f64:
- Rets.push_back(unsigned(WebAssembly::ExprType::F64));
- Params.push_back(unsigned(WebAssembly::ExprType::F64));
- Params.push_back(unsigned(WebAssembly::ExprType::F64));
- Params.push_back(unsigned(WebAssembly::ExprType::F64));
+ Rets.push_back(wasm::ValType::F64);
+ Params.push_back(wasm::ValType::F64);
+ Params.push_back(wasm::ValType::F64);
+ Params.push_back(wasm::ValType::F64);
break;
case func_i64_i64_iPTR_iPTR:
- Params.push_back(unsigned(WebAssembly::ExprType::I64));
- Params.push_back(unsigned(WebAssembly::ExprType::I64));
- Params.push_back(unsigned(iPTR));
- Params.push_back(unsigned(iPTR));
+ Params.push_back(wasm::ValType::I64);
+ Params.push_back(wasm::ValType::I64);
+ Params.push_back(wasm::ValType(iPTR));
+ Params.push_back(wasm::ValType(iPTR));
break;
case func_iPTR_f32:
- Params.push_back(unsigned(iPTR));
- Params.push_back(unsigned(WebAssembly::ExprType::F32));
+ Params.push_back(wasm::ValType(iPTR));
+ Params.push_back(wasm::ValType::F32);
break;
case func_iPTR_f64:
- Params.push_back(unsigned(iPTR));
- Params.push_back(unsigned(WebAssembly::ExprType::F64));
+ Params.push_back(wasm::ValType(iPTR));
+ Params.push_back(wasm::ValType::F64);
break;
case func_iPTR_i32:
- Params.push_back(unsigned(iPTR));
- Params.push_back(unsigned(WebAssembly::ExprType::I32));
+ Params.push_back(wasm::ValType(iPTR));
+ Params.push_back(wasm::ValType::I32);
break;
case func_iPTR_i64:
- Params.push_back(unsigned(iPTR));
- Params.push_back(unsigned(WebAssembly::ExprType::I64));
+ Params.push_back(wasm::ValType(iPTR));
+ Params.push_back(wasm::ValType::I64);
break;
case func_iPTR_i64_i64:
- Params.push_back(unsigned(iPTR));
- Params.push_back(unsigned(WebAssembly::ExprType::I64));
- Params.push_back(unsigned(WebAssembly::ExprType::I64));
+ Params.push_back(wasm::ValType(iPTR));
+ Params.push_back(wasm::ValType::I64);
+ Params.push_back(wasm::ValType::I64);
break;
case func_iPTR_i64_i64_i64_i64:
- Params.push_back(unsigned(iPTR));
- Params.push_back(unsigned(WebAssembly::ExprType::I64));
- Params.push_back(unsigned(WebAssembly::ExprType::I64));
- Params.push_back(unsigned(WebAssembly::ExprType::I64));
- Params.push_back(unsigned(WebAssembly::ExprType::I64));
+ Params.push_back(wasm::ValType(iPTR));
+ Params.push_back(wasm::ValType::I64);
+ Params.push_back(wasm::ValType::I64);
+ Params.push_back(wasm::ValType::I64);
+ Params.push_back(wasm::ValType::I64);
break;
case func_iPTR_i64_i64_i64_i64_i64_i64:
- Params.push_back(unsigned(iPTR));
- Params.push_back(unsigned(WebAssembly::ExprType::I64));
- Params.push_back(unsigned(WebAssembly::ExprType::I64));
- Params.push_back(unsigned(WebAssembly::ExprType::I64));
- Params.push_back(unsigned(WebAssembly::ExprType::I64));
- Params.push_back(unsigned(WebAssembly::ExprType::I64));
- Params.push_back(unsigned(WebAssembly::ExprType::I64));
+ Params.push_back(wasm::ValType(iPTR));
+ Params.push_back(wasm::ValType::I64);
+ Params.push_back(wasm::ValType::I64);
+ Params.push_back(wasm::ValType::I64);
+ Params.push_back(wasm::ValType::I64);
+ Params.push_back(wasm::ValType::I64);
+ Params.push_back(wasm::ValType::I64);
break;
case i32_func_i64_i64:
- Rets.push_back(unsigned(WebAssembly::ExprType::I32));
- Params.push_back(unsigned(WebAssembly::ExprType::I64));
- Params.push_back(unsigned(WebAssembly::ExprType::I64));
+ Rets.push_back(wasm::ValType::I32);
+ Params.push_back(wasm::ValType::I64);
+ Params.push_back(wasm::ValType::I64);
break;
case i32_func_i64_i64_i64_i64:
- Rets.push_back(unsigned(WebAssembly::ExprType::I32));
- Params.push_back(unsigned(WebAssembly::ExprType::I64));
- Params.push_back(unsigned(WebAssembly::ExprType::I64));
- Params.push_back(unsigned(WebAssembly::ExprType::I64));
- Params.push_back(unsigned(WebAssembly::ExprType::I64));
+ Rets.push_back(wasm::ValType::I32);
+ Params.push_back(wasm::ValType::I64);
+ Params.push_back(wasm::ValType::I64);
+ Params.push_back(wasm::ValType::I64);
+ Params.push_back(wasm::ValType::I64);
break;
case unsupported:
llvm_unreachable("unsupported runtime library signature");
}
}
-void llvm::GetSignature(const WebAssemblySubtarget &Subtarget,
- const char *Name,
- SmallVectorImpl<unsigned> &Rets,
- SmallVectorImpl<unsigned> &Params)
-{
+void llvm::GetSignature(const WebAssemblySubtarget &Subtarget, const char *Name,
+ SmallVectorImpl<wasm::ValType> &Rets,
+ SmallVectorImpl<wasm::ValType> &Params) {
assert(strcmp(RuntimeLibcallNames[RTLIB::DEOPTIMIZE], "__llvm_deoptimize") ==
0);