Add f32 and f64 distinction
This commit is contained in:
+120
-60
@@ -132,13 +132,20 @@ pub enum UnOpType {
|
||||
Clz_I64,
|
||||
Ctz_I64,
|
||||
Popcnt_I64,
|
||||
Abs_FN,
|
||||
Neg_FN,
|
||||
Ceil_FN,
|
||||
Floor_FN,
|
||||
Trunc_FN,
|
||||
Nearest_FN,
|
||||
Sqrt_FN,
|
||||
Abs_F32,
|
||||
Neg_F32,
|
||||
Ceil_F32,
|
||||
Floor_F32,
|
||||
Trunc_F32,
|
||||
Nearest_F32,
|
||||
Sqrt_F32,
|
||||
Abs_F64,
|
||||
Neg_F64,
|
||||
Ceil_F64,
|
||||
Floor_F64,
|
||||
Trunc_F64,
|
||||
Nearest_F64,
|
||||
Sqrt_F64,
|
||||
Wrap_I32_I64,
|
||||
Trunc_I32_F32,
|
||||
Trunc_U32_F32,
|
||||
@@ -180,13 +187,20 @@ impl UnOpType {
|
||||
Self::Clz_I64 => ("clz", "i64"),
|
||||
Self::Ctz_I64 => ("ctz", "i64"),
|
||||
Self::Popcnt_I64 => ("popcnt", "i64"),
|
||||
Self::Abs_FN => ("abs", "num"),
|
||||
Self::Neg_FN => ("neg", "num"),
|
||||
Self::Ceil_FN => ("ceil", "num"),
|
||||
Self::Floor_FN => ("floor", "num"),
|
||||
Self::Trunc_FN => ("trunc", "num"),
|
||||
Self::Nearest_FN => ("nearest", "num"),
|
||||
Self::Sqrt_FN => ("sqrt", "num"),
|
||||
Self::Abs_F32 => ("abs", "f32"),
|
||||
Self::Neg_F32 => ("neg", "f32"),
|
||||
Self::Ceil_F32 => ("ceil", "f32"),
|
||||
Self::Floor_F32 => ("floor", "f32"),
|
||||
Self::Trunc_F32 => ("trunc", "f32"),
|
||||
Self::Nearest_F32 => ("nearest", "f32"),
|
||||
Self::Sqrt_F32 => ("sqrt", "f32"),
|
||||
Self::Abs_F64 => ("abs", "f64"),
|
||||
Self::Neg_F64 => ("neg", "f64"),
|
||||
Self::Ceil_F64 => ("ceil", "f64"),
|
||||
Self::Floor_F64 => ("floor", "f64"),
|
||||
Self::Trunc_F64 => ("trunc", "f64"),
|
||||
Self::Nearest_F64 => ("nearest", "f64"),
|
||||
Self::Sqrt_F64 => ("sqrt", "f64"),
|
||||
Self::Wrap_I32_I64 => ("wrap", "i32_i64"),
|
||||
Self::Trunc_I32_F32 => ("trunc", "i32_f32"),
|
||||
Self::Trunc_U32_F32 => ("trunc", "u32_f32"),
|
||||
@@ -231,13 +245,20 @@ impl TryFrom<&Operator<'_>> for UnOpType {
|
||||
Operator::I64Clz => Self::Clz_I64,
|
||||
Operator::I64Ctz => Self::Ctz_I64,
|
||||
Operator::I64Popcnt => Self::Popcnt_I64,
|
||||
Operator::F32Abs | Operator::F64Abs => Self::Abs_FN,
|
||||
Operator::F32Neg | Operator::F64Neg => Self::Neg_FN,
|
||||
Operator::F32Ceil | Operator::F64Ceil => Self::Ceil_FN,
|
||||
Operator::F32Floor | Operator::F64Floor => Self::Floor_FN,
|
||||
Operator::F32Trunc | Operator::F64Trunc => Self::Trunc_FN,
|
||||
Operator::F32Nearest | Operator::F64Nearest => Self::Nearest_FN,
|
||||
Operator::F32Sqrt | Operator::F64Sqrt => Self::Sqrt_FN,
|
||||
Operator::F32Abs => Self::Abs_F32,
|
||||
Operator::F32Neg => Self::Neg_F32,
|
||||
Operator::F32Ceil => Self::Ceil_F32,
|
||||
Operator::F32Floor => Self::Floor_F32,
|
||||
Operator::F32Trunc => Self::Trunc_F32,
|
||||
Operator::F32Nearest => Self::Nearest_F32,
|
||||
Operator::F32Sqrt => Self::Sqrt_F32,
|
||||
Operator::F64Abs => Self::Abs_F64,
|
||||
Operator::F64Neg => Self::Neg_F64,
|
||||
Operator::F64Ceil => Self::Ceil_F64,
|
||||
Operator::F64Floor => Self::Floor_F64,
|
||||
Operator::F64Trunc => Self::Trunc_F64,
|
||||
Operator::F64Nearest => Self::Nearest_F64,
|
||||
Operator::F64Sqrt => Self::Sqrt_F64,
|
||||
Operator::I32WrapI64 => Self::Wrap_I32_I64,
|
||||
Operator::I32TruncF32S => Self::Trunc_I32_F32,
|
||||
Operator::I32TruncF32U => Self::Trunc_U32_F32,
|
||||
@@ -307,13 +328,20 @@ pub enum BinOpType {
|
||||
ShrU_I64,
|
||||
Rotl_I64,
|
||||
Rotr_I64,
|
||||
Add_FN,
|
||||
Sub_FN,
|
||||
Mul_FN,
|
||||
Div_FN,
|
||||
Min_FN,
|
||||
Max_FN,
|
||||
Copysign_FN,
|
||||
Add_F32,
|
||||
Sub_F32,
|
||||
Mul_F32,
|
||||
Div_F32,
|
||||
Min_F32,
|
||||
Max_F32,
|
||||
Copysign_F32,
|
||||
Add_F64,
|
||||
Sub_F64,
|
||||
Mul_F64,
|
||||
Div_F64,
|
||||
Min_F64,
|
||||
Max_F64,
|
||||
Copysign_F64,
|
||||
}
|
||||
|
||||
impl BinOpType {
|
||||
@@ -350,13 +378,20 @@ impl BinOpType {
|
||||
Self::ShrU_I64 => ("shr", "u64"),
|
||||
Self::Rotl_I64 => ("rotl", "i64"),
|
||||
Self::Rotr_I64 => ("rotr", "i64"),
|
||||
Self::Add_FN => ("add", "num"),
|
||||
Self::Sub_FN => ("sub", "num"),
|
||||
Self::Mul_FN => ("mul", "num"),
|
||||
Self::Div_FN => ("div", "num"),
|
||||
Self::Min_FN => ("min", "num"),
|
||||
Self::Max_FN => ("max", "num"),
|
||||
Self::Copysign_FN => ("copysign", "num"),
|
||||
Self::Add_F32 => ("add", "f32"),
|
||||
Self::Sub_F32 => ("sub", "f32"),
|
||||
Self::Mul_F32 => ("mul", "f32"),
|
||||
Self::Div_F32 => ("div", "f32"),
|
||||
Self::Min_F32 => ("min", "f32"),
|
||||
Self::Max_F32 => ("max", "f32"),
|
||||
Self::Copysign_F32 => ("copysign", "f32"),
|
||||
Self::Add_F64 => ("add", "f64"),
|
||||
Self::Sub_F64 => ("sub", "f64"),
|
||||
Self::Mul_F64 => ("mul", "f64"),
|
||||
Self::Div_F64 => ("div", "f64"),
|
||||
Self::Min_F64 => ("min", "f64"),
|
||||
Self::Max_F64 => ("max", "f64"),
|
||||
Self::Copysign_F64 => ("copysign", "f64"),
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -396,13 +431,20 @@ impl TryFrom<&Operator<'_>> for BinOpType {
|
||||
Operator::I64ShrU => Self::ShrU_I64,
|
||||
Operator::I64Rotl => Self::Rotl_I64,
|
||||
Operator::I64Rotr => Self::Rotr_I64,
|
||||
Operator::F32Add | Operator::F64Add => Self::Add_FN,
|
||||
Operator::F32Sub | Operator::F64Sub => Self::Sub_FN,
|
||||
Operator::F32Mul | Operator::F64Mul => Self::Mul_FN,
|
||||
Operator::F32Div | Operator::F64Div => Self::Div_FN,
|
||||
Operator::F32Min | Operator::F64Min => Self::Min_FN,
|
||||
Operator::F32Max | Operator::F64Max => Self::Max_FN,
|
||||
Operator::F32Copysign | Operator::F64Copysign => Self::Copysign_FN,
|
||||
Operator::F32Add => Self::Add_F32,
|
||||
Operator::F32Sub => Self::Sub_F32,
|
||||
Operator::F32Mul => Self::Mul_F32,
|
||||
Operator::F32Div => Self::Div_F32,
|
||||
Operator::F32Min => Self::Min_F32,
|
||||
Operator::F32Max => Self::Max_F32,
|
||||
Operator::F32Copysign => Self::Copysign_F32,
|
||||
Operator::F64Add => Self::Add_F64,
|
||||
Operator::F64Sub => Self::Sub_F64,
|
||||
Operator::F64Mul => Self::Mul_F64,
|
||||
Operator::F64Div => Self::Div_F64,
|
||||
Operator::F64Min => Self::Min_F64,
|
||||
Operator::F64Max => Self::Max_F64,
|
||||
Operator::F64Copysign => Self::Copysign_F64,
|
||||
_ => {
|
||||
return Err(());
|
||||
}
|
||||
@@ -435,12 +477,18 @@ pub enum CmpOpType {
|
||||
LeU_I64,
|
||||
GeS_I64,
|
||||
GeU_I64,
|
||||
Eq_FN,
|
||||
Ne_FN,
|
||||
Lt_FN,
|
||||
Gt_FN,
|
||||
Le_FN,
|
||||
Ge_FN,
|
||||
Eq_F32,
|
||||
Ne_F32,
|
||||
Lt_F32,
|
||||
Gt_F32,
|
||||
Le_F32,
|
||||
Ge_F32,
|
||||
Eq_F64,
|
||||
Ne_F64,
|
||||
Lt_F64,
|
||||
Gt_F64,
|
||||
Le_F64,
|
||||
Ge_F64,
|
||||
}
|
||||
|
||||
impl CmpOpType {
|
||||
@@ -467,12 +515,18 @@ impl CmpOpType {
|
||||
Self::LeU_I64 => ("le", "u64"),
|
||||
Self::GeS_I64 => ("ge", "i64"),
|
||||
Self::GeU_I64 => ("ge", "u64"),
|
||||
Self::Eq_FN => ("eq", "num"),
|
||||
Self::Ne_FN => ("ne", "num"),
|
||||
Self::Lt_FN => ("lt", "num"),
|
||||
Self::Gt_FN => ("gt", "num"),
|
||||
Self::Le_FN => ("le", "num"),
|
||||
Self::Ge_FN => ("ge", "num"),
|
||||
Self::Eq_F32 => ("eq", "f32"),
|
||||
Self::Ne_F32 => ("ne", "f32"),
|
||||
Self::Lt_F32 => ("lt", "f32"),
|
||||
Self::Gt_F32 => ("gt", "f32"),
|
||||
Self::Le_F32 => ("le", "f32"),
|
||||
Self::Ge_F32 => ("ge", "f32"),
|
||||
Self::Eq_F64 => ("eq", "f64"),
|
||||
Self::Ne_F64 => ("ne", "f64"),
|
||||
Self::Lt_F64 => ("lt", "f64"),
|
||||
Self::Gt_F64 => ("gt", "f64"),
|
||||
Self::Le_F64 => ("le", "f64"),
|
||||
Self::Ge_F64 => ("ge", "f64"),
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -502,12 +556,18 @@ impl TryFrom<&Operator<'_>> for CmpOpType {
|
||||
Operator::I64LeU => Self::LeU_I64,
|
||||
Operator::I64GeS => Self::GeS_I64,
|
||||
Operator::I64GeU => Self::GeU_I64,
|
||||
Operator::F32Eq | Operator::F64Eq => Self::Eq_FN,
|
||||
Operator::F32Ne | Operator::F64Ne => Self::Ne_FN,
|
||||
Operator::F32Lt | Operator::F64Lt => Self::Lt_FN,
|
||||
Operator::F32Gt | Operator::F64Gt => Self::Gt_FN,
|
||||
Operator::F32Le | Operator::F64Le => Self::Le_FN,
|
||||
Operator::F32Ge | Operator::F64Ge => Self::Ge_FN,
|
||||
Operator::F32Eq => Self::Eq_F32,
|
||||
Operator::F32Ne => Self::Ne_F32,
|
||||
Operator::F32Lt => Self::Lt_F32,
|
||||
Operator::F32Gt => Self::Gt_F32,
|
||||
Operator::F32Le => Self::Le_F32,
|
||||
Operator::F32Ge => Self::Ge_F32,
|
||||
Operator::F64Eq => Self::Eq_F64,
|
||||
Operator::F64Ne => Self::Ne_F64,
|
||||
Operator::F64Lt => Self::Lt_F64,
|
||||
Operator::F64Gt => Self::Gt_F64,
|
||||
Operator::F64Le => Self::Le_F64,
|
||||
Operator::F64Ge => Self::Ge_F64,
|
||||
_ => {
|
||||
return Err(());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user