Add V128 -> I8X16 type conversions

This commit is contained in:
Andrew Brown
2019-09-06 10:54:41 -07:00
parent 13ac951004
commit ddd1680e76

View File

@@ -122,6 +122,7 @@ pub fn type_to_type(ty: wasmparser::Type) -> WasmResult<ir::Type> {
wasmparser::Type::I64 => Ok(ir::types::I64), wasmparser::Type::I64 => Ok(ir::types::I64),
wasmparser::Type::F32 => Ok(ir::types::F32), wasmparser::Type::F32 => Ok(ir::types::F32),
wasmparser::Type::F64 => Ok(ir::types::F64), wasmparser::Type::F64 => Ok(ir::types::F64),
wasmparser::Type::V128 => Ok(ir::types::I8X16),
ty => wasm_unsupported!("type_to_type: wasm type {:?}", ty), ty => wasm_unsupported!("type_to_type: wasm type {:?}", ty),
} }
} }
@@ -134,6 +135,7 @@ pub fn tabletype_to_type(ty: wasmparser::Type) -> WasmResult<Option<ir::Type>> {
wasmparser::Type::I64 => Ok(Some(ir::types::I64)), wasmparser::Type::I64 => Ok(Some(ir::types::I64)),
wasmparser::Type::F32 => Ok(Some(ir::types::F32)), wasmparser::Type::F32 => Ok(Some(ir::types::F32)),
wasmparser::Type::F64 => Ok(Some(ir::types::F64)), wasmparser::Type::F64 => Ok(Some(ir::types::F64)),
wasmparser::Type::V128 => Ok(Some(ir::types::I8X16)),
wasmparser::Type::AnyFunc => Ok(None), wasmparser::Type::AnyFunc => Ok(None),
ty => wasm_unsupported!("tabletype_to_type: table wasm type {:?}", ty), 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<Opt
wasmparser::Type::I64 => Ok(Some(ir::types::I64)), wasmparser::Type::I64 => Ok(Some(ir::types::I64)),
wasmparser::Type::F32 => Ok(Some(ir::types::F32)), wasmparser::Type::F32 => Ok(Some(ir::types::F32)),
wasmparser::Type::F64 => Ok(Some(ir::types::F64)), wasmparser::Type::F64 => Ok(Some(ir::types::F64)),
wasmparser::Type::V128 => Ok(Some(ir::types::I8X16)),
wasmparser::Type::EmptyBlockType => Ok(None), wasmparser::Type::EmptyBlockType => Ok(None),
ty => wasm_unsupported!("blocktype_to_type: type {:?}", ty), ty => wasm_unsupported!("blocktype_to_type: type {:?}", ty),
}, },
@@ -175,7 +178,8 @@ pub fn num_return_values(ty: wasmparser::TypeOrFuncType) -> WasmResult<usize> {
wasmparser::Type::I32 wasmparser::Type::I32
| wasmparser::Type::F32 | wasmparser::Type::F32
| wasmparser::Type::I64 | wasmparser::Type::I64
| wasmparser::Type::F64 => Ok(1), | wasmparser::Type::F64
| wasmparser::Type::V128 => Ok(1),
ty => wasm_unsupported!("unsupported return value type {:?}", ty), ty => wasm_unsupported!("unsupported return value type {:?}", ty),
}, },
wasmparser::TypeOrFuncType::FuncType(_) => { wasmparser::TypeOrFuncType::FuncType(_) => {