- 24 Feb, 2021 1 commit
-
-
Ng Zhi An authored
Use external refs to load the masks neded for i8x16.swizzle. Before it would need 3 instructions (2 moves + 1 pshufd), now it requires 2 moves. Also on AVX we can relax the dst == src requirement, which can potentially save a move too. Bug: v8:11346 Change-Id: If350529de7272a7b178e12778a5e02813b34631c Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2713168Reviewed-by:
Bill Budge <bbudge@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#72989}
-
- 23 Feb, 2021 1 commit
-
-
Ng Zhi An authored
Extract code sequence into macro-assembler for sharing between Liftoff and TurboFan. Relax the register aliasing requirements (remove the DCHECKS), this will not affect codegen for TurboFan since the instruction selector already sets the correct restrictions, but makes it more flexible for use in Liftoff. Bug: v8:11416 Change-Id: I5f3f37b21d8f7e96ff7e472cb96dcda5f28679cf Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2707765 Commit-Queue: Zhi An Ng <zhin@chromium.org> Reviewed-by:
Clemens Backes <clemensb@chromium.org> Reviewed-by:
Deepti Gandluri <gdeepti@chromium.org> Cr-Commit-Position: refs/heads/master@{#72984}
-
- 22 Feb, 2021 3 commits
-
-
Ng Zhi An authored
Extract code sequence into macro-assembler for reuse between Liftoff and TurboFan. Small tweaks to macro-assembler functions Pmaddwd and Pmaddubsw to move src1 to dst on SSE when src != dst. TurboFan codegen won't be affected by this since it sets the right restrictions in instruction-selector. Bug: v8:11086 Change-Id: I6c206dec332c8195a6a4d419d11a28e7058c905a Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2707253Reviewed-by:
Clemens Backes <clemensb@chromium.org> Reviewed-by:
Deepti Gandluri <gdeepti@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#72924}
-
Clemens Backes authored
There is no need for write barriers if the stored value is known to be a Smi. R=thibaudm@chromium.org Bug: v8:11453 Change-Id: Id1cf306b246686c245d1be5f72c46b54ba9829ca Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2707172Reviewed-by:
Thibaud Michaud <thibaudm@chromium.org> Commit-Queue: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#72903}
-
Clemens Backes authored
Backends do not care about the concrete type, they only need to know the "kind" (e.g. "ref" or "i32"). In order to prepare Liftoff to use the value kind instead of the value type for all stored data, this CL moves the kind out of the ValueType and makes it a top-level enum. R=manoskouk@chromium.org Bug: v8:11477 Change-Id: I489d6c5207e6ff1b66e2afbe78a156d66df27eb3 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2707169 Commit-Queue: Clemens Backes <clemensb@chromium.org> Reviewed-by:
Manos Koukoutos <manoskouk@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#72896}
-
- 19 Feb, 2021 1 commit
-
-
Ng Zhi An authored
Extract code sequence into macro-assembler for reuse between Liftoff and TurboFan. There is a bit of register-aliasing checking due to the rather strict requirements for the code sequence depending on the CpuFetures that are supported. Bug: v8:11415 Change-Id: Idbc0ca43475db5650d1747c8a741e9f11b80d8e3 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2698063Reviewed-by:
Clemens Backes <clemensb@chromium.org> Reviewed-by:
Deepti Gandluri <gdeepti@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#72875}
-
- 16 Feb, 2021 1 commit
-
-
Clemens Backes authored
This CL avoids redundant loads of the instance from the frame by caching it in a register if possible. This register will be the first one to be cleared once we run out of registers (hence it's called a "volatile register"). On local tests, this seems to reduce most redundant loads within a function, and it also reduces the load for the stack check in the function prologue. After the stack check, we need to discard the cached instance though, since the potential runtime call for the stack check might clobber it. This will be addressed in a follow-up CL by re-loading the cached instance after the stack check. This is expected to remove another good chunk of instance loads, because the instance would initially be available in a register when starting the function code. R=thibaudm@chromium.org Bug: v8:11336 Change-Id: Ie65ab81263fb9d972f4b7a6daaef86cf704874ef Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2695401 Commit-Queue: Clemens Backes <clemensb@chromium.org> Reviewed-by:
Thibaud Michaud <thibaudm@chromium.org> Cr-Commit-Position: refs/heads/master@{#72779}
-
- 12 Feb, 2021 1 commit
-
-
Clemens Backes authored
This CL adds support for instrumentation breakpoints in wasm. The request for "break on entry" is set on the script, and we need to keep it stored there because there might not be any instances of that wasm module yet. Once instances get created, the flag value is transferred to all instances. The flag stored there is then checked in the function prologue in Liftoff debugging code. This ensures that we will stop at the first valid break position in any function within that module. Hitting that instrumentation breakpoint will then clear the flag from the script and from all other live instances (in the same isolate). A first basic test is contained in this CL. More tests will be added later. R=thibaudm@chromium.org, bmeurer@chromium.org Bug: chromium:1151211 Change-Id: I5442d4044934988269becececc03699b850d51d7 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2690588Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Reviewed-by:
Thibaud Michaud <thibaudm@chromium.org> Commit-Queue: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#72701}
-
- 11 Feb, 2021 1 commit
-
-
Ng Zhi An authored
Other archs will come later. Bug: v8:11347,v8:11348 Change-Id: I9ea656b9c7ce03c9dafb631dd67f6e2f7d4346a2 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2686312Reviewed-by:
Deepti Gandluri <gdeepti@chromium.org> Reviewed-by:
Clemens Backes <clemensb@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#72674}
-
- 10 Feb, 2021 2 commits
-
-
Ng Zhi An authored
Extract codegen into macro-assembler functions for reuse in Liftoff. Some minor tweaks in I32x4TruncSatF64x2SZero and I32x4TruncSatF64x2UZero to check dst and src overlap and move to scratch/dst accordingly. In TurboFan we can set these restrictions in the instruction-selector, but not in Liftoff. This doesn't make TurboFan codegen any worse, since those restrictions are still in place. Bug: v8:11265 Change-Id: Ib6b3ebeb5fed99eddd0700fb4aba91d4168c3213 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2683206 Commit-Queue: Zhi An Ng <zhin@chromium.org> Reviewed-by:
Clemens Backes <clemensb@chromium.org> Reviewed-by:
Deepti Gandluri <gdeepti@chromium.org> Cr-Commit-Position: refs/heads/master@{#72638}
-
Ng Zhi An authored
This is a reland of 00babf07 No changes from original patch, previous CQ failures were likely a Mac infra issue https://chromium-review.googlesource.com/c/2682521. Original change's description: > [wasm-simd][x64][liftoff] Implement i8x16.popcnt > > Extract i8x16.popcnt implementation into a macro-assembler function, and > reuse it in Liftoff. > > Bug: v8:11002 > Change-Id: I86b2f5322c799d44f584cac28c70e0e393bf114f > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2676280 > Reviewed-by: Clemens Backes <clemensb@chromium.org> > Reviewed-by: Deepti Gandluri <gdeepti@chromium.org> > Commit-Queue: Zhi An Ng <zhin@chromium.org> > Cr-Commit-Position: refs/heads/master@{#72565} Bug: v8:11002 Change-Id: Ic8bcbdb3444865805d8d2af3669ccb4a05c4426d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2682507Reviewed-by:
Clemens Backes <clemensb@chromium.org> Reviewed-by:
Deepti Gandluri <gdeepti@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#72614}
-
- 08 Feb, 2021 2 commits
-
-
Zhi An Ng authored
This reverts commit 00babf07. Reason for revert: Broke mac64 https://ci.chromium.org/ui/p/v8/builders/ci/V8%20Mac64/38510/overview Original change's description: > [wasm-simd][x64][liftoff] Implement i8x16.popcnt > > Extract i8x16.popcnt implementation into a macro-assembler function, and > reuse it in Liftoff. > > Bug: v8:11002 > Change-Id: I86b2f5322c799d44f584cac28c70e0e393bf114f > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2676280 > Reviewed-by: Clemens Backes <clemensb@chromium.org> > Reviewed-by: Deepti Gandluri <gdeepti@chromium.org> > Commit-Queue: Zhi An Ng <zhin@chromium.org> > Cr-Commit-Position: refs/heads/master@{#72565} TBR=gdeepti@chromium.org,clemensb@chromium.org,zhin@chromium.org Change-Id: I5795b71f65d59237db59907d40c34e4fa7779fe1 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:11002 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2682505Reviewed-by:
Zhi An Ng <zhin@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#72566}
-
Ng Zhi An authored
Extract i8x16.popcnt implementation into a macro-assembler function, and reuse it in Liftoff. Bug: v8:11002 Change-Id: I86b2f5322c799d44f584cac28c70e0e393bf114f Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2676280Reviewed-by:
Clemens Backes <clemensb@chromium.org> Reviewed-by:
Deepti Gandluri <gdeepti@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#72565}
-
- 01 Feb, 2021 1 commit
-
-
Ng Zhi An authored
This is a reland of commit 9c09c227. The fix for gc stress failure is merged: https://crrev.com/c/2656857. Original change's description: > Bug: v8:11331 > Change-Id: Ie394ec841a1a1c4030c4f589eac2cee8a6a2a1f9 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2639033 > Reviewed-by: Georg Neis <neis@chromium.org> > Reviewed-by: Deepti Gandluri <gdeepti@chromium.org> > Commit-Queue: Zhi An Ng <zhin@chromium.org> > Cr-Commit-Position: refs/heads/master@{#72304} Bug: v8:11331 Change-Id: I82f57b3fe5f0c456472aa7ce404703f34b73d17e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2659511Reviewed-by:
Deepti Gandluri <gdeepti@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#72465}
-
- 28 Jan, 2021 1 commit
-
-
Manos Koukoutos authored
As per the latest wasm-gc spec, rtts now have optional depth, with (rtt n type) <: (rtt type) for every depth n. Liftoff compilation for type checks without depth are not supported yet. Bug: v8:7748 Change-Id: I4971875e6a42db6d333b61ca5e2996e875f39f60 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2649043Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Commit-Queue: Manos Koukoutos <manoskouk@chromium.org> Cr-Commit-Position: refs/heads/master@{#72395}
-
- 27 Jan, 2021 1 commit
-
-
Ng Zhi An authored
Bug: v8:11215 Change-Id: Ib91d8e4cb2cd72a779f498827e154173c97a85cd Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2648819 Commit-Queue: Zhi An Ng <zhin@chromium.org> Reviewed-by:
Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#72376}
-
- 26 Jan, 2021 2 commits
-
-
Andreas Haas authored
The GC requires all slots in a stack frame that store a reference to be aligned. This alignment was not provided for spill slots in OOL code. R=thibaudm@chromium.org Change-Id: I17492362318623aecc4c54635407d0c8badf3d36 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2649025Reviewed-by:
Thibaud Michaud <thibaudm@chromium.org> Commit-Queue: Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/master@{#72324}
-
Zhi An Ng authored
This reverts commit 9c09c227. Reason for revert: gc stress failures https://ci.chromium.org/ui/p/v8/builders/ci/V8%20Linux%20-%20arm64%20-%20sim%20-%20gc%20stress/20563/overview Original change's description: > [wasm-simd] Merge all any_true to v128.any_true > > In https://github.com/WebAssembly/simd/pull/423, all any_true > instructions were removed, and replaced with a single v128.any_true. > > This patch removes all but v8x16.any_true, and renames it to > v128.any_true. > > Bug: v8:11331 > Change-Id: Ie394ec841a1a1c4030c4f589eac2cee8a6a2a1f9 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2639033 > Reviewed-by: Georg Neis <neis@chromium.org> > Reviewed-by: Deepti Gandluri <gdeepti@chromium.org> > Commit-Queue: Zhi An Ng <zhin@chromium.org> > Cr-Commit-Position: refs/heads/master@{#72304} TBR=neis@chromium.org,gdeepti@chromium.org,neis@google.com,zhin@chromium.org Change-Id: I52dbf8de679059dd7b17908c1fe3ada0eb54ff84 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:11331 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2649240Reviewed-by:
Zhi An Ng <zhin@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#72305}
-
- 25 Jan, 2021 2 commits
-
-
Ng Zhi An authored
In https://github.com/WebAssembly/simd/pull/423, all any_true instructions were removed, and replaced with a single v128.any_true. This patch removes all but v8x16.any_true, and renames it to v128.any_true. Bug: v8:11331 Change-Id: Ie394ec841a1a1c4030c4f589eac2cee8a6a2a1f9 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2639033Reviewed-by:
Georg Neis <neis@chromium.org> Reviewed-by:
Deepti Gandluri <gdeepti@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#72304}
-
Ng Zhi An authored
Factor out the code sequence into macro-assembler functions to be reused by Liftoff. Bug: v8:10975 Change-Id: I82e253c94e09bf62197e7de87359d0e3956d2dcc Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2643662 Commit-Queue: Zhi An Ng <zhin@chromium.org> Reviewed-by:
Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#72300}
-
- 22 Jan, 2021 1 commit
-
-
Andreas Haas authored
On x64, reference types where not handled yet in LiftoffAssembler::push. Note that the values pushed on the stack there do not have to be handled by a safepoint. The reason is that stack parameters in general are handled separately from safepoints. R=thibaudm@chromium.org Bug: chromium:1168116 Change-Id: Ie62479c13839f0ba240d0e41fa76d07a2cc48881 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2642263Reviewed-by:
Thibaud Michaud <thibaudm@chromium.org> Commit-Queue: Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/master@{#72252}
-
- 13 Jan, 2021 2 commits
-
-
Zhi An Ng authored
Create a macro-assembler helper function to enable code sharing between Liftoff and TurboFan. Bug: v8:10971 Change-Id: I10228b502d959dbde670c38c44992fa7133dab7e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2621859Reviewed-by:
Clemens Backes <clemensb@chromium.org> Reviewed-by:
Bill Budge <bbudge@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#72058}
-
Zhi An Ng authored
Implement these 4 instructions for x64 Liftoff: - i64x2.widen_low_i32x4_s - i64x2.widen_high_i32x4_s - i64x2.widen_low_i32x4_u - i64x2.widen_high_i32x4_u We move the codegen for the *high* instructions into macro-assembler to allow sharing of the optimized code sequence between TurboFan and Liftoff. Bug: v8:10972 Change-Id: I900b24f96ee55784220656cb2664283b03c32110 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2621862 Commit-Queue: Zhi An Ng <zhin@chromium.org> Reviewed-by:
Clemens Backes <clemensb@chromium.org> Reviewed-by:
Bill Budge <bbudge@chromium.org> Cr-Commit-Position: refs/heads/master@{#72055}
-
- 12 Jan, 2021 2 commits
-
-
Clemens Backes authored
... and fix an issue in TurboFan and issues in Liftoff. R=manoskouk@chromium.org Bug: v8:10949 Change-Id: I3493205ab56a4ded550af6fcd75c465f7d8894ca Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2618246 Commit-Queue: Clemens Backes <clemensb@chromium.org> Reviewed-by:
Manos Koukoutos <manoskouk@chromium.org> Cr-Commit-Position: refs/heads/master@{#72035}
-
Zhi An Ng authored
Bug: v8:10997 Change-Id: Ic7a3848792867ef3068151eff8dbf45e628ce6c2 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2620901Reviewed-by:
Clemens Backes <clemensb@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#72022}
-
- 08 Jan, 2021 3 commits
-
-
Jakob Kummerow authored
This is a reland of a3ce2f6d (No changes; was reverted because a dependency was reverted.) Original change's description: > [wasm-gc] Liftoff support part 5: i31 > > This implements support for i31.get_s and i31.get_u. > > Bug: v8:7748 > Change-Id: Icbfddbc2ff46b4eb6bf3edf7b3a794f9797361d4 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2595309 > Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> > Reviewed-by: Clemens Backes <clemensb@chromium.org> > Cr-Commit-Position: refs/heads/master@{#71808} Bug: v8:7748 Change-Id: Id8e66cab285d2a36fcd712b92a522e83dea93193 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2617089Reviewed-by:
Clemens Backes <clemensb@chromium.org> Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> Cr-Commit-Position: refs/heads/master@{#71984}
-
Zhi An Ng authored
Prototype load lane instructions on Liftoff, only for x64. Bug: v8:10975 Change-Id: Ifdf58f08b65762d592e99de91c7c622d2a964a9a Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2612335 Commit-Queue: Zhi An Ng <zhin@chromium.org> Reviewed-by:
Clemens Backes <clemensb@chromium.org> Reviewed-by:
Bill Budge <bbudge@chromium.org> Cr-Commit-Position: refs/heads/master@{#71980}
-
Zhi An Ng authored
This is a reland of 2d5f981a The fix is in liftoff-assembler-x64, to call S128Select with dst as the mask when AVX is not supported and dst != mask. Original change's description: > [wasm-simd][liftoff][x64] Move v128.select into macro-assembler > > This allows us to reuse this optimized code sequence in Liftoff. > > We can't do the same thing in IA32 yet, there is no kScratchDoubleReg > defined in the macro-assembler-ia32.cc, it is defined in code-generator-ia32 > as xmm0 but I'm not sure if it is safe to just use that in the macro assembler. > > Change-Id: I6c761857c49d2518fbc82cd0796c62fc86665cb5 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2596581 > Commit-Queue: Zhi An Ng <zhin@chromium.org> > Reviewed-by: Clemens Backes <clemensb@chromium.org> > Reviewed-by: Bill Budge <bbudge@chromium.org> > Cr-Commit-Position: refs/heads/master@{#71915} Change-Id: Ib96ce0e1d5762f6513ef87f240b25ef3ae59441f Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2612324Reviewed-by:
Clemens Backes <clemensb@chromium.org> Reviewed-by:
Bill Budge <bbudge@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#71961}
-
- 05 Jan, 2021 4 commits
-
-
Clemens Backes authored
This reverts commit 2d5f981a. Reason for revert: Fails on noavx: https://ci.chromium.org/p/v8/builders/ci/V8%20Linux64%20-%20debug/35318 Original change's description: > [wasm-simd][liftoff][x64] Move v128.select into macro-assembler > > This allows us to reuse this optimized code sequence in Liftoff. > > We can't do the same thing in IA32 yet, there is no kScratchDoubleReg > defined in the macro-assembler-ia32.cc, it is defined in code-generator-ia32 > as xmm0 but I'm not sure if it is safe to just use that in the macro assembler. > > Change-Id: I6c761857c49d2518fbc82cd0796c62fc86665cb5 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2596581 > Commit-Queue: Zhi An Ng <zhin@chromium.org> > Reviewed-by: Clemens Backes <clemensb@chromium.org> > Reviewed-by: Bill Budge <bbudge@chromium.org> > Cr-Commit-Position: refs/heads/master@{#71915} TBR=bbudge@chromium.org,clemensb@chromium.org,zhin@chromium.org Change-Id: I2aacee02c89a16516a9cd6686d8cc6180362f78e No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2610730Reviewed-by:
Clemens Backes <clemensb@chromium.org> Commit-Queue: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#71916}
-
Zhi An Ng authored
This allows us to reuse this optimized code sequence in Liftoff. We can't do the same thing in IA32 yet, there is no kScratchDoubleReg defined in the macro-assembler-ia32.cc, it is defined in code-generator-ia32 as xmm0 but I'm not sure if it is safe to just use that in the macro assembler. Change-Id: I6c761857c49d2518fbc82cd0796c62fc86665cb5 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2596581 Commit-Queue: Zhi An Ng <zhin@chromium.org> Reviewed-by:
Clemens Backes <clemensb@chromium.org> Reviewed-by:
Bill Budge <bbudge@chromium.org> Cr-Commit-Position: refs/heads/master@{#71915}
-
Zhi An Ng authored
These optimized macro-assembler functions were introduced in https://crrev.com/c/2591853. Reuse them in Liftoff to get better code-gen, especially when AVX is supported. The macro-assembler functions have no alias requirements, so we can pass dst and src directly without doing any checks or moves. Change-Id: I0d1badfc2e2b41a8d92d8c4ac73541ec46daeb0a Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2603766Reviewed-by:
Bill Budge <bbudge@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#71905}
-
Zhi An Ng authored
For i64x2.ext_mul and i16x8.ext_mul, we can simply call the macro-assembler functions. For i32x4.ext_mul, the macro-assembler requires that dst == src1 if AVX is not supported, so we add a helper function to do that check, and make sure dst == src1 before calling into macro-assembler. Bug: v8:11262 Change-Id: Iff8e99967f4ab157021d0706e0142df894468142 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2603765Reviewed-by:
Bill Budge <bbudge@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#71903}
-
- 22 Dec, 2020 1 commit
-
-
Zhi An Ng authored
The codegen is the same as on TurboFan, using Smull, Umull, Smull2, and Umull2. The rest of the changes are adding skeleton functions to the different archs, which bailout for now. Actual codegen will come in future patches. Bug: v8:11262 Change-Id: I06f0b018b85b5cca29382ab730510959e1a81ab6 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2589064Reviewed-by:
Clemens Backes <clemensb@chromium.org> Reviewed-by:
Deepti Gandluri <gdeepti@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#71859}
-
- 17 Dec, 2020 1 commit
-
-
Jakob Kummerow authored
This reverts commit a3ce2f6d. Reason for revert: speculative revert due to waterfall unhappiness (looks like bot weirdness though?) Original change's description: > [wasm-gc] Liftoff support part 5: i31 > > This implements support for i31.get_s and i31.get_u. > > Bug: v8:7748 > Change-Id: Icbfddbc2ff46b4eb6bf3edf7b3a794f9797361d4 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2595309 > Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> > Reviewed-by: Clemens Backes <clemensb@chromium.org> > Cr-Commit-Position: refs/heads/master@{#71808} TBR=jkummerow@chromium.org,clemensb@chromium.org Change-Id: I5050f16fdaf355d178935f523a9bec516302d2a1 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:7748 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2596337Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> Cr-Commit-Position: refs/heads/master@{#71810}
-
- 16 Dec, 2020 4 commits
-
-
Jakob Kummerow authored
This implements support for i31.get_s and i31.get_u. Bug: v8:7748 Change-Id: Icbfddbc2ff46b4eb6bf3edf7b3a794f9797361d4 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2595309 Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> Reviewed-by:
Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#71808}
-
Jakob Kummerow authored
This adds support for the following instructions: ref.eq, array.new_with_rtt, array.new_default_with_rtt, array.get, array.set, array.len. Bug: v8:7748 Change-Id: I93c4a6676acc8b0ac035dd50762be6a1cc545a57 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2593340 Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> Reviewed-by:
Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#71796}
-
Andreas Haas authored
Registers are spilled differently on arm and intel platforms. Additionally, on arm64 registers are spilled with padding. Therefore the code for safepoint information for spilled registers is platform- dependent now. Additionally the alignment of the frame size is done before the out-of-line code now, so that the safepoint indices can be calculated correctly for spilled registers in out-of-line code. Finally, some code was unimplemented on ia32 and arm, which I added now. R=thibaudm@chromium.org Bug: v8:7581, v8:10929 Change-Id: Ia9b824dfc74cafa9ec3cc0d308fb18b485afd715 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2584952 Commit-Queue: Andreas Haas <ahaas@chromium.org> Reviewed-by:
Thibaud Michaud <thibaudm@chromium.org> Cr-Commit-Position: refs/heads/master@{#71786}
-
Zhi An Ng authored
The definition of Shufps is wrong, we are incorrectly passing 0 as the immediate in all cases. No tests broke because we only used Shufps for splats, which has imm8 == 0 anyway. Also, it was using movss, which only moves a single 32-bit. Because we were using it only for f32x4 splat, this ended up being enough (imm8 == 0 meant that we only shuffled the low 32-bit). This is fixed to use movaps, which moves the entire 128-bit register. Also tweak the definition of Shufps to take 4 arguments. `vshufps dst, src1, src2, imm8` shuffles src1 and src2 into dst. `shufps dst, src, imm8`, shuffles dst and src into dst. So `Shufps(dst, src, imm8)` is ambiguous in the AVX case, it could be: 1. vshufps(dst, src, src, imm8), or 2. vshufps(dst, dst, src, imm8) 2. is more likely to be the intended behavior, but it introduces a false dependency on the value of dst. With `Shufps(dst, src1, src2, imm8)`, it is clearer what the behavior should be: 1. shufps(dst, src2, imm8) matches the AVX behavior IFF dst == src1. Change-Id: I60dc4ec868023d28d00f2b09d2c53b82a729bc4d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2591849Reviewed-by:
Clemens Backes <clemensb@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#71775}
-
- 15 Dec, 2020 2 commits
-
-
Jakob Kummerow authored
This adds support for the following instructions: br_on_null, ref.as_non_null, br_on_cast, i31.new Bug: v8:7748 Change-Id: I210b8979327ea0031f89748b71b51abbac10bb8b Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2590041 Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> Reviewed-by:
Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#71773}
-
Jakob Kummerow authored
This is a reland of bee5992a. Fixes a TSan race report by replacing a FlagScope in tests with direct assignment to the flag in question. Original change's description: > [wasm-gc] Initial Liftoff support > > This CL implements Liftoff support for struct.get/set, > struct.new_with_rtt, rtt.canon, and ref.is_null, which > is enough to make the first testcase pass. > > Bug: v8:7748 > Change-Id: Id09e9872d2126127192c852b3cb6d57ff9417582 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2584951 > Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> > Reviewed-by: Clemens Backes <clemensb@chromium.org> > Cr-Commit-Position: refs/heads/master@{#71744} Bug: v8:7748 Change-Id: I17de6803c23a88209102385010dfdf9b88e25ace Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2593254 Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> Reviewed-by:
Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#71762}
-