[wasm-simd] Move bitmask into SIMD MVP
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 https://github.com/WebAssembly/simd/pull/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}
This commit is contained in:
parent
9eb090d261
commit
6da647f501
@ -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(); }
|
||||
|
@ -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) \
|
||||
@ -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) \
|
||||
@ -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) \
|
||||
@ -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) \
|
||||
|
@ -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);
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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);
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user