v8/test/mjsunit/regress/wasm/regress-1179025.js
Clemens Backes c62693500b [liftoff] Fix handling of pinned registers
Pinned registers were not considered correctly when taking a volatile
register. This CL refactors handling of the pinned registers list by
combining the candidates list and the pinned list early. This avoid
additional parameters on some functions and might save some redundant
masking.
As a side effect, it also fixes the DCHECK error on arm.

R=ahaas@chromium.org

Bug: chromium:1179025
Change-Id: Ib9193b209c5741ea97fd1d0dffeeb9e824639439
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2699254
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#72812}
2021-02-17 13:38:59 +00:00

43 lines
1.3 KiB
JavaScript

// Copyright 2021 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Flags: --wasm-staging
load('test/mjsunit/wasm/wasm-module-builder.js');
const builder = new WasmModuleBuilder();
builder.addMemory(1, 1, false, true);
builder.addType(makeSig([], []));
builder.addType(makeSig([kWasmI64], [kWasmF32]));
// Generate function 1 (out of 2).
builder.addFunction(undefined, 0 /* sig */)
.addBodyWithEnd([
// signature: v_v
// body:
kExprNop, // nop
kExprEnd, // end @2
]);
// Generate function 2 (out of 2).
builder.addFunction(undefined, 1 /* sig */)
.addLocals(kWasmI64, 1)
.addBodyWithEnd([
// signature: f_l
// body:
kExprBlock, kWasmF32, // block @3 f32
kExprI32Const, 0x00, // i32.const
kExprI32Const, 0x01, // i32.const
kExprIf, kWasmI64, // if @9 i64
kExprI64Const, 0x00, // i64.const
kExprElse, // else @13
kExprUnreachable, // unreachable
kExprEnd, // end @15
kAtomicPrefix, kExprI64AtomicStore, 0x03, 0x04, // i64.atomic.store64
kExprF32Const, 0x00, 0x00, 0x00, 0x00, // f32.const
kExprEnd, // end @25
kExprDrop, // drop
kExprF32Const, 0x00, 0x00, 0x80, 0x51, // f32.const
kExprEnd, // end @32
]);
builder.instantiate();