v8/test
Ng Zhi An 5cfe053e45 [wasm-simd][liftoff] Add S128 case for stack movements
The two cases we are fixing here are Construct and
LoadCallerFrameSlot, which are closely related.

Construct is called during PrepareCall, where we build up
LiftoffStackSlots when we need to move an arg from caller's stack frame
into callee's stack frame. LoadCallerFrameSlot is the parallel to
this, called in ProcessParameter during decoding of the callee's
function body.

In most cases, Construct needs a new case to handle kWasmS128, and calls
the relevant assembler to push a s128 onto the stack.

ARM64 requires 16-byte alignment of sp, so we need to Claim the right
number of kXRegSize slots first, which requires
us traversing the list of slots to figure out how many s128 values there
are. This is a straightforward way to fix this, if efficiency is a
problem, we can change LiftOffStackSlots::Add to sum up the slot sizes.

On IA32, pushing s128 values will require 4 calls to push. Instead, we
use a sub and two movdqu, which will generate less code in most cases.

On x64, there is no 128-bit push, so we call push twice.

Bug: v8:9909
Change-Id: I3af35b8462ea9c3b9b2d90800c37d11b5e95be59
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2015945
Commit-Queue: Zhi An Ng <zhin@chromium.org>
Reviewed-by: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#65956}
2020-01-23 18:56:31 +00:00
..
benchmarks Remove 'embedded_builtins' variant 2019-10-22 12:58:02 +00:00
cctest [liftoff][wasm-simd] Implement f32x4.splat 2020-01-23 18:32:30 +00:00
common [wasm-simd][liftoff] Handle SIMD params in function 2020-01-17 00:07:08 +00:00
debugger [debug] Collect source positions Debug::PrintBreakLocation 2020-01-21 12:07:03 +00:00
fuzzer [wasm][fuzzer] Add atomic binops 2020-01-22 18:58:28 +00:00
inspector PPC/s390: [wasm] First plumbing for debugging in Liftoff 2020-01-23 18:04:49 +00:00
intl Hide date related types from Intl.DisplayNames 2019-12-19 19:31:09 +00:00
js-perf-test [js-perf-tests] Adds performance tests for BigInt subtraction 2019-10-22 13:32:09 +00:00
memory [owners] Remove redundant OWNERS files in test/ 2019-06-24 12:44:32 +00:00
message [wasm-simd][liftoff] Fix spills of S128 values on ARM 2020-01-21 18:35:14 +00:00
mjsunit [wasm-simd][liftoff] Add S128 case for stack movements 2020-01-23 18:56:31 +00:00
mkgrokdump [heap] Enable Verify for RO_SPACE when it is shared 2019-11-04 09:55:45 +00:00
mozilla Remove and update some outdated TODO(mstarzinger). 2019-12-13 10:18:04 +00:00
test262 Roll Test262 2020-01-15 09:35:22 +00:00
torque [torque] use iterators and constructors for ExtractFixedArray 2020-01-16 13:51:04 +00:00
unittests [api] Deprecate SetExpectInlineWasm 2020-01-22 20:41:28 +00:00
wasm-api-tests [wasm] Clean up WASM_CALL_INDIRECT macros 2019-11-28 14:44:06 +00:00
wasm-js [wasm] Update wasm spec tests 2019-12-16 14:14:39 +00:00
wasm-spec-tests [wasm][reference-types] Enable ref.null in Wasm code 2020-01-15 12:45:59 +00:00
webkit [class] Improve error message for calling anonymous class constructors 2019-12-05 21:13:07 +00:00
BUILD.gn [preparser] deprecate stand-alone "preparser" test-suite 2019-11-20 08:52:59 +00:00
OWNERS Use relative paths to OWNERS files 2019-08-12 13:52:52 +00:00