Skip to content

Commit

Permalink
[wasm-simd] Move bitmask into SIMD MVP
Browse files Browse the repository at this point in the history
Now that 86 has branched, we can move bitmask into the SIMD MVP, it will
not affect the current OT. (We want any OT extension to include
bitmask.)

Bitmask was accepted into the proposal in
WebAssembly/simd#201.

Bug: v8:10308
Change-Id: Ib61190fcea2bfc0ce7bf733086e1a81388216a59
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2378290
Reviewed-by: Bill Budge <bbudge@chromium.org>
Commit-Queue: Zhi An Ng <zhin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#69577}
  • Loading branch information
ngzhian authored and Commit Bot committed Aug 26, 2020
1 parent 9eb090d commit 6da647f
Show file tree
Hide file tree
Showing 4 changed files with 3 additions and 19 deletions.
5 changes: 0 additions & 5 deletions src/compiler/backend/instruction-selector.cc
Original file line number Diff line number Diff line change
Expand Up @@ -2684,11 +2684,6 @@ void InstructionSelector::VisitI64x2MaxU(Node* node) { UNIMPLEMENTED(); }
#if !V8_TARGET_ARCH_ARM64 && !V8_TARGET_ARCH_ARM && !V8_TARGET_ARCH_IA32 && \
!V8_TARGET_ARCH_X64 && !V8_TARGET_ARCH_S390X && !V8_TARGET_ARCH_MIPS && \
!V8_TARGET_ARCH_MIPS64
// TODO(v8:10308) Bitmask operations are in prototype now, we can remove these
// guards when they go into the proposal.
void InstructionSelector::VisitI8x16BitMask(Node* node) { UNIMPLEMENTED(); }
void InstructionSelector::VisitI16x8BitMask(Node* node) { UNIMPLEMENTED(); }
void InstructionSelector::VisitI32x4BitMask(Node* node) { UNIMPLEMENTED(); }
// TODO(v8:10501) Prototyping pmin and pmax instructions.
void InstructionSelector::VisitF32x4Pmin(Node* node) { UNIMPLEMENTED(); }
void InstructionSelector::VisitF32x4Pmax(Node* node) { UNIMPLEMENTED(); }
Expand Down
6 changes: 3 additions & 3 deletions src/wasm/wasm-opcodes.h
Original file line number Diff line number Diff line change
Expand Up @@ -351,6 +351,7 @@ bool IsJSCompatibleSignature(const FunctionSig* sig, const WasmFeatures&);
V(I8x16Neg, 0xfd61, s_s) \
V(V8x16AnyTrue, 0xfd62, i_s) \
V(V8x16AllTrue, 0xfd63, i_s) \
V(I8x16BitMask, 0xfd64, i_s) \
V(I8x16SConvertI16x8, 0xfd65, s_ss) \
V(I8x16UConvertI16x8, 0xfd66, s_ss) \
V(I8x16Shl, 0xfd6b, s_si) \
Expand All @@ -371,6 +372,7 @@ bool IsJSCompatibleSignature(const FunctionSig* sig, const WasmFeatures&);
V(I16x8Neg, 0xfd81, s_s) \
V(V16x8AnyTrue, 0xfd82, i_s) \
V(V16x8AllTrue, 0xfd83, i_s) \
V(I16x8BitMask, 0xfd84, i_s) \
V(I16x8SConvertI32x4, 0xfd85, s_ss) \
V(I16x8UConvertI32x4, 0xfd86, s_ss) \
V(I16x8SConvertI8x16Low, 0xfd87, s_s) \
Expand All @@ -396,6 +398,7 @@ bool IsJSCompatibleSignature(const FunctionSig* sig, const WasmFeatures&);
V(I32x4Neg, 0xfda1, s_s) \
V(V32x4AnyTrue, 0xfda2, i_s) \
V(V32x4AllTrue, 0xfda3, i_s) \
V(I32x4BitMask, 0xfda4, i_s) \
V(I32x4SConvertI16x8Low, 0xfda7, s_s) \
V(I32x4SConvertI16x8High, 0xfda8, s_s) \
V(I32x4UConvertI16x8Low, 0xfda9, s_s) \
Expand Down Expand Up @@ -446,9 +449,6 @@ bool IsJSCompatibleSignature(const FunctionSig* sig, const WasmFeatures&);

