- 24 Feb, 2021 1 commit
-
-
Ng Zhi An authored
Extract code sequence into macro-assembler for reuse between Liftoff and TurboFan. Bug: v8:11086 Change-Id: I914051dd8126e89f297e892da1b5c1917b47d7f1 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2707763Reviewed-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@{#72987}
-
- 23 Feb, 2021 2 commits
-
-
Ng Zhi An authored
Extract code sequence into macro-assembler for sharing between Liftoff and TurboFan. Bug: v8:11416 Change-Id: I8cdce30db8081f6b6c96cca1cbacd035dfc03de4 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2707768 Commit-Queue: Zhi An Ng <zhin@chromium.org> Reviewed-by: Deepti Gandluri <gdeepti@chromium.org> Reviewed-by: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#72985}
-
Ng Zhi An authored
This is a reland of 0ef2eea7 The fixes are adding missing SSE4_1 scopes to ia32. I realize the x64 codegen is missing the scopes to, so fix them as well. Original change's description: > [wasm-simd][ia32] Optimize some signed integer widening sequences > > Optimize ia32 code sequences. This is the same sequences as x64, which > have been optimized based on supported extensions. > > Bug: v8:11464 > Change-Id: I10396a928a431cdd2de9b22bb8a395bc0adb4694 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2704897 > Reviewed-by: Deepti Gandluri <gdeepti@chromium.org> > Commit-Queue: Zhi An Ng <zhin@chromium.org> > Cr-Commit-Position: refs/heads/master@{#72926} Bug: v8:11464 Change-Id: Ib66a63de26bcc3bb3626922b642fe5df6bff8bdb Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2713211Reviewed-by: Deepti Gandluri <gdeepti@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#72983}
-
- 22 Feb, 2021 3 commits
-
-
Zhi An Ng authored
This reverts commit 0ef2eea7. Reason for revert: broke noavx https://ci.chromium.org/ui/p/v8/builders/ci/V8%20Linux%20-%20debug/34035/overview Original change's description: > [wasm-simd][ia32] Optimize some signed integer widening sequences > > Optimize ia32 code sequences. This is the same sequences as x64, which > have been optimized based on supported extensions. > > Bug: v8:11464 > Change-Id: I10396a928a431cdd2de9b22bb8a395bc0adb4694 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2704897 > Reviewed-by: Deepti Gandluri <gdeepti@chromium.org> > Commit-Queue: Zhi An Ng <zhin@chromium.org> > Cr-Commit-Position: refs/heads/master@{#72926} Bug: v8:11464 Change-Id: Ibeaf35b5f6aa75d10e24f1fb57843dbc0791d37a No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2713208 Auto-Submit: Zhi An Ng <zhin@chromium.org> Reviewed-by: Bill Budge <bbudge@chromium.org> Commit-Queue: Bill Budge <bbudge@chromium.org> Cr-Commit-Position: refs/heads/master@{#72929}
-
Ng Zhi An authored
Optimize ia32 code sequences. This is the same sequences as x64, which have been optimized based on supported extensions. Bug: v8:11464 Change-Id: I10396a928a431cdd2de9b22bb8a395bc0adb4694 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2704897Reviewed-by: Deepti Gandluri <gdeepti@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#72926}
-
Ng Zhi An authored
Extract code sequence into macro-assembler for reuse between Liftoff and TurboFan. Similar to x64, 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: I3f855da25493941d158383020fbcafee8d18095f Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2698066 Commit-Queue: Zhi An Ng <zhin@chromium.org> Reviewed-by: Deepti Gandluri <gdeepti@chromium.org> Reviewed-by: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#72925}
-
- 17 Feb, 2021 1 commit
-
-
Toon Verwaest authored
This threads through a JumpMode kJump/kReturn to JumpCodeObject so we can use a return instruction to jump instead by first pushing the jump target and then using a return instruction. Bug: v8:11429 Change-Id: I8658ed9c5bade28bd6efc76e26fd92bad22b3c68 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2697196 Commit-Queue: Toon Verwaest <verwaest@chromium.org> Commit-Queue: Leszek Swirski <leszeks@chromium.org> Reviewed-by: Leszek Swirski <leszeks@chromium.org> Auto-Submit: Toon Verwaest <verwaest@chromium.org> Cr-Commit-Position: refs/heads/master@{#72804}
-
- 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: I48f354c5ff86809bb3ddc38eca6dc8990b9b7d61 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2683208 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@{#72641}
-
Ng Zhi An authored
Extract i8x16.popcnt implementation into a macro-assembler function, and reuse it in Liftoff. We need an additional temporary XMMRegister whose lifetimes overlap with dst and src, so make sure to pin those 2 when getting an unused XMMRegister. Bug: v8:11002 Change-Id: I13400b139add6f12316b3f398a796e6bf5a1ea7f Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2676921 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@{#72615}
-
- 05 Feb, 2021 1 commit
-
-
Bill Budge authored
- Reworks the code structure to break out 3 major cases: Immediate, MemoryOperand, and LocationOperand. - InstructionSelector passes an additional immediate operand, the push size in bytes, so we can generate correct code for the Immediate case. Bug: v8:9198 Change-Id: I86cd41826150aa84b158fdbb1d3e8f3e93755119 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2673273 Commit-Queue: Bill Budge <bbudge@chromium.org> Reviewed-by: Zhi An Ng <zhin@chromium.org> Reviewed-by: Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/master@{#72553}
-
- 03 Feb, 2021 1 commit
-
-
Ng Zhi An authored
Bug: v8:11347,v8:11348 Change-Id: I47ba950b80197d1d769d93aa68266131be9bf31d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2666146Reviewed-by: Deepti Gandluri <gdeepti@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#72518}
-
- 26 Jan, 2021 1 commit
-
-
Ng Zhi An authored
Factor out the v128.load32_lane code sequence into macro-assembler functions to be reused by Liftoff. Bug: v8:10975 Change-Id: I9f53b5d98dfd610c4feafb087f00e6fc6dfca8d4 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2645467 Commit-Queue: Zhi An Ng <zhin@chromium.org> Reviewed-by: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#72334}
-
- 20 Jan, 2021 1 commit
-
-
Zhi An Ng authored
Prototype load lane instructions on ia32 Liftoff. We generalize the pinsr* macro-assembler functions to take an extra input, following the 3 operand + 1 imm form of the AVX instructions. Bug: v8:10975 Change-Id: I3fa10d149b011b62edd58372148446b663f3dc3c Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2619417Reviewed-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@{#72179}
-
- 19 Jan, 2021 1 commit
-
-
Sathya Gunasekaran authored
This will allow us optimize the protector cell checks in the fast path from checking against the function object in every context to just doing a range check against the instance type. This patch adds new instance types for constructor functions that require such protector cell checks. Bug: v8:11256 Change-Id: Iea722f9c6326dfa470149dd02e689a23942097f4 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2595442Reviewed-by: Mythri Alle <mythria@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Reviewed-by: Nico Hartmann <nicohartmann@chromium.org> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Camillo Bruni <cbruni@chromium.org> Commit-Queue: Sathya Gunasekaran <gsathya@chromium.org> Cr-Commit-Position: refs/heads/master@{#72146}
-
- 18 Jan, 2021 1 commit
-
-
Victor Gomes authored
Removes: - v8_disable_arguments_adaptor GN flag - ArgumentsAdaptorTrampoline - ArgumentsAdaptorFrame class Change-Id: I382ebe6c25c3c172bee5df3e86e762fca10fa392 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2622911Reviewed-by: Toon Verwaest <verwaest@chromium.org> Reviewed-by: Igor Sheludko <ishell@chromium.org> Reviewed-by: Andreas Haas <ahaas@chromium.org> Reviewed-by: Georg Neis <neis@chromium.org> Commit-Queue: Victor Gomes <victorgomes@chromium.org> Cr-Commit-Position: refs/heads/master@{#72133}
-
- 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: I8d8132f4cf3386b28cdf5350fde2e076428d68c6 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2621860 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@{#72067}
-
Zhi An Ng authored
Implement these 4 instructions for ia32 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: Ib5c6cbf6d4a39ef298298b75516f5221cb8ec249 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2621863 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@{#72059}
-
- 11 Jan, 2021 1 commit
-
-
Zhi An Ng authored
This allows us to reuse this optimized code sequence in Liftoff. This is similar to the x64 implementation, except that the macro-assembler function takes an additional scratch register. Change-Id: Ieaa5899cd1be65abee1c6e0c0908a357777afcd9 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2610510Reviewed-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@{#71996}
-
- 07 Jan, 2021 1 commit
-
-
Zhi An Ng authored
movaps is 1 byte shorter than movapd and is equivalent. Fixed: v8:11116 Change-Id: Ibf32ad5428ac3d55d055f8725fbf2e96433fb97a Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2601878 Commit-Queue: Zhi An Ng <zhin@chromium.org> Reviewed-by: Bill Budge <bbudge@chromium.org> Cr-Commit-Position: refs/heads/master@{#71933}
-
- 05 Jan, 2021 1 commit
-
-
Zhi An Ng authored
This will make these functions usable from Liftoff when we later implement extended multiply instructions in Liftoff. This is similar to the x64 versions, except that it takes a scratch register as a parameter. Bug: v8:11262 Change-Id: Ief3d8cdde59da9e05a468286315bcae6d13863d9 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2603768Reviewed-by: Bill Budge <bbudge@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#71907}
-
- 17 Dec, 2020 1 commit
-
-
Zhi An Ng authored
We can have more optimizations for this instruction, they leave some junk in the top lanes of dst, but that doesn't matter: - when lane is 1: we use movshdup, this is 4 bytes long - when lane is 2: use movhlps, this is 3 bytes long - otherwise use shufps (4 bytes) or pshufd (5 bytes) All of which are better than insertps (6 bytes). Change-Id: I0e524431d1832e297e8c8bb418d42382d93fa691 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2591850 Commit-Queue: Zhi An Ng <zhin@chromium.org> Reviewed-by: Bill Budge <bbudge@chromium.org> Cr-Commit-Position: refs/heads/master@{#71813}
-
- 16 Dec, 2020 4 commits
-
-
Ross McIlroy authored
This is a reland of b2a611d8 Original change's description: > [Turboprop] Move dynamic check maps immediate args to deopt exit. > > Rather than loading the immediate arguments required by the > dynamic check maps builtin into registers in the fast-path, > instead insert them into the instruction stream in the deopt > exit and have the builtin load them into registers itself. > > BUG=v8:10582 > > Change-Id: I66716570b408501374eed8f5e6432df64c6deb7c > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2589736 > Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> > Reviewed-by: Sathya Gunasekaran <gsathya@chromium.org> > Reviewed-by: Tobias Tebbi <tebbi@chromium.org> > Cr-Commit-Position: refs/heads/master@{#71790} TBR=tebbi@chromium.org,gsathya@chromium.org Bug: v8:10582 Change-Id: Ieda0295ee135bff983c67c3f04bb47115f0a2739 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2595311Reviewed-by: Ross McIlroy <rmcilroy@chromium.org> Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> Cr-Commit-Position: refs/heads/master@{#71803}
-
Clemens Backes authored
This reverts commit b2a611d8. Reason for revert: Several failures on https://ci.chromium.org/ui/p/v8/builders/ci/V8%20Linux%20-%20arm64%20-%20sim%20-%20CFI/3743/overview Original change's description: > [Turboprop] Move dynamic check maps immediate args to deopt exit. > > Rather than loading the immediate arguments required by the > dynamic check maps builtin into registers in the fast-path, > instead insert them into the instruction stream in the deopt > exit and have the builtin load them into registers itself. > > BUG=v8:10582 > > Change-Id: I66716570b408501374eed8f5e6432df64c6deb7c > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2589736 > Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> > Reviewed-by: Sathya Gunasekaran <gsathya@chromium.org> > Reviewed-by: Tobias Tebbi <tebbi@chromium.org> > Cr-Commit-Position: refs/heads/master@{#71790} TBR=rmcilroy@chromium.org,gsathya@chromium.org,tebbi@chromium.org Change-Id: I4c56bee156ffcea8de0aeaff9ac1bf03e03134c9 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:10582 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2595308Reviewed-by: Clemens Backes <clemensb@chromium.org> Commit-Queue: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#71793}
-
Ross McIlroy authored
Rather than loading the immediate arguments required by the dynamic check maps builtin into registers in the fast-path, instead insert them into the instruction stream in the deopt exit and have the builtin load them into registers itself. BUG=v8:10582 Change-Id: I66716570b408501374eed8f5e6432df64c6deb7c Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2589736 Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> Reviewed-by: Sathya Gunasekaran <gsathya@chromium.org> Reviewed-by: Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#71790}
-
Thibaud Michaud authored
CallRecordWriteStub is used in a background compile thread for JS-to-Wasm wrapper compilation, so it should avoid accessing the isolate. Call the builtin using CallBuiltin which does not require a Handle<Code> object and instead gets the call target directly from the embedded data. R=clemensb@chromium.org Bug: chromium:1146813 Change-Id: I4ee59084e4184f2e9039208e4e6db43482cefde6 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2593333Reviewed-by: Clemens Backes <clemensb@chromium.org> Commit-Queue: Thibaud Michaud <thibaudm@chromium.org> Cr-Commit-Position: refs/heads/master@{#71785}
-
- 14 Dec, 2020 2 commits
-
-
Zhi An Ng authored
Drive-by fix IWYU for instruction-scheduler-ia32.cc. Bug: v8:11217,v8:7490 Change-Id: I7ae4fdaf3c48274e9421e6b31897ad0ea1464876 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2585254Reviewed-by: Bill Budge <bbudge@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#71750}
-
Zhi An Ng authored
Drive-by cleanup: IWYU for macro-assembler-ia32.cc. IWYU added src/heap/basic-memory-chunk.h which failed a presubmit, so I updated src/DEPS to allow for including it. Bug: v8:11217,v8:7490 Change-Id: I63662bfb2b34e354e94f6052edfcb92f1341da58 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2583675Reviewed-by: Bill Budge <bbudge@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#71729}
-
- 04 Dec, 2020 2 commits
-
-
Zhi An Ng authored
This reverts commit 716dae3a. Reason for revert: broke noavx build https://ci.chromium.org/ui/p/v8/builders/ci/V8%20Linux%20-%20debug/33124/overview Original change's description: > [wasm-simd][ia32] Prototype sign select > > The implementation is the same as on x64. > > Bug: v8:10983 > Change-Id: I2654ce4a627ca5cc6c759051ab9034c528d9f25a > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2567194 > Reviewed-by: Bill Budge <bbudge@chromium.org> > Commit-Queue: Zhi An Ng <zhin@chromium.org> > Cr-Commit-Position: refs/heads/master@{#71606} TBR=bbudge@chromium.org,zhin@chromium.org Change-Id: I6408268945e41ef7acf5938ac989bab9824df185 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:10983 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2573996Reviewed-by: Zhi An Ng <zhin@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#71607}
-
Zhi An Ng authored
The implementation is the same as on x64. Bug: v8:10983 Change-Id: I2654ce4a627ca5cc6c759051ab9034c528d9f25a Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2567194Reviewed-by: Bill Budge <bbudge@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#71606}
-
- 02 Dec, 2020 2 commits
-
-
Zhi An Ng authored
Bug: v8:11215 Change-Id: If6e9cb252176230815c7509ecf2a6e3e2269e601 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2567532Reviewed-by: Bill Budge <bbudge@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#71549}
-
Zhi An Ng authored
This is a reland of a69b7ef2 Original change's description: > [wasm-simd][ia32] Prototype store lane > > Prototype v128.store{8,16,32,64}_lane on IA32. > > Drive by fix for wrong disassembly of movlps. > > Also added more test cases for StoreLane, test for more alignment and offset. > > Bug: v8:10975 > Change-Id: I0e16f1b5be824b6fc818d02d0fd84ebc0dff4174 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2557068 > Commit-Queue: Zhi An Ng <zhin@chromium.org> > Reviewed-by: Bill Budge <bbudge@chromium.org> > Cr-Commit-Position: refs/heads/master@{#71511} Bug: v8:10975 Change-Id: I2c9b219b9ab9d78a83d1bf32ad1271d717471c19 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2567317Reviewed-by: Bill Budge <bbudge@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#71547}
-
- 01 Dec, 2020 3 commits
-
-
Ross McIlroy authored
In order to reduce the codegen size of dynamic map checks, add the ability to have an eager with resume deopt point, which can call a given builitin to perform a more detailed check than can be done in codegen, and then either deoptimizes itself (as if the calling code had performed an eager deopt) or resumes execution in the calling code after the check. In addition, support for adding extra arguments to a deoptimization continuation is added to enable us to pass the necessary arguments to the DynamicMapChecks builtin. Finally, a trampoline is added to the DynamicMapChecks which saves the registers that might be clobbered by that builtin, to avoid having to save them in the generated code. This trampoline also performs the deoptimization based on the result of the DynamicMapChecks builtin. In order to ensure both the trampoline and DynamicMapChecks builtin have the same call interface, and to limit the number of registers that need saving in the trampoline, the DynamicMapChecks builtin is moved to be a CSA builtin with a custom CallInterfaceDescriptor, that calls an exported Torque macro that implements the actual functionality. All told, this changes the codegen for a monomorphic dynamic map check from: movl rbx,<expected_map> cmpl [<object>-0x1],rbx jnz <deferred_call> resume_point: ... deferred_call: <spill registers> movl rax,<slot> movq rbx,<object> movq rcx,<handler> movq r10,<DynamicMapChecks> call r10 cmpq rax,0x0 jz <restore_regs> cmpq rax,0x1 jz <deopt_point_1> cmpq rax,0x2 jz <deopt_point_2> int3l restore_regs: <restore_regs> jmp <resume_point> ... deopt_point_1: call Deoptimization_Eager deopt_point_2: call Deoptimization_Bailout To: movl rax,<slot> movl rcx,<expected_map> movq rdx,<handler> cmpl [<object>-0x1],rcx jnz <deopt_point> resume_point: ... deopt_point: call DynamicMapChecksTrampoline jmp <resume_point> BUG=v8:10582 Change-Id: Ica4927b9acc963b9b73dc62d9379a7815335650f Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2560197 Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> Reviewed-by: Georg Neis <neis@chromium.org> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#71545}
-
Zhi An Ng authored
This reverts commit a69b7ef2. Reason for revert: Broke msvc https://ci.chromium.org/p/v8/builders/ci/V8%20Win64%20-%20msvc/15975? Original change's description: > [wasm-simd][ia32] Prototype store lane > > Prototype v128.store{8,16,32,64}_lane on IA32. > > Drive by fix for wrong disassembly of movlps. > > Also added more test cases for StoreLane, test for more alignment and offset. > > Bug: v8:10975 > Change-Id: I0e16f1b5be824b6fc818d02d0fd84ebc0dff4174 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2557068 > Commit-Queue: Zhi An Ng <zhin@chromium.org> > Reviewed-by: Bill Budge <bbudge@chromium.org> > Cr-Commit-Position: refs/heads/master@{#71511} TBR=bbudge@chromium.org,zhin@chromium.org Change-Id: Ic9386ea1254c1e0d9b42e92723b1a951fafe3a8b No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:10975 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2567315Reviewed-by: Zhi An Ng <zhin@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#71512}
-
Zhi An Ng authored
Prototype v128.store{8,16,32,64}_lane on IA32. Drive by fix for wrong disassembly of movlps. Also added more test cases for StoreLane, test for more alignment and offset. Bug: v8:10975 Change-Id: I0e16f1b5be824b6fc818d02d0fd84ebc0dff4174 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2557068 Commit-Queue: Zhi An Ng <zhin@chromium.org> Reviewed-by: Bill Budge <bbudge@chromium.org> Cr-Commit-Position: refs/heads/master@{#71511}
-
- 10 Nov, 2020 1 commit
-
-
Toon Verwaest authored
- don't restore the context register after InvokeFunction unless we need to for throwing exceptions. - manually manage the frame to improve code layout for the fast path Change-Id: Ibccb3bf604085bd470c4279d0348edcf6f18d796 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2523196 Commit-Queue: Toon Verwaest <verwaest@chromium.org> Reviewed-by: Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/master@{#71094}
-
- 04 Nov, 2020 1 commit
-
-
Victor Gomes authored
This is a reland of adceb459 Redesign test to not be OS dependent. Original change's description: > [x64][ia32] Add stack overflow check in InvokePrologue > > In case of no arguments adaptor frame, we massage the arguments in InvokePrologue pushing undefined objects if the actual argument count is below the parameter count. This CL adds a stack overflow check before pushing these undefined objects to the stack. > > Change-Id: I2a88bf6fdfd17958f6f6884143a67d50ea842fd2 > Bug: v8:10201 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2491039 > Reviewed-by: Igor Sheludko <ishell@chromium.org> > Reviewed-by: Georg Neis <neis@chromium.org> > Commit-Queue: Victor Gomes <victorgomes@chromium.org> > Cr-Commit-Position: refs/heads/master@{#70927} Bug: v8:10201 Change-Id: Ifab3413b748cdf3bb998a5080cd1fcb3b67a737b Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2517921Reviewed-by: Igor Sheludko <ishell@chromium.org> Reviewed-by: Georg Neis <neis@chromium.org> Commit-Queue: Victor Gomes <victorgomes@chromium.org> Cr-Commit-Position: refs/heads/master@{#70973}
-
- 02 Nov, 2020 3 commits
-
-
Victor Gomes authored
This reverts commit adceb459. Reason for revert: - ConcurrentAllocationInLargeSpace fails in verify CSA bot: https://ci.chromium.org/p/v8/builders/ci/V8%20Linux64%20-%20verify%20csa/20547 - New test fail on Windows bot: https://ci.chromium.org/p/v8/builders/ci/V8%20Win32/29622 Original change's description: > [x64][ia32] Add stack overflow check in InvokePrologue > > In case of no arguments adaptor frame, we massage the arguments in InvokePrologue pushing undefined objects if the actual argument count is below the parameter count. This CL adds a stack overflow check before pushing these undefined objects to the stack. > > Change-Id: I2a88bf6fdfd17958f6f6884143a67d50ea842fd2 > Bug: v8:10201 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2491039 > Reviewed-by: Igor Sheludko <ishell@chromium.org> > Reviewed-by: Georg Neis <neis@chromium.org> > Commit-Queue: Victor Gomes <victorgomes@chromium.org> > Cr-Commit-Position: refs/heads/master@{#70927} TBR=neis@chromium.org,ishell@chromium.org,victorgomes@chromium.org Change-Id: I7371e1603659ce512a39c0c0a8bb01baf7b916e0 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:10201 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2514505Reviewed-by: Victor Gomes <victorgomes@chromium.org> Commit-Queue: Victor Gomes <victorgomes@chromium.org> Cr-Commit-Position: refs/heads/master@{#70928}
-
Victor Gomes authored
In case of no arguments adaptor frame, we massage the arguments in InvokePrologue pushing undefined objects if the actual argument count is below the parameter count. This CL adds a stack overflow check before pushing these undefined objects to the stack. Change-Id: I2a88bf6fdfd17958f6f6884143a67d50ea842fd2 Bug: v8:10201 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2491039Reviewed-by: Igor Sheludko <ishell@chromium.org> Reviewed-by: Georg Neis <neis@chromium.org> Commit-Queue: Victor Gomes <victorgomes@chromium.org> Cr-Commit-Position: refs/heads/master@{#70927}
-
Zhi An Ng authored
Have a new macro-assembler function Pshufb that does not require dst and src to be equal, since the vpshufb can have 3 operands. On SEE, if dst and src are not equal, emit a movapd(dst, src). This saves a move on AVX. Small cleanup to use kScratchDoubleReg2 instead of requesting for a tmp (x64). Bug: v8:9561 Change-Id: I131ad0456b272da857350762582cac1fb240ae40 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2513868 Commit-Queue: Zhi An Ng <zhin@chromium.org> Reviewed-by: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#70917}
-
- 22 Oct, 2020 1 commit
-
-
Georg Neis authored
This reverts half of commit 8f0ab471. Reason for revert: some performance regressions, possibly due to 'leave' needing MSROM on some microarchitectures. The half that is not reverted is the removal of 'enter'. Original change's description: > [ia32,x64] Make more use of the 'leave' instruction > > It is a little shorter and cheaper[1] than the equivalent > "mov sp,bp; pop bp". > > Also remove support for the 'enter' instruction, since > - it is unused, > - it is neither shorter nor cheaper than the corresponding > push and mov (in fact more expensive[1]), and > - our disassembler doesn't support it. > > [1] See https://www.agner.org/optimize/instruction_tables.pdf > > Change-Id: I6c99c2f3e53081aea55445a54e18eaf45baa79c2 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2482822 > Commit-Queue: Georg Neis <neis@chromium.org> > Reviewed-by: Victor Gomes <victorgomes@chromium.org> > Cr-Commit-Position: refs/heads/master@{#70660} TBR=neis@chromium.org,victorgomes@chromium.org Bug: chromium:1141069 # Not skipping CQ checks because original CL landed > 1 day ago. Change-Id: I5c9ad64ee06b71c93eff256044ce49d1523737fb Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2492327 Commit-Queue: Georg Neis <neis@chromium.org> Reviewed-by: Victor Gomes <victorgomes@chromium.org> Reviewed-by: Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#70718}
-