[wasm-simd][liftoff][ia32][x64] Implement i64x2.bitmask
Bug: v8:10997 Change-Id: Ic7a3848792867ef3068151eff8dbf45e628ce6c2 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2620901 Reviewed-by: Clemens Backes <clemensb@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#72022}
This commit is contained in:
parent
d5ba8283a2
commit
d6c4c884fc
@ -2888,6 +2888,11 @@ void LiftoffAssembler::emit_i64x2_extmul_high_i32x4_u(LiftoffRegister dst,
|
||||
src2.high_fp());
|
||||
}
|
||||
|
||||
void LiftoffAssembler::emit_i64x2_bitmask(LiftoffRegister dst,
|
||||
LiftoffRegister src) {
|
||||
bailout(kSimd, "i64x2_bitmask");
|
||||
}
|
||||
|
||||
void LiftoffAssembler::emit_i32x4_splat(LiftoffRegister dst,
|
||||
LiftoffRegister src) {
|
||||
vdup(Neon32, liftoff::GetSimd128Register(dst), src.gp());
|
||||
|
@ -2012,6 +2012,11 @@ void LiftoffAssembler::emit_i64x2_extmul_high_i32x4_u(LiftoffRegister dst,
|
||||
Umull2(dst.fp().V2D(), src1.fp().V4S(), src2.fp().V4S());
|
||||
}
|
||||
|
||||
void LiftoffAssembler::emit_i64x2_bitmask(LiftoffRegister dst,
|
||||
LiftoffRegister src) {
|
||||
bailout(kSimd, "i64x2_bitmask");
|
||||
}
|
||||
|
||||
void LiftoffAssembler::emit_i32x4_splat(LiftoffRegister dst,
|
||||
LiftoffRegister src) {
|
||||
Dup(dst.fp().V4S(), src.gp().W());
|
||||
|
@ -3898,6 +3898,11 @@ void LiftoffAssembler::emit_i64x2_extmul_high_i32x4_u(LiftoffRegister dst,
|
||||
/*low=*/false, /*is_signed=*/false);
|
||||
}
|
||||
|
||||
void LiftoffAssembler::emit_i64x2_bitmask(LiftoffRegister dst,
|
||||
LiftoffRegister src) {
|
||||
Movmskpd(dst.gp(), src.fp());
|
||||
}
|
||||
|
||||
void LiftoffAssembler::emit_f32x4_abs(LiftoffRegister dst,
|
||||
LiftoffRegister src) {
|
||||
if (dst.fp() == src.fp()) {
|
||||
|
@ -1111,6 +1111,7 @@ class LiftoffAssembler : public TurboAssembler {
|
||||
inline void emit_i64x2_extmul_high_i32x4_u(LiftoffRegister dst,
|
||||
LiftoffRegister src1,
|
||||
LiftoffRegister src2);
|
||||
inline void emit_i64x2_bitmask(LiftoffRegister dst, LiftoffRegister src);
|
||||
inline void emit_f32x4_abs(LiftoffRegister dst, LiftoffRegister src);
|
||||
inline void emit_f32x4_neg(LiftoffRegister dst, LiftoffRegister src);
|
||||
inline void emit_f32x4_sqrt(LiftoffRegister dst, LiftoffRegister src);
|
||||
|
@ -3010,6 +3010,8 @@ class LiftoffCompiler {
|
||||
case wasm::kExprI64x2ExtMulHighI32x4U:
|
||||
return EmitBinOp<kS128, kS128>(
|
||||
&LiftoffAssembler::emit_i64x2_extmul_high_i32x4_u);
|
||||
case wasm::kExprI64x2BitMask:
|
||||
return EmitUnOp<kS128, kI32>(&LiftoffAssembler::emit_i64x2_bitmask);
|
||||
case wasm::kExprF32x4Abs:
|
||||
return EmitUnOp<kS128, kS128>(&LiftoffAssembler::emit_f32x4_abs);
|
||||
case wasm::kExprF32x4Neg:
|
||||
|
@ -3490,6 +3490,11 @@ void LiftoffAssembler::emit_i64x2_extmul_high_i32x4_u(LiftoffRegister dst,
|
||||
/*is_signed=*/false);
|
||||
}
|
||||
|
||||
void LiftoffAssembler::emit_i64x2_bitmask(LiftoffRegister dst,
|
||||
LiftoffRegister src) {
|
||||
Movmskpd(dst.gp(), src.fp());
|
||||
}
|
||||
|
||||
void LiftoffAssembler::emit_f32x4_abs(LiftoffRegister dst,
|
||||
LiftoffRegister src) {
|
||||
if (dst.fp() == src.fp()) {
|
||||
|
Loading…
Reference in New Issue
Block a user