#define FOREACH_SIMD_POST_MVP_OPCODE(V) \
V(I8x16Mul, 0xfd75, s_ss) \
V(I8x16BitMask, 0xfd64, i_s) \
V(I16x8BitMask, 0xfd84, i_s) \
V(I32x4BitMask, 0xfda4, i_s) \
V(V64x2AnyTrue, 0xfdc2, i_s) \
V(V64x2AllTrue, 0xfdc3, i_s) \
V(I64x2Eq, 0xfdc0, s_ss) \
Expand Down
7 changes: 0 additions & 7 deletions test/cctest/wasm/test-run-wasm-simd.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1670,10 +1670,7 @@ WASM_SIMD_TEST(I16x8ReplaceLane) {
}
}

#if V8_TARGET_ARCH_ARM64 || V8_TARGET_ARCH_ARM || V8_TARGET_ARCH_IA32 || \
V8_TARGET_ARCH_X64 || V8_TARGET_ARCH_MIPS || V8_TARGET_ARCH_MIPS64
WASM_SIMD_TEST(I8x16BitMask) {
FLAG_SCOPE(wasm_simd_post_mvp);
WasmRunner<int32_t, int32_t> r(execution_tier, lower_simd);
byte value1 = r.AllocateLocal(kWasmS128);

Expand All @@ -1693,7 +1690,6 @@ WASM_SIMD_TEST(I8x16BitMask) {
}

WASM_SIMD_TEST(I16x8BitMask) {
FLAG_SCOPE(wasm_simd_post_mvp);
WasmRunner<int32_t, int32_t> r(execution_tier, lower_simd);
byte value1 = r.AllocateLocal(kWasmS128);

Expand All @@ -1713,7 +1709,6 @@ WASM_SIMD_TEST(I16x8BitMask) {
}

WASM_SIMD_TEST(I32x4BitMask) {
FLAG_SCOPE(wasm_simd_post_mvp);
WasmRunner<int32_t, int32_t> r(execution_tier, lower_simd);
byte value1 = r.AllocateLocal(kWasmS128);

Expand All @@ -1731,8 +1726,6 @@ WASM_SIMD_TEST(I32x4BitMask) {
CHECK_EQ(actual, expected);
}
}
#endif // V8_TARGET_ARCH_ARM64 || V8_TARGET_ARCH_ARM || V8_TARGET_ARCH_IA32 ||
// V8_TARGET_ARCH_X64 || V8_TARGET_ARCH_MIPS || V8_TARGET_ARCH_MIPS64

WASM_SIMD_TEST(I8x16Splat) {
WasmRunner<int32_t, int32_t> r(execution_tier, lower_simd);
Expand Down
4 changes: 0 additions & 4 deletions test/fuzzer/wasm-fuzzer-common.cc
Original file line number Diff line number Diff line change
Expand Up @@ -318,10 +318,6 @@ void WasmExecutionFuzzer::FuzzWasmModule(Vector<const uint8_t> data,
#undef ENABLE_STAGED_FEATURES
// SIMD is not included in staging yet, so we enable it here for fuzzing.
EXPERIMENTAL_FLAG_SCOPE(simd);
// TODO(v8:10308): Bitmask was merged into proposal after 84 cut, so it was
// left gated by this flag. In order to fuzz it, we need this flag. This
// should be removed once we move bitmask out of post mvp.
FLAG_SCOPE(wasm_simd_post_mvp);

// Strictly enforce the input size limit. Note that setting "max_len" on the
// fuzzer target is not enough, since different fuzzers are used and not all
Expand Down

0 comments on commit 6da647f

Please sign in to comment.