diff --git a/cranelift/wasm/src/code_translator.rs b/cranelift/wasm/src/code_translator.rs index 7344f0c0b5..023961035b 100644 --- a/cranelift/wasm/src/code_translator.rs +++ b/cranelift/wasm/src/code_translator.rs @@ -1386,6 +1386,10 @@ pub fn translate_operator( let a = pop1_with_bitcast(state, type_of(op), builder); state.push1(builder.ins().ineg(a)) } + Operator::I8x16Abs | Operator::I16x8Abs | Operator::I32x4Abs => { + let a = pop1_with_bitcast(state, type_of(op), builder); + state.push1(builder.ins().iabs(a)) + } Operator::I16x8Mul | Operator::I32x4Mul | Operator::I64x2Mul => { let (a, b) = pop2_with_bitcast(state, type_of(op), builder); state.push1(builder.ins().imul(a, b)) @@ -1556,9 +1560,6 @@ pub fn translate_operator( state.push1(builder.ins().fcvt_to_sint_sat(I32X4, a)) } Operator::I32x4TruncSatF32x4U - | Operator::I8x16Abs - | Operator::I16x8Abs - | Operator::I32x4Abs | Operator::I8x16NarrowI16x8S { .. } | Operator::I8x16NarrowI16x8U { .. } | Operator::I16x8NarrowI32x4S { .. } @@ -1990,6 +1991,7 @@ fn type_of(operator: &Operator) -> Type { | Operator::I8x16GeS | Operator::I8x16GeU | Operator::I8x16Neg + | Operator::I8x16Abs | Operator::I8x16AnyTrue | Operator::I8x16AllTrue | Operator::I8x16Shl @@ -2024,6 +2026,7 @@ fn type_of(operator: &Operator) -> Type { | Operator::I16x8GeS | Operator::I16x8GeU | Operator::I16x8Neg + | Operator::I16x8Abs | Operator::I16x8AnyTrue | Operator::I16x8AllTrue | Operator::I16x8Shl @@ -2058,6 +2061,7 @@ fn type_of(operator: &Operator) -> Type { | Operator::I32x4GeS | Operator::I32x4GeU | Operator::I32x4Neg + | Operator::I32x4Abs | Operator::I32x4AnyTrue | Operator::I32x4AllTrue | Operator::I32x4Shl