Commit 2fbef5ec authored by Ng Zhi An's avatar Ng Zhi An Committed by Commit Bot

[wasm-simd][fuzzer] Add extract lanes

Bug: v8:10180
Change-Id: I1757975da92f6ebcb19b938ec16623137e541b21
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2219023Reviewed-by: 's avatarDeepti Gandluri <gdeepti@chromium.org>
Commit-Queue: Zhi An Ng <zhin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68082}
parent 847ff253
......@@ -403,6 +403,13 @@ class WasmGenerator {
builder_->EmitWithPrefix(Op);
}
template <WasmOpcode Op, int lanes, ValueType::Kind... Args>
void simd_lane_op(DataRange* data) {
Generate<Args...>(data);
builder_->EmitWithPrefix(Op);
builder_->EmitByte(data->get<byte>() % lanes);
}
void simd_shuffle(DataRange* data) {
Generate<ValueType::kS128, ValueType::kS128>(data);
builder_->EmitWithPrefix(kExprS8x16Shuffle);
......@@ -892,6 +899,13 @@ void WasmGenerator::Generate<ValueType::kI32>(DataRange* data) {
&WasmGenerator::op_with_prefix<kExprV8x16AnyTrue, ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprV16x8AnyTrue, ValueType::kS128>,
&WasmGenerator::op_with_prefix<kExprV32x4AnyTrue, ValueType::kS128>,
&WasmGenerator::simd_lane_op<kExprI8x16ExtractLaneS, 16,
ValueType::kS128>,
&WasmGenerator::simd_lane_op<kExprI8x16ExtractLaneU, 16,
ValueType::kS128>,
&WasmGenerator::simd_lane_op<kExprI16x8ExtractLaneS, 8, ValueType::kS128>,
&WasmGenerator::simd_lane_op<kExprI16x8ExtractLaneU, 8, ValueType::kS128>,
&WasmGenerator::simd_lane_op<kExprI32x4ExtractLane, 4, ValueType::kS128>,
&WasmGenerator::current_memory,
&WasmGenerator::grow_memory,
......@@ -1035,6 +1049,8 @@ void WasmGenerator::Generate<ValueType::kI64>(DataRange* data) {
ValueType::kI32, ValueType::kI64,
ValueType::kI64>,
&WasmGenerator::simd_lane_op<kExprI64x2ExtractLane, 2, ValueType::kS128>,
&WasmGenerator::get_local<ValueType::kI64>,
&WasmGenerator::tee_local<ValueType::kI64>,
&WasmGenerator::get_global<ValueType::kI64>,
......@@ -1090,6 +1106,8 @@ void WasmGenerator::Generate<ValueType::kF32>(DataRange* data) {
&WasmGenerator::memop<kExprF32LoadMem>,
&WasmGenerator::simd_lane_op<kExprF32x4ExtractLane, 4, ValueType::kS128>,
&WasmGenerator::get_local<ValueType::kF32>,
&WasmGenerator::tee_local<ValueType::kF32>,
&WasmGenerator::get_global<ValueType::kF32>,
......@@ -1145,6 +1163,8 @@ void WasmGenerator::Generate<ValueType::kF64>(DataRange* data) {
&WasmGenerator::memop<kExprF64LoadMem>,
&WasmGenerator::simd_lane_op<kExprF64x2ExtractLane, 2, ValueType::kS128>,
&WasmGenerator::get_local<ValueType::kF64>,
&WasmGenerator::tee_local<ValueType::kF64>,
&WasmGenerator::get_global<ValueType::kF64>,
......
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