Fix i64 sign extension for i32

This commit is contained in:
Rerumu
2022-06-29 23:53:02 -04:00
parent 76cb3b36be
commit 6e0debe287
3 changed files with 44 additions and 27 deletions
+19 -16
View File
@@ -151,12 +151,13 @@ pub enum UnOpType {
Trunc_U32_F32,
Trunc_I32_F64,
Trunc_U32_F64,
Extend_I32_I8,
Extend_I32_I16,
Extend_I64_I8,
Extend_I64_I16,
Extend_I32_N8,
Extend_I32_N16,
Extend_I64_N8,
Extend_I64_N16,
Extend_I64_N32,
Extend_I64_I32,
Extend_U64_I32,
Extend_I64_U32,
Trunc_I64_F32,
Trunc_U64_F32,
Trunc_I64_F64,
@@ -206,12 +207,13 @@ impl UnOpType {
Self::Trunc_U32_F32 => ("trunc", "u32_f32"),
Self::Trunc_I32_F64 => ("trunc", "i32_f64"),
Self::Trunc_U32_F64 => ("trunc", "u32_f64"),
Self::Extend_I32_I8 => ("extend", "i32_i8"),
Self::Extend_I32_I16 => ("extend", "i32_i16"),
Self::Extend_I64_I8 => ("extend", "i64_i8"),
Self::Extend_I64_I16 => ("extend", "i64_i16"),
Self::Extend_I32_N8 => ("extend", "i32_n8"),
Self::Extend_I32_N16 => ("extend", "i32_n16"),
Self::Extend_I64_N8 => ("extend", "i64_n8"),
Self::Extend_I64_N16 => ("extend", "i64_n16"),
Self::Extend_I64_N32 => ("extend", "i64_n32"),
Self::Extend_I64_I32 => ("extend", "i64_i32"),
Self::Extend_U64_I32 => ("extend", "u64_i32"),
Self::Extend_I64_U32 => ("extend", "i64_u32"),
Self::Trunc_I64_F32 => ("trunc", "i64_f32"),
Self::Trunc_U64_F32 => ("trunc", "u64_f32"),
Self::Trunc_I64_F64 => ("trunc", "i64_f64"),
@@ -264,12 +266,13 @@ impl TryFrom<&Operator<'_>> for UnOpType {
Operator::I32TruncF32U => Self::Trunc_U32_F32,
Operator::I32TruncF64S => Self::Trunc_I32_F64,
Operator::I32TruncF64U => Self::Trunc_U32_F64,
Operator::I32Extend8S => Self::Extend_I32_I8,
Operator::I32Extend16S => Self::Extend_I32_I16,
Operator::I64Extend8S => Self::Extend_I64_I8,
Operator::I64Extend16S => Self::Extend_I64_I16,
Operator::I64Extend32S | Operator::I64ExtendI32S => Self::Extend_I64_I32,
Operator::I64ExtendI32U => Self::Extend_U64_I32,
Operator::I32Extend8S => Self::Extend_I32_N8,
Operator::I32Extend16S => Self::Extend_I32_N16,
Operator::I64Extend8S => Self::Extend_I64_N8,
Operator::I64Extend16S => Self::Extend_I64_N16,
Operator::I64Extend32S => Self::Extend_I64_N32,
Operator::I64ExtendI32S => Self::Extend_I64_I32,
Operator::I64ExtendI32U => Self::Extend_I64_U32,
Operator::I64TruncF32S => Self::Trunc_I64_F32,
Operator::I64TruncF32U => Self::Trunc_U64_F32,
Operator::I64TruncF64S => Self::Trunc_I64_F64,