summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/WebAssembly
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/Target/WebAssembly')
-rw-r--r--llvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyMCTargetDesc.cpp10
-rw-r--r--llvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyMCTargetDesc.h42
-rw-r--r--llvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyTargetStreamer.cpp18
-rw-r--r--llvm/lib/Target/WebAssembly/WebAssemblyMCInstLower.cpp36
-rw-r--r--llvm/lib/Target/WebAssembly/WebAssemblyRuntimeLibcallSignatures.cpp358
-rw-r--r--llvm/lib/Target/WebAssembly/WebAssemblyRuntimeLibcallSignatures.h9
6 files changed, 222 insertions, 251 deletions
diff --git a/llvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyMCTargetDesc.cpp b/llvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyMCTargetDesc.cpp
index 9ccaf433b5d..9fd3ec81c25 100644
--- a/llvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyMCTargetDesc.cpp
+++ b/llvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyMCTargetDesc.cpp
@@ -141,12 +141,12 @@ extern "C" void LLVMInitializeWebAssemblyTargetMC() {
}
}
-WebAssembly::ValType WebAssembly::toValType(const MVT &Ty) {
+wasm::ValType WebAssembly::toValType(const MVT &Ty) {
switch (Ty.SimpleTy) {
- case MVT::i32: return WebAssembly::ValType::I32;
- case MVT::i64: return WebAssembly::ValType::I64;
- case MVT::f32: return WebAssembly::ValType::F32;
- case MVT::f64: return WebAssembly::ValType::F64;
+ case MVT::i32: return wasm::ValType::I32;
+ case MVT::i64: return wasm::ValType::I64;
+ case MVT::f32: return wasm::ValType::F32;
+ case MVT::f64: return wasm::ValType::F64;
default: llvm_unreachable("unexpected type");
}
}
diff --git a/llvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyMCTargetDesc.h b/llvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyMCTargetDesc.h
index 1108f5f5a32..795658ca96b 100644
--- a/llvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyMCTargetDesc.h
+++ b/llvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyMCTargetDesc.h
@@ -17,6 +17,7 @@
#include "llvm/MC/MCInstrDesc.h"
#include "llvm/Support/DataTypes.h"
+#include "llvm/Support/Wasm.h"
namespace llvm {
@@ -149,40 +150,25 @@ static const unsigned StoreP2AlignOperandNo = 0;
/// This is used to indicate block signatures.
enum class ExprType {
- Void = 0x40,
- I32 = 0x7f,
- I64 = 0x7e,
- F32 = 0x7d,
- F64 = 0x7c,
- I8x16 = 0x7b,
- I16x8 = 0x7a,
- I32x4 = 0x79,
- F32x4 = 0x78,
- B8x16 = 0x77,
- B16x8 = 0x76,
- B32x4 = 0x75
-};
-
-/// This is used to indicate local types.
-enum class ValType {
- I32 = 0x7f,
- I64 = 0x7e,
- F32 = 0x7d,
- F64 = 0x7c,
- I8x16 = 0x7b,
- I16x8 = 0x7a,
- I32x4 = 0x79,
- F32x4 = 0x78,
- B8x16 = 0x77,
- B16x8 = 0x76,
- B32x4 = 0x75
+ Void = -0x40,
+ I32 = -0x01,
+ I64 = -0x02,
+ F32 = -0x03,
+ F64 = -0x04,
+ I8x16 = -0x05,
+ I16x8 = -0x06,
+ I32x4 = -0x07,
+ F32x4 = -0x08,
+ B8x16 = -0x09,
+ B16x8 = -0x0a,
+ B32x4 = -0x0b
};
/// Instruction opcodes emitted via means other than CodeGen.
static const unsigned Nop = 0x01;
static const unsigned End = 0x0b;
-ValType toValType(const MVT &Ty);
+wasm::ValType toValType(const MVT &Ty);
} // end namespace WebAssembly
} // end namespace llvm
diff --git a/llvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyTargetStreamer.cpp b/llvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyTargetStreamer.cpp
index 5a285935e2b..a499cc23a6b 100644
--- a/llvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyTargetStreamer.cpp
+++ b/llvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyTargetStreamer.cpp
@@ -152,30 +152,20 @@ void WebAssemblyTargetELFStreamer::emitIndirectFunctionType(
void WebAssemblyTargetELFStreamer::emitGlobalImport(StringRef name) {
}
-static unsigned MVT2WasmType(MVT Ty) {
- switch (Ty.SimpleTy) {
- case MVT::i32: return wasm::WASM_TYPE_I32;
- case MVT::i64: return wasm::WASM_TYPE_I64;
- case MVT::f32: return wasm::WASM_TYPE_F32;
- case MVT::f64: return wasm::WASM_TYPE_F64;
- default: llvm_unreachable("unsupported type");
- }
-}
-
void WebAssemblyTargetWasmStreamer::emitParam(MCSymbol *Symbol,
ArrayRef<MVT> Types) {
- SmallVector<unsigned, 4> Params;
+ SmallVector<wasm::ValType, 4> Params;
for (MVT Ty : Types)
- Params.push_back(MVT2WasmType(Ty));
+ Params.push_back(WebAssembly::toValType(Ty));
cast<MCSymbolWasm>(Symbol)->setParams(std::move(Params));
}
void WebAssemblyTargetWasmStreamer::emitResult(MCSymbol *Symbol,
ArrayRef<MVT> Types) {
- SmallVector<unsigned, 4> Returns;
+ SmallVector<wasm::ValType, 4> Returns;
for (MVT Ty : Types)
- Returns.push_back(MVT2WasmType(Ty));
+ Returns.push_back(WebAssembly::toValType(Ty));
cast<MCSymbolWasm>(Symbol)->setReturns(std::move(Returns));
}
diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyMCInstLower.cpp b/llvm/lib/Target/WebAssembly/WebAssemblyMCInstLower.cpp
index 354662d9d3d..ff186eb9150 100644
--- a/llvm/lib/Target/WebAssembly/WebAssemblyMCInstLower.cpp
+++ b/llvm/lib/Target/WebAssembly/WebAssemblyMCInstLower.cpp
@@ -45,32 +45,32 @@ WebAssemblyMCInstLower::GetGlobalAddressSymbol(const MachineOperand &MO) const {
const TargetMachine &TM = MF.getTarget();
const Function &CurrentFunc = *MF.getFunction();
- SmallVector<unsigned, 4> Returns;
- SmallVector<unsigned, 4> Params;
+ SmallVector<wasm::ValType, 4> Returns;
+ SmallVector<wasm::ValType, 4> Params;
- WebAssembly::ValType iPTR =
+ wasm::ValType iPTR =
MF.getSubtarget<WebAssemblySubtarget>().hasAddr64() ?
- WebAssembly::ValType::I64 :
- WebAssembly::ValType::I32;
+ wasm::ValType::I64 :
+ wasm::ValType::I32;
SmallVector<MVT, 4> ResultMVTs;
ComputeLegalValueVTs(CurrentFunc, TM, FuncTy->getReturnType(), ResultMVTs);
// WebAssembly can't currently handle returning tuples.
if (ResultMVTs.size() <= 1)
for (MVT ResultMVT : ResultMVTs)
- Returns.push_back(unsigned(WebAssembly::toValType(ResultMVT)));
+ Returns.push_back(WebAssembly::toValType(ResultMVT));
else
- Params.push_back(unsigned(iPTR));
+ Params.push_back(iPTR);
for (Type *Ty : FuncTy->params()) {
SmallVector<MVT, 4> ParamMVTs;
ComputeLegalValueVTs(CurrentFunc, TM, Ty, ParamMVTs);
for (MVT ParamMVT : ParamMVTs)
- Params.push_back(unsigned(WebAssembly::toValType(ParamMVT)));
+ Params.push_back(WebAssembly::toValType(ParamMVT));
}
if (FuncTy->isVarArg())
- Params.push_back(unsigned(iPTR));
+ Params.push_back(iPTR);
WasmSym->setReturns(std::move(Returns));
WasmSym->setParams(std::move(Params));
@@ -95,8 +95,8 @@ MCSymbol *WebAssemblyMCInstLower::GetExternalSymbolSymbol(
if (strcmp(Name, "__stack_pointer") == 0)
return WasmSym;
- SmallVector<unsigned, 4> Returns;
- SmallVector<unsigned, 4> Params;
+ SmallVector<wasm::ValType, 4> Returns;
+ SmallVector<wasm::ValType, 4> Params;
GetSignature(Subtarget, Name, Returns, Params);
WasmSym->setReturns(std::move(Returns));
@@ -128,15 +128,15 @@ MCOperand WebAssemblyMCInstLower::LowerSymbolOperand(MCSymbol *Sym,
}
// Return the WebAssembly type associated with the given register class.
-static unsigned getType(const TargetRegisterClass *RC) {
+static wasm::ValType getType(const TargetRegisterClass *RC) {
if (RC == &WebAssembly::I32RegClass)
- return unsigned(WebAssembly::ExprType::I32);
+ return wasm::ValType::I32;
if (RC == &WebAssembly::I64RegClass)
- return unsigned(WebAssembly::ExprType::I64);
+ return wasm::ValType::I64;
if (RC == &WebAssembly::F32RegClass)
- return unsigned(WebAssembly::ExprType::F32);
+ return wasm::ValType::F32;
if (RC == &WebAssembly::F64RegClass)
- return unsigned(WebAssembly::ExprType::F64);
+ return wasm::ValType::F64;
llvm_unreachable("Unexpected register class");
}
@@ -172,8 +172,8 @@ void WebAssemblyMCInstLower::Lower(const MachineInstr *MI,
if (Info.OperandType == WebAssembly::OPERAND_TYPEINDEX) {
MCSymbol *Sym = Printer.createTempSymbol("typeindex");
if (!isa<MCSymbolELF>(Sym)) {
- SmallVector<unsigned, 4> Returns;
- SmallVector<unsigned, 4> Params;
+ SmallVector<wasm::ValType, 4> Returns;
+ SmallVector<wasm::ValType, 4> Params;
const MachineRegisterInfo &MRI =
MI->getParent()->getParent()->getRegInfo();
diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyRuntimeLibcallSignatures.cpp b/llvm/lib/Target/WebAssembly/WebAssemblyRuntimeLibcallSignatures.cpp
index 974aa52ec5d..c02ef4a1c39 100644
--- a/llvm/lib/Target/WebAssembly/WebAssemblyRuntimeLibcallSignatures.cpp
+++ b/llvm/lib/Target/WebAssembly/WebAssemblyRuntimeLibcallSignatures.cpp
@@ -971,10 +971,8 @@ RuntimeLibcallNames[RTLIB::UNKNOWN_LIBCALL] = {
};
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());
@@ -986,315 +984,313 @@ void llvm::GetSignature(const WebAssemblySubtarget &Subtarget,
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);
diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyRuntimeLibcallSignatures.h b/llvm/lib/Target/WebAssembly/WebAssemblyRuntimeLibcallSignatures.h
index 690ca86a8df..12906760478 100644
--- a/llvm/lib/Target/WebAssembly/WebAssemblyRuntimeLibcallSignatures.h
+++ b/llvm/lib/Target/WebAssembly/WebAssemblyRuntimeLibcallSignatures.h
@@ -25,13 +25,12 @@ class WebAssemblySubtarget;
extern void GetSignature(const WebAssemblySubtarget &Subtarget,
RTLIB::Libcall LC,
- SmallVectorImpl<unsigned> &Rets,
- SmallVectorImpl<unsigned> &Params);
+ SmallVectorImpl<wasm::ValType> &Rets,
+ SmallVectorImpl<wasm::ValType> &Params);
extern void GetSignature(const WebAssemblySubtarget &Subtarget,
- const char *Name,
- SmallVectorImpl<unsigned> &Rets,
- SmallVectorImpl<unsigned> &Params);
+ const char *Name, SmallVectorImpl<wasm::ValType> &Rets,
+ SmallVectorImpl<wasm::ValType> &Params);
} // end namespace llvm
OpenPOWER on IntegriCloud