From 2ae3fa507666d82b251355560d22a08a4eab2d7e Mon Sep 17 00:00:00 2001 From: Milad Farazmand Date: Tue, 2 Jun 2020 16:58:25 +0000 Subject: [PATCH] PPC/s390: Reland "[wasm-simd][liftoff][ia32][x64] Implement bitmask" Port aa5bcc09bf7d5d77056e6033918d79c30aa3f49a Original Commit Message: This relands commit d04b5e47558f6a7a58828a608942dae54aba8f71. The fix here is in the assembler for pmovmskb, emit_optional_rex_32 should be called after emitting the prefix byte. Original change's description: > [wasm-simd][liftoff][ia32][x64] Implement bitmask > > Implements i8x16 i16x8 i32x4 bitmask. > > This was merged into the proposal in > https://github.com/WebAssembly/simd/pull/201/. > > Bug: v8:9909,v8:10308 > Change-Id: I882f0c2697213cdf593e745112e0897cee252009 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2222607 > Commit-Queue: Zhi An Ng > Reviewed-by: Clemens Backes > Cr-Commit-Position: refs/heads/master@{#68090} R=zhin@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com BUG= LOG=N Change-Id: Id73795d3628067199ac6ac592a9b0b1c57fc65a4 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2226311 Reviewed-by: Zhi An Ng Commit-Queue: Milad Farazmand Cr-Commit-Position: refs/heads/master@{#68109} --- src/wasm/baseline/ppc/liftoff-assembler-ppc.h | 15 +++++++++++++++ src/wasm/baseline/s390/liftoff-assembler-s390.h | 15 +++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/src/wasm/baseline/ppc/liftoff-assembler-ppc.h b/src/wasm/baseline/ppc/liftoff-assembler-ppc.h index a70420d2e3..5dcd0a763d 100644 --- a/src/wasm/baseline/ppc/liftoff-assembler-ppc.h +++ b/src/wasm/baseline/ppc/liftoff-assembler-ppc.h @@ -782,6 +782,11 @@ void LiftoffAssembler::emit_v32x4_alltrue(LiftoffRegister dst, bailout(kSimd, "v32x4_alltrue"); } +void LiftoffAssembler::emit_i32x4_bitmask(LiftoffRegister dst, + LiftoffRegister src) { + bailout(kSimd, "i32x4_bitmask"); +} + void LiftoffAssembler::emit_i32x4_shl(LiftoffRegister dst, LiftoffRegister lhs, LiftoffRegister rhs) { bailout(kSimd, "i32x4_shl"); @@ -873,6 +878,11 @@ void LiftoffAssembler::emit_v16x8_alltrue(LiftoffRegister dst, bailout(kSimd, "v16x8_alltrue"); } +void LiftoffAssembler::emit_i16x8_bitmask(LiftoffRegister dst, + LiftoffRegister src) { + bailout(kSimd, "i16x8_bitmask"); +} + void LiftoffAssembler::emit_i16x8_shl(LiftoffRegister dst, LiftoffRegister lhs, LiftoffRegister rhs) { bailout(kSimd, "i16x8_shl"); @@ -1020,6 +1030,11 @@ void LiftoffAssembler::emit_v8x16_alltrue(LiftoffRegister dst, bailout(kSimd, "v8x16_alltrue"); } +void LiftoffAssembler::emit_i8x16_bitmask(LiftoffRegister dst, + LiftoffRegister src) { + bailout(kSimd, "i8x16_bitmask"); +} + void LiftoffAssembler::emit_i8x16_shl(LiftoffRegister dst, LiftoffRegister lhs, LiftoffRegister rhs) { bailout(kSimd, "i8x16_shl"); diff --git a/src/wasm/baseline/s390/liftoff-assembler-s390.h b/src/wasm/baseline/s390/liftoff-assembler-s390.h index b90d3edc89..044be4b55b 100644 --- a/src/wasm/baseline/s390/liftoff-assembler-s390.h +++ b/src/wasm/baseline/s390/liftoff-assembler-s390.h @@ -786,6 +786,11 @@ void LiftoffAssembler::emit_v32x4_alltrue(LiftoffRegister dst, bailout(kSimd, "v32x4_alltrue"); } +void LiftoffAssembler::emit_i32x4_bitmask(LiftoffRegister dst, + LiftoffRegister src) { + bailout(kSimd, "i32x4_bitmask"); +} + void LiftoffAssembler::emit_i32x4_shl(LiftoffRegister dst, LiftoffRegister lhs, LiftoffRegister rhs) { bailout(kSimd, "i32x4_shl"); @@ -877,6 +882,11 @@ void LiftoffAssembler::emit_v16x8_alltrue(LiftoffRegister dst, bailout(kSimd, "v16x8_alltrue"); } +void LiftoffAssembler::emit_i16x8_bitmask(LiftoffRegister dst, + LiftoffRegister src) { + bailout(kSimd, "i16x8_bitmask"); +} + void LiftoffAssembler::emit_i16x8_shl(LiftoffRegister dst, LiftoffRegister lhs, LiftoffRegister rhs) { bailout(kSimd, "i16x8_shl"); @@ -1030,6 +1040,11 @@ void LiftoffAssembler::emit_v8x16_alltrue(LiftoffRegister dst, bailout(kSimd, "v8x16_alltrue"); } +void LiftoffAssembler::emit_i8x16_bitmask(LiftoffRegister dst, + LiftoffRegister src) { + bailout(kSimd, "i8x16_bitmask"); +} + void LiftoffAssembler::emit_i8x16_shl(LiftoffRegister dst, LiftoffRegister lhs, LiftoffRegister rhs) { bailout(kSimd, "i8x16_shl");