Commit 44cd69a7 authored by Manos Koukoutos's avatar Manos Koukoutos Committed by V8 LUCI CQ

[wasm][fuzzer] Adapt --wasm-fuzzer-gen-test to new format

In crrev.com/c/3714237, we changed the representation of constant
expressions in mjsunit wasm tests to byte arrays. This CL complements
this change by updating the output of --wasm-fuzzer-gen-test to the
new format.

Change-Id: I6a9d861b5abe13621ffd2ceb3a54863b0188b40c
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3726294Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
Commit-Queue: Manos Koukoutos <manoskouk@chromium.org>
Cr-Commit-Position: refs/heads/main@{#81414}
parent a9143207
......@@ -558,20 +558,21 @@ void WriteInitializerExpressionWithEnd(ZoneBuffer* buffer,
buffer->write_u32v(init.immediate().index);
break;
case WasmInitExpr::kArrayNewFixed:
case WasmInitExpr::kArrayNewFixedStatic:
case WasmInitExpr::kArrayNewFixedStatic: {
static_assert((kExprArrayNewFixed >> 8) == kGCPrefix);
static_assert((kExprArrayNewFixedStatic >> 8) == kGCPrefix);
bool is_static = init.kind() == WasmInitExpr::kArrayNewFixedStatic;
for (const WasmInitExpr& operand : *init.operands()) {
WriteInitializerExpressionWithEnd(buffer, operand, kWasmBottom);
}
buffer->write_u8(kGCPrefix);
buffer->write_u8(
static_cast<uint8_t>(init.kind() == WasmInitExpr::kArrayNewFixed
? kExprArrayNewFixed
: kExprArrayNewFixedStatic));
buffer->write_u8(static_cast<uint8_t>(is_static ? kExprArrayNewFixedStatic
: kExprArrayNewFixed));
buffer->write_u32v(init.immediate().index);
buffer->write_u32v(static_cast<uint32_t>(init.operands()->size() - 1));
buffer->write_u32v(
static_cast<uint32_t>(init.operands()->size() - (is_static ? 0 : 1)));
break;
}
case WasmInitExpr::kI31New:
WriteInitializerExpressionWithEnd(buffer, (*init.operands())[0],
kWasmI32);
......
......@@ -865,17 +865,13 @@ class WasmGenerator {
[](ValueType type) -> bool { return type.is_defaultable(); });
if (new_default && can_be_defaultable) {
builder_->EmitWithPrefix(kExprRttCanon);
builder_->EmitU32V(index);
builder_->EmitWithPrefix(kExprStructNewDefaultWithRtt);
builder_->EmitWithPrefix(kExprStructNewDefault);
builder_->EmitU32V(index);
} else {
for (int i = 0; i < field_count; i++) {
Generate(struct_gen->field(i).Unpacked(), data);
}
builder_->EmitWithPrefix(kExprRttCanon);
builder_->EmitU32V(index);
builder_->EmitWithPrefix(kExprStructNewWithRtt);
builder_->EmitWithPrefix(kExprStructNew);
builder_->EmitU32V(index);
}
} else if (builder_->builder()->IsArrayType(index)) {
......@@ -887,9 +883,7 @@ class WasmGenerator {
Generate(kWasmI32, data);
builder_->EmitI32Const(kMaxArraySize);
builder_->Emit(kExprI32RemS);
builder_->EmitWithPrefix(kExprRttCanon);
builder_->EmitU32V(index);
builder_->EmitWithPrefix(kExprArrayNewDefaultWithRtt);
builder_->EmitWithPrefix(kExprArrayNewDefault);
builder_->EmitU32V(index);
} else {
Generate(
......@@ -898,9 +892,7 @@ class WasmGenerator {
Generate(kWasmI32, data);
builder_->EmitI32Const(kMaxArraySize);
builder_->Emit(kExprI32RemS);
builder_->EmitWithPrefix(kExprRttCanon);
builder_->EmitU32V(index);
builder_->EmitWithPrefix(kExprArrayNewWithRtt);
builder_->EmitWithPrefix(kExprArrayNew);
builder_->EmitU32V(index);
}
} else {
......@@ -2362,8 +2354,7 @@ WasmInitExpr GenerateStructNewInitExpr(Zone* zone, WasmModuleBuilder* builder,
struct_type->field(field_index),
num_struct_and_array_types));
}
elements->push_back(WasmInitExpr::RttCanon(index));
return WasmInitExpr::StructNewWithRtt(index, elements);
return WasmInitExpr::StructNew(index, elements);
}
WasmInitExpr GenerateInitExpr(Zone* zone, WasmModuleBuilder* builder,
......@@ -2413,8 +2404,7 @@ WasmInitExpr GenerateInitExpr(Zone* zone, WasmModuleBuilder* builder,
elements->push_back(GenerateInitExpr(
zone, builder, builder->GetArrayType(index)->element_type(),
num_struct_and_array_types));
elements->push_back(WasmInitExpr::RttCanon(index));
return WasmInitExpr::ArrayNewFixed(index, elements);
return WasmInitExpr::ArrayNewFixedStatic(index, elements);
}
if (builder->IsSignature(index)) {
// Transform from signature index to function index.
......
This diff is collapsed.
......@@ -1365,7 +1365,7 @@ class WasmModuleBuilder {
case kWasmF64:
return wasmF64Const(0.0);
case kWasmS128:
return [kSimdPrefix, kExprSimdConst, ...(new Array(16).fill(0))];
return [kSimdPrefix, kExprS128Const, ...(new Array(16).fill(0))];
default:
if ((typeof type) != 'number' && type.opcode != kWasmOptRef) {
throw new Error("Non-defaultable type");
......
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