- 25 Mar, 2021 4 commits
-
-
Ng Zhi An authored
The x64 and ia32 implementations are the same, modulo function signature. x64 has a kScratchDoubleReg available, ia32 takes it as a argument. We standardize on the ia32 function signature and have callers on x64 pass in the scratch register. Bug: v8:11589 Change-Id: I2f75705ed9c618d6e7a7e34ac96b78b772c4944d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2786094Reviewed-by:
Bill Budge <bbudge@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#73676}
-
Leszek Swirski authored
CreateShallowArrayLiteral can fail and bail out to the runtime. We therefore have to pass the literal flags to the builtin, so that the runtime e.g. initialises the AllocationSite correctly. Bug: v8:11420 Change-Id: I57dfbbc202aa2c3b0e7ac01f65ee84f6e3763180 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2786848Reviewed-by:
Maya Lekova <mslekova@chromium.org> Reviewed-by:
Igor Sheludko <ishell@chromium.org> Commit-Queue: Maya Lekova <mslekova@chromium.org> Auto-Submit: Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/master@{#73666}
-
Milad Fa authored
We will need to use both the vector multiply even and odd instructions. Change-Id: I1af3517dc3359d395682e3d661068b429edba8f1 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2785427Reviewed-by:
Junliang Yan <junyan@redhat.com> Commit-Queue: Milad Fa <mfarazma@redhat.com> Cr-Commit-Position: refs/heads/master@{#73662}
-
Sam Parker authored
Add Float32Select and Float64Select as OptionalOperators and insert these, if supported, when handling a Select expression in the wasm graph builder. FlagsContinuation have been modified to support the select operation and code generation support has been added for arm64. This improves the 'Bullet' physics benchmark by ~2-3%. Change-Id: I928c3085c9136ad8baeeb34c71c47c1c8338844c Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2763871 Commit-Queue: Martyn Capewell <martyn.capewell@arm.com> Reviewed-by:
Andreas Haas <ahaas@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#73657}
-
- 24 Mar, 2021 2 commits
-
-
Milad Fa authored
Change-Id: I2fe3b9431fbb22ee045090ba199bfa3b6fd5e19d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2785424Reviewed-by:
Junliang Yan <junyan@redhat.com> Commit-Queue: Milad Fa <mfarazma@redhat.com> Cr-Commit-Position: refs/heads/master@{#73648}
-
Ng Zhi An authored
We now canonicalize earlier in the pipeline, and don't need to worry about non-canonicalized shuffles. Bug: v8:11542,v8:11257 Change-Id: If9f5c44061465be339c98e479fd8c5a437bbd74b Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2778673Reviewed-by:
Bill Budge <bbudge@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#73645}
-
- 23 Mar, 2021 10 commits
-
-
Frank Emrich authored
This is a reland of https://chromium-review.googlesource.com/c/v8/v8/+/2720300. As compared to the original version, it adds --no-stress-flush-bytecode to the const-dict-tracking.js test Original description: This CL is part of a series that implements Turbofan support for property accesses satisfying the following conditions: 1. The holder is a dictionary mode object. 2. The holder is a prototype. 3. The access is a load. This feature will only be enabled if the build flag v8_dict_property_const_tracking is set. This particular CL implements support for the case that the property in question is an accesor, meaning that the given PropertyAccessInfo has kind kAccessorDictionaryProtoConstant. Bug: v8:11248 Change-Id: I896e5dc59821f88abdb7a743e21ca3a700af9db2 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2782280Reviewed-by:
Georg Neis <neis@chromium.org> Commit-Queue: Frank Emrich <emrich@google.com> Cr-Commit-Position: refs/heads/master@{#73617}
-
Santiago Aboy Solanes authored
We can keep the non-atomic accessors for read/write since we set the prototype on the map at initialization. Bug: v8:7790, chromium:1150811 Change-Id: Ied7763c87a71c6aa93099dec3405873ab7419643 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2773052 Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#73615}
-
Nico Hartmann authored
This reverts commit b1883dc3. Reason for revert: https://ci.chromium.org/ui/p/v8/builders/ci/V8%20Mac64%20GC%20Stress/17269/overview Original change's description: > [dict-proto] TF support for constants in dictionary mode protos, pt. 3 > > This CL is part of a series that implements Turbofan support for > property accesses satisfying the following conditions: > 1. The holder is a dictionary mode object. > 2. The holder is a prototype. > 3. The access is a load. > > This feature will only be enabled if the build flag > v8_dict_property_const_tracking is set. > > This particular CL implements support for the case that the property > in question is an accesor, meaning that the given PropertyAccessInfo > has kind kAccessorDictionaryProtoConstant. > > Bug: v8:11248 > Change-Id: Id082107edd45fa91a3f1d96aa9df345a60f46917 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2720300 > Reviewed-by: Georg Neis <neis@chromium.org> > Commit-Queue: Frank Emrich <emrich@google.com> > Cr-Commit-Position: refs/heads/master@{#73607} Bug: v8:11248 Change-Id: Id753354a5ccddd1a05ecf9aec3267f152ef713c5 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2780299Reviewed-by:
Nico Hartmann <nicohartmann@chromium.org> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Nico Hartmann <nicohartmann@chromium.org> Cr-Commit-Position: refs/heads/master@{#73612}
-
Frank Emrich authored
This CL is part of a series that implements Turbofan support for property accesses satisfying the following conditions: 1. The holder is a dictionary mode object. 2. The holder is a prototype. 3. The access is a load. This feature will only be enabled if the build flag v8_dict_property_const_tracking is set. This particular CL implements support for the case that the property in question is an accesor, meaning that the given PropertyAccessInfo has kind kAccessorDictionaryProtoConstant. Bug: v8:11248 Change-Id: Id082107edd45fa91a3f1d96aa9df345a60f46917 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2720300Reviewed-by:
Georg Neis <neis@chromium.org> Commit-Queue: Frank Emrich <emrich@google.com> Cr-Commit-Position: refs/heads/master@{#73607}
-
Manos Koukoutos authored
A late optimization step is only needed if Allocate operators get expanded in MemoryOptimization, which is not the case for Webassembly. Bug: v8:11510 Change-Id: I0e1af9922704d6a51f1257861ecc1e8a8faccc72 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2780295 Commit-Queue: Manos Koukoutos <manoskouk@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#73606}
-
Manos Koukoutos authored
This is a workaround for not having escape analysis for wasm (machine-level) turbofan graphs. Additional change: Move IsFreshObject to NodeProperties. Bug: v8:11510 Change-Id: Ibd63f4352adaa58a25f07e025c9a2c395dc669b4 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2773345Reviewed-by:
Georg Neis <neis@chromium.org> Commit-Queue: Manos Koukoutos <manoskouk@chromium.org> Cr-Commit-Position: refs/heads/master@{#73604}
-
Frank Emrich authored
This CL is part of a series that implements Turbofan support for property accesses satisfying the following conditions: 1. The holder is a dictionary mode object. 2. The holder is a prototype. 3. The access is a load. This feature will only be enabled if the build flag v8_dict_property_const_tracking is set. This particular CL implements support for the case that the property in question is a data property, meaning that the given PropertyAccessInfo has kind kDataDictionaryProtoConstant. Support for accessor properties is added in a separated CL. Bug: v8:11248 Change-Id: I8794127d08c3d3aed6ec2a3eb19c4c82bdf2d1df Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2718229 Commit-Queue: Frank Emrich <emrich@google.com> Reviewed-by:
Georg Neis <neis@chromium.org> Reviewed-by:
Marja Hölttä <marja@chromium.org> Cr-Commit-Position: refs/heads/master@{#73603}
-
Frank Emrich authored
This CL adds: a) Helper macros that access the meta table, used in follow-up CLs b) Infrastructure for building efficient accesses to the meta table Bug: v8:11330 Change-Id: I5494c3048a4f82f21871437dfe367d6a456c8257 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2773004 Commit-Queue: Frank Emrich <emrich@google.com> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Santiago Aboy Solanes <solanes@chromium.org> Reviewed-by:
Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/master@{#73602}
-
Nico Hartmann authored
This reverts commit c85b7a44. This reland fixes missing serialization of objects stored in CallHandlerInfo::data by adding necessary handling of these objects in FunctionTemplateInfoRef::SerializeCallCode when running with direct heap access. Drive-by: Remove declaration of CallHandlerInfoRef::Serialize, which did not have a definition. Original change's description: > [TurboFan] Move FunctionTemplateInfo to never serialized > > This CL moves FunctionTemplateInfo to the list of never serialized > objects, allowing direct heap reads. To make this threadsafe, the CL: > - adds necessary atomic (relaxed/acquire-release) operations to the > accessors of FunctionTemplateInfo. > - changes FunctionTemplateInfoRef::LookupHolderOfExpectedType to be > usable from the background thread (e.g. no handle construction) with > the caveat of skipping optimization in some cases where necessary > JSObjects are not serialized. > > Drive-by: Add missing serialization of objects possibly reachable > through CallHandlerInfo::data. > > Bug: v8:7790 > Change-Id: I49cf4f328ecfab368dff9076fde8f5783ead3246 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2679687 > Reviewed-by: Ross McIlroy <rmcilroy@chromium.org> > Reviewed-by: Ulan Degenbaev <ulan@chromium.org> > Reviewed-by: Georg Neis <neis@chromium.org> > Commit-Queue: Nico Hartmann <nicohartmann@chromium.org> > Cr-Commit-Position: refs/heads/master@{#73364} Bug: v8:7790, chromium:1188563 Change-Id: Ib43f1eaf0592d2565292e86dea5acfc41a58f637 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2773807Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Commit-Queue: Nico Hartmann <nicohartmann@chromium.org> Cr-Commit-Position: refs/heads/master@{#73599}
-
Manos Koukoutos authored
LoadImmutable represents a load from a position in memory that is known to be immutable, e.g. an immutable IsolateRoot or an immutable field of a WasmInstanceObject. Because the returned value cannot change through the execution of a function, LoadImmutable is a pure operator and does not have effect or control edges. This will allow more aggressive optimizations of loads of fields of the Isolate and Instance that are known to be immutable. Requires that the memory in question has been initialized at function start even through inlining. Note: We may reconsider this approach once we have escape analysis for wasm, and replace it with immutable load/initialize operators that live inside the effect chain and are less restriced. Bug: v8:11510 Change-Id: I5e8e4f27d7008f39f01175ffa95a9c531ba63e66 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2775568Reviewed-by:
Andreas Haas <ahaas@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Commit-Queue: Manos Koukoutos <manoskouk@chromium.org> Cr-Commit-Position: refs/heads/master@{#73594}
-
- 22 Mar, 2021 8 commits
-
-
Frank Emrich authored
This fixes a linking error introduced by CL https://chromium-review.googlesource.com/c/v8/v8/+/2757427 Tbr: solanes@chromium.org Change-Id: I8214218d29013d1a475a52044bc394d950211a6b Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2780291Reviewed-by:
Igor Sheludko <ishell@chromium.org> Commit-Queue: Igor Sheludko <ishell@chromium.org> Commit-Queue: Frank Emrich <emrich@google.com> Cr-Commit-Position: refs/heads/master@{#73584}
-
Ng Zhi An authored
When swizzle is called with a v128.const node, we can check that the indices are either all in bounds, or if they are out of bounds the top bit of each byte is set. This will match exactly pshufb behavior, and so we can omit the paddusb (and getting external reference). Bug: v8:10992 Change-Id: I5479a9eb92ebcfc12bedff5efd3e72bb4a43ff40 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2766222Reviewed-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@{#73583}
-
Frank Emrich authored
This CL adds a) swiss-hash-table-helpers.tq, which contains Torque counterparts for the C++ code in swiss-hash-table-helpers.h. b) various helpers required for that, including adding several CSA integer operations to base.tq. Bug: v8:11330 Change-Id: I6f6faf742334b5d107e84364ed793ad856d1cda1 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2757427Reviewed-by:
Santiago Aboy Solanes <solanes@chromium.org> Reviewed-by:
Igor Sheludko <ishell@chromium.org> Commit-Queue: Frank Emrich <emrich@google.com> Cr-Commit-Position: refs/heads/master@{#73580}
-
Milad Fa authored
Change-Id: I88af87b611415753d1063d0b203f3c846fdecd57 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2778082Reviewed-by:
Junliang Yan <junyan@redhat.com> Commit-Queue: Milad Fa <mfarazma@redhat.com> Cr-Commit-Position: refs/heads/master@{#73579}
-
Deepti Gandluri authored
Removing prefetch operations as per the vote in the github issue: https://github.com/WebAssembly/simd/pull/352 Bug:v8:11168 Change-Id: Ia72684e68ce886f8f26a7d3b5bea601be416dfab Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2771758Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Reviewed-by:
Maya Lekova <mslekova@chromium.org> Reviewed-by:
Zhi An Ng <zhin@chromium.org> Commit-Queue: Deepti Gandluri <gdeepti@chromium.org> Cr-Commit-Position: refs/heads/master@{#73578}
-
Santiago Aboy Solanes authored
The instance type is set before setting the map inside an Object. It is relaxed and not non-atomic to prevent a false positive TSAN failure (see https://chromium-review.googlesource.com/c/v8/v8/+/2682641). Bug: v8:7790 Change-Id: Iddd28ffb06b5a882e77c4bf88bf8580df792f198 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2773042Reviewed-by:
Georg Neis <neis@chromium.org> Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org> Cr-Commit-Position: refs/heads/master@{#73570}
-
Milad Fa authored
Change-Id: Icd46c44519a7cf524eba8a9ee3affdfb8f589bde Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2775716Reviewed-by:
Junliang Yan <junyan@redhat.com> Commit-Queue: Milad Fa <mfarazma@redhat.com> Cr-Commit-Position: refs/heads/master@{#73564}
-
Manos Koukoutos authored
This is a more canonical type name, and is in line with {kVoidCode}. Change-Id: Iaae9524b6fb6ecaafd63ce81cf30e3d01ca3e525 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2775565 Commit-Queue: Manos Koukoutos <manoskouk@chromium.org> Reviewed-by:
Clemens Backes <clemensb@chromium.org> Reviewed-by:
Simon Zünd <szuend@chromium.org> Cr-Commit-Position: refs/heads/master@{#73557}
-
- 19 Mar, 2021 9 commits
-
-
Ng Zhi An authored
On SSE: - use movaps (instead of movapd, movdqa) - use movups (instead of movupd, movdqu) - use andps (instead of andpd, pand) - use andnps (instead of andnpd, pandn) - use orps (instead of orpd, por) - use xorps (instead of xorpd, pxor) These *ps instructions are 1 byte shorter than the *pd or p* instructions, and on systems without AVX, and most SSE-level processors don't differentiate between integer and floating point domains. For AVX systems, we use the instructions appropriate for the domain we are operating in. Related to b/175399220. Bug: v8:11384 Change-Id: I332a2e741652f6c063ea1b84b0d9d41226d641ea Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2773787Reviewed-by:
Bill Budge <bbudge@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#73553}
-
Milad Fa authored
Port 7e6fe4ea Original Commit Message: Although the result was unused, these functions used to return a (often random) Node* to satisfy old restrictions of graph-builder-interface. Now that these restrictions are lifted, we can type them properly as {void}. R=manoskouk@chromium.org, joransiu@ca.ibm.com, junyan@redhat.com, midawson@redhat.com BUG= LOG=N Change-Id: Iabcc889af26ddb2325530dc78d15f5a8f4667387 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2775570 Commit-Queue: Milad Fa <mfarazma@redhat.com> Reviewed-by:
Clemens Backes <clemensb@chromium.org> Reviewed-by:
Manos Koukoutos <manoskouk@chromium.org> Cr-Commit-Position: refs/heads/master@{#73547}
-
Manos Koukoutos authored
Although the result was unused, these functions used to return a (often random) Node* to satisfy old restrictions of graph-builder-interface. Now that these restrictions are lifted, we can type them properly as {void}. Change-Id: I914024240f3005bc8a8636ac33ed4594f5ae5988 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2767218 Commit-Queue: Manos Koukoutos <manoskouk@chromium.org> Reviewed-by:
Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#73544}
-
Clemens Backes authored
If memory64 is enabled, memory.grow should consume and return an i64 instead of i32. This CL implements this for both TurboFan and Liftoff, and adds validation and execution tests at different layers. R=manoskouk@chromium.org Bug: v8:10949 Change-Id: I0b725dbd0d5767bda4609747c1f4aad163c35304 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2773800Reviewed-by:
Manos Koukoutos <manoskouk@chromium.org> Commit-Queue: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#73542}
-
Frank Emrich authored
This CL makes CTZ (count trailing zeros) and POPCOUNT (count set bits), which are optional ops in the raw machine assembler, available in CSA. A fallback exists for the case that they are not available. This CL also adds the 64 bit version of the mandatory CLZ (count leading zeros) op available. Change-Id: I53cd6738b8ede8bd5842a83bb1161299824d39c9 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2742207Reviewed-by:
Nico Hartmann <nicohartmann@chromium.org> Reviewed-by:
Igor Sheludko <ishell@chromium.org> Commit-Queue: Frank Emrich <emrich@google.com> Cr-Commit-Position: refs/heads/master@{#73541}
-
Georg Neis authored
The condition can change between VisitBranch and VisitIf, so VisitIf can't assume that the condition is not yet in the ControlPathConditions list. Thanks Manos! Change-Id: Ic74253b6faf2663cfa5212765d81392cb89d73b9 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2773312Reviewed-by:
Manos Koukoutos <manoskouk@chromium.org> Commit-Queue: Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#73539}
-
Manos Koukoutos authored
This is a reland of a3b1233e Changes compared to original commit: - Use a more canonical way to replace TrapIf/Unless nodes that always trap. This fixes the issue where their outputs were marked dead even if they were Merge/Loop nodes. - Use Throw() over Return() to connect a dangling trap to End(). - Add regression test. Original change's description: > [turbofan] Optimize TrapIf/Unless in BranchElim. and CommonOp-Reducer > > Bug: v8:11510 > Change-Id: I1e8fcb54444e494c7d765ad556d09d954441361f > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2752876 > Commit-Queue: Manos Koukoutos <manoskouk@chromium.org> > Reviewed-by: Georg Neis <neis@chromium.org> > Reviewed-by: Andreas Haas <ahaas@chromium.org> > Cr-Commit-Position: refs/heads/master@{#73468} Bug: v8:11510, chromium:1189454 Change-Id: I1d691a3ea299ed668cff925910ed231aad37cac6 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2772601 Commit-Queue: Manos Koukoutos <manoskouk@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Reviewed-by:
Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/master@{#73537}
-
Jakob Gruber authored
When making inlining decisions in the JSInliningHeuristic, it's possible that a Node is not a candidate on the first visit, but becomes a candidate in later visits due to other node reductions. These later visits should also result in the inlining decision being made. Until now this was prevented by the visit aborting early since the Node was added to the seen_ list on the first (unsuccessful) visit. This CL changes the seen_ insertion to happen only once a positive inlining decision was made. Change-Id: Ide7f6abd3c1d9759d7422fcd5ad9c7daff825795 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2764759 Auto-Submit: Jakob Gruber <jgruber@chromium.org> Commit-Queue: Mythri Alle <mythria@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Reviewed-by:
Mythri Alle <mythria@chromium.org> Cr-Commit-Position: refs/heads/master@{#73533}
-
Santiago Aboy Solanes authored
`has_non_instance_prototype` can be modified in live objects. For the native context's map that we serialize on the background this bit is "set" but it doesn't change value (i.e. it is set to false when it was already false). Bug: v8:7790, v8:11575 Change-Id: I070c0f0e383250d0e3cb92065d1113662976cabf Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2772609 Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org> Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Cr-Commit-Position: refs/heads/master@{#73532}
-
- 18 Mar, 2021 6 commits
-
-
Milad Fa authored
Port d16eefe0 Original Commit Message: We currently canonicalize shuffles in the architecture specific instruction selector. This has the drawback that if we want to pattern match on nodes that have a shuffle as input, they need to individually canonicalize the shuffle. There can also be a subtle bug if we canonicalize the same shuffle node twice (see bug for details). This moves the canonicalization to "construction time", in wasm-compiler, when building the graph. As such, any pattern matches in instruction-selector will only need to deal with canonicalized shuffles. We introduce a new kind of parameter for shuffle nodes, ShuffleParameter, to store the 16 bytes plus a bool indicating if this is a swizzle. A swizzle essentially: inputs to the shuffle are the same or all indices only touch 1 input. We calculate this when canonicalizing, so store this bit of information inside of the node's parameter. We update the tests in x64 to handle special cases where, even though the node's inputs are not swapped (due to canonicalization), they need to be swapped for the specific instruction selected (e.g. palignr). The test data also contains canonicalized shuffles, so we have to manually canonicalize them. R=zhin@chromium.org, joransiu@ca.ibm.com, junyan@redhat.com, midawson@redhat.com BUG= LOG=N Change-Id: I9872fcdaa06739c8972f02d81e77bcbf372126c2 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2773138Reviewed-by:
Junliang Yan <junyan@redhat.com> Commit-Queue: Milad Fa <mfarazma@redhat.com> Cr-Commit-Position: refs/heads/master@{#73512}
-
Thibaud Michaud authored
Live ranges defined by a constant operand normally don't require a spill slot since they can just rematerialize the value from the constant. In the attached issue however, deoptimization adds an explicit slot requirement for a range that is defined by a constant operand. This case is not expected in the register allocator and we eventually hit a DCHECK. This fix allocates a new stack slot during the MeetRegisterConstraints and adds the missing gap move. Drive-by: remove dead method LiveRange::NextSlotPosition. R=sigurds@chromium.org CC=nicohartmann@chromium.org Bug: chromium:1146880 Change-Id: I08fbb890f2f3d9574196989cf3e5ef6232433484 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2563689Reviewed-by:
Sigurd Schneider <sigurds@chromium.org> Commit-Queue: Thibaud Michaud <thibaudm@chromium.org> Cr-Commit-Position: refs/heads/master@{#73510}
-
Ross McIlroy authored
Reduces the overhead of mid-tier optimization without much impact on mid-tier generated code performance. BUG=v8:9684 Change-Id: I81889049f718ec2b18a805b11aab119754466c95 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2772611 Auto-Submit: Ross McIlroy <rmcilroy@chromium.org> Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org> Reviewed-by:
Santiago Aboy Solanes <solanes@chromium.org> Cr-Commit-Position: refs/heads/master@{#73509}
-
Ross McIlroy authored
RepresentationFor is quite hot in MidTierAllocator profiles. To optimize this, instead stash the representation in the VirtualRegisterData and pass that about consistently instead of passing the virtual_register int and having to retrieve both representation and VirtualRegisterData for the vreg multiple times. This improves mid-tier allocation time by ~8% on Octane benchmarks. BUG=v8:9684 Change-Id: Ied01fbdab013c278da022d1df321b08fbfc68a4c Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2768618Reviewed-by:
Santiago Aboy Solanes <solanes@chromium.org> Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> Cr-Commit-Position: refs/heads/master@{#73508}
-
Georgia Kouveli authored
The previous uses of LR here allowed overwriting it with arbitrary addresses that aren't signed. Change this so we never return to an arbitrary LR. This makes a difference even when we replace the RET with a BR, because BR is constrained by BTI, whereas RET isn't. Bug: v8:10026 Change-Id: Ibbf326ccf0cf32f6d9541c7a82108dc0373827df Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2767015Reviewed-by:
Georg Neis <neis@chromium.org> Commit-Queue: Georgia Kouveli <georgia.kouveli@arm.com> Cr-Commit-Position: refs/heads/master@{#73507}
-
Manos Koukoutos authored
This reverts commit a3b1233e. Reason for revert: This approach has multiple issues and we have to reconsider it. Original change's description: > [turbofan] Optimize TrapIf/Unless in BranchElim. and CommonOp-Reducer > > Bug: v8:11510 > Change-Id: I1e8fcb54444e494c7d765ad556d09d954441361f > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2752876 > Commit-Queue: Manos Koukoutos <manoskouk@chromium.org> > Reviewed-by: Georg Neis <neis@chromium.org> > Reviewed-by: Andreas Haas <ahaas@chromium.org> > Cr-Commit-Position: refs/heads/master@{#73468} Bug: v8:11510 Change-Id: Id35bc4ebcb45a617f61993d857ad2291b0287ad6 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2772600 Auto-Submit: Manos Koukoutos <manoskouk@chromium.org> Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Cr-Commit-Position: refs/heads/master@{#73502}
-
- 17 Mar, 2021 1 commit
-
-
Ng Zhi An authored
We currently canonicalize shuffles in the architecture specific instruction selector. This has the drawback that if we want to pattern match on nodes that have a shuffle as input, they need to individually canonicalize the shuffle. There can also be a subtle bug if we canonicalize the same shuffle node twice (see bug for details). This moves the canonicalization to "construction time", in wasm-compiler, when building the graph. As such, any pattern matches in instruction-selector will only need to deal with canonicalized shuffles. We introduce a new kind of parameter for shuffle nodes, ShuffleParameter, to store the 16 bytes plus a bool indicating if this is a swizzle. A swizzle essentially: inputs to the shuffle are the same or all indices only touch 1 input. We calculate this when canonicalizing, so store this bit of information inside of the node's parameter. We update the tests in x64 to handle special cases where, even though the node's inputs are not swapped (due to canonicalization), they need to be swapped for the specific instruction selected (e.g. palignr). The test data also contains canonicalized shuffles, so we have to manually canonicalize them. Bug: v8:11542 Change-Id: I4e78082267bd03d6caedf43d68d81ef3f5f364a8 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2762420Reviewed-by:
Bill Budge <bbudge@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#73495}
-