Translate Wasm SIMD abs to Cranelift's iabs instruction
This commit is contained in:
@@ -1386,6 +1386,10 @@ pub fn translate_operator<FE: FuncEnvironment + ?Sized>(
|
||||
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<FE: FuncEnvironment + ?Sized>(
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user