[wasm-simd][arm][arm64[liftoff] Implement i8x16.popcnt
Bug: v8:11002
Change-Id: I914a7c24828bc53300dc905388741e6939686540
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2676922
Reviewed-by: Clemens Backes <clemensb@chromium.org>
Commit-Queue: Zhi An Ng <zhin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#72634}
diff --git a/src/wasm/baseline/arm/liftoff-assembler-arm.h b/src/wasm/baseline/arm/liftoff-assembler-arm.h
index bb47beb..bedaff1 100644
--- a/src/wasm/baseline/arm/liftoff-assembler-arm.h
+++ b/src/wasm/baseline/arm/liftoff-assembler-arm.h
@@ -3404,7 +3404,7 @@
void LiftoffAssembler::emit_i8x16_popcnt(LiftoffRegister dst,
LiftoffRegister src) {
- bailout(kSimd, "i8x16.popcnt");
+ vcnt(liftoff::GetSimd128Register(dst), liftoff::GetSimd128Register(src));
}
void LiftoffAssembler::emit_i8x16_splat(LiftoffRegister dst,
diff --git a/src/wasm/baseline/arm64/liftoff-assembler-arm64.h b/src/wasm/baseline/arm64/liftoff-assembler-arm64.h
index 2a0977d..760c832 100644
--- a/src/wasm/baseline/arm64/liftoff-assembler-arm64.h
+++ b/src/wasm/baseline/arm64/liftoff-assembler-arm64.h
@@ -2454,7 +2454,7 @@
void LiftoffAssembler::emit_i8x16_popcnt(LiftoffRegister dst,
LiftoffRegister src) {
- bailout(kSimd, "i8x16.popcnt");
+ Cnt(dst.fp().V16B(), src.fp().V16B());
}
void LiftoffAssembler::emit_i8x16_splat(LiftoffRegister dst,