diff --git a/src/wasm/baseline/mips/liftoff-assembler-mips.h b/src/wasm/baseline/mips/liftoff-assembler-mips.h index b706fda72a..c12eae4c39 100644 --- a/src/wasm/baseline/mips/liftoff-assembler-mips.h +++ b/src/wasm/baseline/mips/liftoff-assembler-mips.h @@ -2291,6 +2291,11 @@ void LiftoffAssembler::emit_i64x2_neg(LiftoffRegister dst, bailout(kSimd, "emit_i64x2_neg"); } +void LiftoffAssembler::emit_i64x2_bitmask(LiftoffRegister dst, + LiftoffRegister src) { + bailout(kSimd, "emit_i64x2_bitmask"); +} + void LiftoffAssembler::emit_i64x2_shl(LiftoffRegister dst, LiftoffRegister lhs, LiftoffRegister rhs) { bailout(kSimd, "emit_i64x2_shl"); diff --git a/src/wasm/baseline/mips64/liftoff-assembler-mips64.h b/src/wasm/baseline/mips64/liftoff-assembler-mips64.h index 698fc43387..b97b423e20 100644 --- a/src/wasm/baseline/mips64/liftoff-assembler-mips64.h +++ b/src/wasm/baseline/mips64/liftoff-assembler-mips64.h @@ -2276,6 +2276,15 @@ void LiftoffAssembler::emit_i64x2_neg(LiftoffRegister dst, subv_d(dst.fp().toW(), kSimd128RegZero, src.fp().toW()); } +void LiftoffAssembler::emit_i64x2_bitmask(LiftoffRegister dst, + LiftoffRegister src) { + srli_d(kSimd128RegZero, src.fp().toW(), 63); + shf_w(kSimd128ScratchReg, kSimd128RegZero, 0x02); + slli_d(kSimd128ScratchReg, kSimd128ScratchReg, 1); + or_v(kSimd128RegZero, kSimd128RegZero, kSimd128ScratchReg); + copy_u_b(dst.gp(), kSimd128RegZero, 0); +} + void LiftoffAssembler::emit_i64x2_shl(LiftoffRegister dst, LiftoffRegister lhs, LiftoffRegister rhs) { fill_d(kSimd128ScratchReg, rhs.gp());