Commit b972069f authored by Zhao Jiazhong's avatar Zhao Jiazhong Committed by Commit Bot

[mips][wasm-simd][liftoff] Implement all_true

Port b3799538
https://crrev.com/c/2220446

Change-Id: I5de86c0aaf0f9262fd9cd63078c75c0013f5c962
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2223886Reviewed-by: 's avatarClemens Backes <clemensb@chromium.org>
Commit-Queue: Zhao Jiazhong <zhaojiazhong-hf@loongson.cn>
Cr-Commit-Position: refs/heads/master@{#68088}
parent b4226ceb
......@@ -1782,6 +1782,11 @@ void LiftoffAssembler::emit_v8x16_anytrue(LiftoffRegister dst,
bailout(kSimd, "emit_v8x16_anytrue");
}
void LiftoffAssembler::emit_v8x16_alltrue(LiftoffRegister dst,
LiftoffRegister src) {
bailout(kSimd, "emit_v8x16_alltrue");
}
void LiftoffAssembler::emit_i8x16_shl(LiftoffRegister dst, LiftoffRegister lhs,
LiftoffRegister rhs) {
bailout(kSimd, "emit_i8x16_shl");
......@@ -1887,6 +1892,11 @@ void LiftoffAssembler::emit_v16x8_anytrue(LiftoffRegister dst,
bailout(kSimd, "emit_v16x8_anytrue");
}
void LiftoffAssembler::emit_v16x8_alltrue(LiftoffRegister dst,
LiftoffRegister src) {
bailout(kSimd, "emit_v16x8_alltrue");
}
void LiftoffAssembler::emit_i16x8_shl(LiftoffRegister dst, LiftoffRegister lhs,
LiftoffRegister rhs) {
bailout(kSimd, "emit_i16x8_shl");
......@@ -1992,6 +2002,11 @@ void LiftoffAssembler::emit_v32x4_anytrue(LiftoffRegister dst,
bailout(kSimd, "emit_v32x4_anytrue");
}
void LiftoffAssembler::emit_v32x4_alltrue(LiftoffRegister dst,
LiftoffRegister src) {
bailout(kSimd, "emit_v32x4_alltrue");
}
void LiftoffAssembler::emit_i32x4_shl(LiftoffRegister dst, LiftoffRegister lhs,
LiftoffRegister rhs) {
bailout(kSimd, "emit_i32x4_shl");
......
......@@ -1331,6 +1331,16 @@ inline void EmitAnyTrue(LiftoffAssembler* assm, LiftoffRegister dst,
assm->bind(&all_false);
}
inline void EmitAllTrue(LiftoffAssembler* assm, LiftoffRegister dst,
LiftoffRegister src, MSABranchDF msa_branch_df) {
Label all_true;
assm->BranchMSA(&all_true, msa_branch_df, all_not_zero, src.fp().toW(),
USE_DELAY_SLOT);
assm->li(dst.gp(), 1);
assm->li(dst.gp(), 0l);
assm->bind(&all_true);
}
} // namespace liftoff
void LiftoffAssembler::emit_f32_set_cond(Condition cond, Register dst,
......@@ -1680,6 +1690,11 @@ void LiftoffAssembler::emit_v8x16_anytrue(LiftoffRegister dst,
liftoff::EmitAnyTrue(this, dst, src);
}
void LiftoffAssembler::emit_v8x16_alltrue(LiftoffRegister dst,
LiftoffRegister src) {
liftoff::EmitAllTrue(this, dst, src, MSA_BRANCH_B);
}
void LiftoffAssembler::emit_i8x16_shl(LiftoffRegister dst, LiftoffRegister lhs,
LiftoffRegister rhs) {
fill_b(kSimd128ScratchReg, rhs.gp());
......@@ -1789,6 +1804,11 @@ void LiftoffAssembler::emit_v16x8_anytrue(LiftoffRegister dst,
liftoff::EmitAnyTrue(this, dst, src);
}
void LiftoffAssembler::emit_v16x8_alltrue(LiftoffRegister dst,
LiftoffRegister src) {
liftoff::EmitAllTrue(this, dst, src, MSA_BRANCH_H);
}
void LiftoffAssembler::emit_i16x8_shl(LiftoffRegister dst, LiftoffRegister lhs,
LiftoffRegister rhs) {
fill_h(kSimd128ScratchReg, rhs.gp());
......@@ -1898,6 +1918,11 @@ void LiftoffAssembler::emit_v32x4_anytrue(LiftoffRegister dst,
liftoff::EmitAnyTrue(this, dst, src);
}
void LiftoffAssembler::emit_v32x4_alltrue(LiftoffRegister dst,
LiftoffRegister src) {
liftoff::EmitAllTrue(this, dst, src, MSA_BRANCH_W);
}
void LiftoffAssembler::emit_i32x4_shl(LiftoffRegister dst, LiftoffRegister lhs,
LiftoffRegister rhs) {
fill_w(kSimd128ScratchReg, rhs.gp());
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment