diff --git a/cranelift/wasm/src/translation_utils.rs b/cranelift/wasm/src/translation_utils.rs index 726d6f7c63..7dd774a626 100644 --- a/cranelift/wasm/src/translation_utils.rs +++ b/cranelift/wasm/src/translation_utils.rs @@ -122,6 +122,7 @@ pub fn type_to_type(ty: wasmparser::Type) -> WasmResult { wasmparser::Type::I64 => Ok(ir::types::I64), wasmparser::Type::F32 => Ok(ir::types::F32), wasmparser::Type::F64 => Ok(ir::types::F64), + wasmparser::Type::V128 => Ok(ir::types::I8X16), ty => wasm_unsupported!("type_to_type: wasm type {:?}", ty), } } @@ -134,6 +135,7 @@ pub fn tabletype_to_type(ty: wasmparser::Type) -> WasmResult> { wasmparser::Type::I64 => Ok(Some(ir::types::I64)), wasmparser::Type::F32 => Ok(Some(ir::types::F32)), wasmparser::Type::F64 => Ok(Some(ir::types::F64)), + wasmparser::Type::V128 => Ok(Some(ir::types::I8X16)), wasmparser::Type::AnyFunc => Ok(None), ty => wasm_unsupported!("tabletype_to_type: table wasm type {:?}", ty), } @@ -147,6 +149,7 @@ pub fn blocktype_to_type(ty_or_ft: wasmparser::TypeOrFuncType) -> WasmResult Ok(Some(ir::types::I64)), wasmparser::Type::F32 => Ok(Some(ir::types::F32)), wasmparser::Type::F64 => Ok(Some(ir::types::F64)), + wasmparser::Type::V128 => Ok(Some(ir::types::I8X16)), wasmparser::Type::EmptyBlockType => Ok(None), ty => wasm_unsupported!("blocktype_to_type: type {:?}", ty), }, @@ -175,7 +178,8 @@ pub fn num_return_values(ty: wasmparser::TypeOrFuncType) -> WasmResult { wasmparser::Type::I32 | wasmparser::Type::F32 | wasmparser::Type::I64 - | wasmparser::Type::F64 => Ok(1), + | wasmparser::Type::F64 + | wasmparser::Type::V128 => Ok(1), ty => wasm_unsupported!("unsupported return value type {:?}", ty), }, wasmparser::TypeOrFuncType::FuncType(_) => {