- 18 Aug, 2022 1 commit
-
-
Shu-yu Guo authored
AcqRel barriers are currently unused and will be used by the shared value barrier in a future CL. Bug: v8:12547 Change-Id: I8ae40b9e17f007441125dfa5d0a04f46565785fd Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3827319Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Commit-Queue: Shu-yu Guo <syg@chromium.org> Cr-Commit-Position: refs/heads/main@{#82568}
-
- 13 Jul, 2022 1 commit
-
-
Jacob Abraham authored
Implements an initial prototype of the Wasm Trace proposal. A custom section containing offsets to functions is decoded into trace instructions that are inserted into the function. In Liftoff, these are directly inserted. In TurboFan, these are added as StackEffect's, this is a work in progress. Traces will only be decoded and added when a flag is given to V8, currently "--experimental-wasm-instruction-tracing". If a trace is ever not valid or an error occurs, it is safe to just throw them away. Code Metadata Tool Convention: https://github.com/WebAssembly/tool-conventions/blob/main/CodeMetadata.md Design Doc: https://docs.google.com/document/d/1739a_LXbavBnek7pa0uqhHOCz8IJ56mn2C2Yvbssvkg/edit?usp=sharing Wasm Trace Proposal: https://github.com/WebAssembly/instrument-tracing Bug: chromium:1090122, chromium:1252113 Change-Id: Id4690d8deca482ff0e863761668ffabca159bd29 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3386604 Commit-Queue: Clemens Backes <clemensb@chromium.org> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Reviewed-by:
Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/main@{#81699}
-
- 05 Jul, 2022 2 commits
-
-
Maya Lekova authored
This is a reland of commit 84e078c6. It fixes an undefined behaviour and guards against NaNs in d8-test.cc. Original change's description: > [fastcall] Support EnforceRange annotation > > This CL implements checks in case EnforceRange is requested for a > given parameter by using TryTruncate* operators. It implements 2 such > truncations on x64 and arm64 - TryTruncateFloat64ToInt32 and > TryTruncateFloat64ToUint32. > > Bug: chromium:1052746 > Change-Id: I32f34d9dc1265af568cc576663620a8f7f8245f6 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3721618 > Reviewed-by: Toon Verwaest <verwaest@chromium.org> > Reviewed-by: Tobias Tebbi <tebbi@chromium.org> > Commit-Queue: Maya Lekova <mslekova@chromium.org> > Cr-Commit-Position: refs/heads/main@{#81512} Bug: chromium:1052746, chromium:1341851, chromium:1341891 Change-Id: I21e0e452c92cc93f8b06985a335f409855be0546 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3743518Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Commit-Queue: Maya Lekova <mslekova@chromium.org> Cr-Commit-Position: refs/heads/main@{#81529}
-
Manos Koukoutos authored
This reverts commit 84e078c6. Reason for revert: https://ci.chromium.org/ui/p/v8/builders/ci/V8%20Linux64%20UBSan/22000/overview Original change's description: > [fastcall] Support EnforceRange annotation > > This CL implements checks in case EnforceRange is requested for a > given parameter by using TryTruncate* operators. It implements 2 such > truncations on x64 and arm64 - TryTruncateFloat64ToInt32 and > TryTruncateFloat64ToUint32. > > Bug: chromium:1052746 > Change-Id: I32f34d9dc1265af568cc576663620a8f7f8245f6 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3721618 > Reviewed-by: Toon Verwaest <verwaest@chromium.org> > Reviewed-by: Tobias Tebbi <tebbi@chromium.org> > Commit-Queue: Maya Lekova <mslekova@chromium.org> > Cr-Commit-Position: refs/heads/main@{#81512} Bug: chromium:1052746 Change-Id: I2218681c7cb5d05dea6d8ac5347b19bc0070c1a6 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3743514 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Manos Koukoutos <manoskouk@chromium.org> Owners-Override: Manos Koukoutos <manoskouk@chromium.org> Cr-Commit-Position: refs/heads/main@{#81513}
-
- 04 Jul, 2022 1 commit
-
-
Maya Lekova authored
This CL implements checks in case EnforceRange is requested for a given parameter by using TryTruncate* operators. It implements 2 such truncations on x64 and arm64 - TryTruncateFloat64ToInt32 and TryTruncateFloat64ToUint32. Bug: chromium:1052746 Change-Id: I32f34d9dc1265af568cc576663620a8f7f8245f6 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3721618Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Commit-Queue: Maya Lekova <mslekova@chromium.org> Cr-Commit-Position: refs/heads/main@{#81512}
-
- 01 Jul, 2022 1 commit
-
-
Ilya Rezvov authored
Bug: v8:12946 Change-Id: I2c17c3258123417d616e7fc8a1521e006b758e08 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3731149Reviewed-by:
Deepti Gandluri <gdeepti@chromium.org> Commit-Queue: Ilya Rezvov <irezvov@chromium.org> Cr-Commit-Position: refs/heads/main@{#81500}
-
- 23 Jun, 2022 1 commit
-
-
Ilya Rezvov authored
Bug: v8:12946 Change-Id: I3d9037a6dd940fe25f737efca49835b098d55081 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3691129Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Reviewed-by:
Deepti Gandluri <gdeepti@chromium.org> Commit-Queue: Ilya Rezvov <irezvov@chromium.org> Cr-Commit-Position: refs/heads/main@{#81336}
-
- 02 Jun, 2022 1 commit
-
-
Ilya Rezvov authored
Prototype the instruction on the interpreter, and Arm64. Details of instruction lowerings on all relevant architectures can be found at: https://github.com/WebAssembly/relaxed-simd/issues/52 Bug: v8:12908 Change-Id: If8ffb82c38042191c67c9b5c23a231877d4f2159 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3679848Reviewed-by:
Clemens Backes <clemensb@chromium.org> Commit-Queue: Ilya Rezvov <irezvov@chromium.org> Reviewed-by:
Deepti Gandluri <gdeepti@chromium.org> Cr-Commit-Position: refs/heads/main@{#80924}
-
- 11 May, 2022 1 commit
-
-
Deepti Gandluri authored
Prototype the instruction on the interpreter, and Arm64. Details of instruction lowerings on all relevant architectures can be found at: https://github.com/WebAssembly/relaxed-simd/issues/40 Bug: v8:12284 Change-Id: Id4cb3889d94cf0bb7169ea068efe5ca68cfcbad9 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3636365 Commit-Queue: Deepti Gandluri <gdeepti@chromium.org> Reviewed-by:
Thibaud Michaud <thibaudm@chromium.org> Cr-Commit-Position: refs/heads/main@{#80475}
-
- 10 May, 2022 1 commit
-
-
Tobias Tebbi authored
UnsafePointerAdd is unnecessary as long as a proper bitcast is used before the addition. The bitcast is already in the effect chain and prevents the addition from floating before a GC operation. Change-Id: Ieadb8a51d2d24eaa1132a62c77c674954f7e2644 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3616727Reviewed-by:
Maya Lekova <mslekova@chromium.org> Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/main@{#80457}
-
- 22 Apr, 2022 1 commit
-
-
Deepti Gandluri authored
These were originally proposed as a part of the fixed-width SIMD proposal, and were then migrated to the relaxed-simd proposal which also deems these operations out of scope. Github issue: https://github.com/WebAssembly/relaxed-simd/issues/4 Bug: v8:12284 Change-Id: I65ceb6dfd25c43cf49bd7ec5b5ecd6b32cc3516a Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3595970Reviewed-by:
Thibaud Michaud <thibaudm@chromium.org> Commit-Queue: Deepti Gandluri <gdeepti@chromium.org> Cr-Commit-Position: refs/heads/main@{#80125}
-
- 28 Oct, 2021 1 commit
-
-
Ng Zhi An authored
4 instructions, int32x4.trunc_f32x4_{s,u}, int32x4.trunc_f64x2_{s,u}_zero. Drive-by cleanup to wasm-interpreter to use saturated_cast. The machine ops are named <int>Trunc<float>, dropping the "sat" since these don't do any saturation anymore. Bug: v8:12284 Change-Id: I2d4d6a61b819b287fee69e3eea03dd3151cfa10d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3223166Reviewed-by:
Deepti Gandluri <gdeepti@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/main@{#77598}
-
- 21 Oct, 2021 1 commit
-
-
Ng Zhi An authored
Relaxed f32x4 and f64x2 min and max. These instructions only guarantee results when the inputs are non nans, and when the inputs are not 0s of opposite signs. Reuse existing float binop testing harnesses and add special checks for such constants when relaxed operations are being tested. Drive-by rename of x64 instruction codes to be Minps/Maxps/Minpd/Maxpd since they map down exactly to a single instruction. Bug: v8:12284 Change-Id: I1449dbfa87935a96d7d260db22667ab7b9e86601 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3218196Reviewed-by:
Deepti Gandluri <gdeepti@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/main@{#77484}
-
- 14 Oct, 2021 1 commit
-
-
Ng Zhi An authored
4 instructions, i8x16, i16x8, i32x4, i64x2 relaxed lane select. These instructions only guarantee results when the entire lane is set or unset, so vpblendvb will give correct results for all of them. Bug: v8:12284 Change-Id: I76959a23f2d97de8ecc3bef43d138184484e3c4d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3207006Reviewed-by:
Deepti Gandluri <gdeepti@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/main@{#77401}
-
- 11 Oct, 2021 1 commit
-
-
Ng Zhi An authored
Bug: v8:12284 Change-Id: I3519dfa3302c5851585c7430a9930ccd81507090 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3206502 Commit-Queue: Zhi An Ng <zhin@chromium.org> Reviewed-by:
Deepti Gandluri <gdeepti@chromium.org> Cr-Commit-Position: refs/heads/main@{#77327}
-
- 30 Sep, 2021 1 commit
-
-
Marja Hölttä authored
It's confusing that we have CSA_CHECK and CSA_ASSERT and it's not clear from the names that the former works in release mode and the latter only in debug mode. Renaming CSA_ASSERT to CSA_DCHECK makes it clear what it does. So now we have CSA_CHECK and CSA_DCHECK and they're not confusing. This also renames assert() in Torque to dcheck(). Bug: v8:12244 Change-Id: I6f25d431ebc6eec7ebe326b6b8ad3a0ac5e9a108 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3190104Reviewed-by:
Nico Hartmann <nicohartmann@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Igor Sheludko <ishell@chromium.org> Reviewed-by:
Shu-yu Guo <syg@chromium.org> Commit-Queue: Marja Hölttä <marja@chromium.org> Cr-Commit-Position: refs/heads/main@{#77160}
-
- 17 Sep, 2021 1 commit
-
-
Ng Zhi An authored
When the input to F64x2PromoteLowF32x4 is a S128Load64Zero, we can skip the load + promote, and promote directly with a memory operand. The tricky bit here is that on systems that rely on OOB trap handling, the load is not eliminatable, so we always visit the S128Load64Zero, even though after instruction-selector pattern-matching, it is unused. We mark it as defined to skip visiting it, only if we matched it. Bug: v8:12189 Change-Id: I0a805a3fce65c56ec52082b3625e1712ea1ee7cf Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3154347Reviewed-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/main@{#76917}
-
- 19 Aug, 2021 3 commits
-
-
Shu-yu Guo authored
This is a reland of faf2208a Changes since revert: - Fix arm64 codegen for full pointer mode Original change's description: > [compiler] Support acq/rel accesses and atomic accesses on tagged > > This CL adds an AtomicMemoryOrder parameter to the various atomic load > and store operators. Currently only acquire release (kAcqRel) and > sequentially consistent (kSeqCst) orders are supported. > > Additionally, atomic loads and stores are extended to work with tagged > values. > > This CL is a pre-requisite for supporting atomic accesses in Torque, > which is in turn a pre-requisite for prototyping shared strings. > > Bug: v8:11995 > Change-Id: Ic77d2640e2dc7e5581b1211a054c93210c219355 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3101765 > Reviewed-by: Nico Hartmann <nicohartmann@chromium.org> > Reviewed-by: Zhi An Ng <zhin@chromium.org> > Commit-Queue: Shu-yu Guo <syg@chromium.org> > Cr-Commit-Position: refs/heads/main@{#76393} Bug: v8:11995 Change-Id: I23577486334fec6b08fb3a2f5be1f6e5e16db11b Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3107220Reviewed-by:
Zhi An Ng <zhin@chromium.org> Reviewed-by:
Adam Klein <adamk@chromium.org> Commit-Queue: Shu-yu Guo <syg@chromium.org> Cr-Commit-Position: refs/heads/main@{#76399}
-
Nico Hartmann authored
This reverts commit faf2208a. Reason for revert: https://ci.chromium.org/ui/p/v8/builders/ci/V8%20Linux64%20-%20arm64%20-%20sim%20-%20pointer%20compression/10870/overview Original change's description: > [compiler] Support acq/rel accesses and atomic accesses on tagged > > This CL adds an AtomicMemoryOrder parameter to the various atomic load > and store operators. Currently only acquire release (kAcqRel) and > sequentially consistent (kSeqCst) orders are supported. > > Additionally, atomic loads and stores are extended to work with tagged > values. > > This CL is a pre-requisite for supporting atomic accesses in Torque, > which is in turn a pre-requisite for prototyping shared strings. > > Bug: v8:11995 > Change-Id: Ic77d2640e2dc7e5581b1211a054c93210c219355 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3101765 > Reviewed-by: Nico Hartmann <nicohartmann@chromium.org> > Reviewed-by: Zhi An Ng <zhin@chromium.org> > Commit-Queue: Shu-yu Guo <syg@chromium.org> > Cr-Commit-Position: refs/heads/main@{#76393} Bug: v8:11995 Change-Id: Id9936672f9e96c509b1cdf866de1ac5303996945 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3107229Reviewed-by:
Nico Hartmann <nicohartmann@chromium.org> Commit-Queue: Nico Hartmann <nicohartmann@chromium.org> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Cr-Commit-Position: refs/heads/main@{#76394}
-
Shu-yu Guo authored
This CL adds an AtomicMemoryOrder parameter to the various atomic load and store operators. Currently only acquire release (kAcqRel) and sequentially consistent (kSeqCst) orders are supported. Additionally, atomic loads and stores are extended to work with tagged values. This CL is a pre-requisite for supporting atomic accesses in Torque, which is in turn a pre-requisite for prototyping shared strings. Bug: v8:11995 Change-Id: Ic77d2640e2dc7e5581b1211a054c93210c219355 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3101765Reviewed-by:
Nico Hartmann <nicohartmann@chromium.org> Reviewed-by:
Zhi An Ng <zhin@chromium.org> Commit-Queue: Shu-yu Guo <syg@chromium.org> Cr-Commit-Position: refs/heads/main@{#76393}
-
- 12 Aug, 2021 1 commit
-
-
Ross McIlroy authored
These are no longer enabled, so remove the code mitigation logic from the codebase. BUG=chromium:1003890 Change-Id: I536bb1732e8463281c21da446bbba8f47ede8ebe Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3045704 Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#76256}
-
- 12 May, 2021 1 commit
-
-
Manos Koukoutos authored
Loop unrolling did not work properly with floating control. Seeing as very few spots in the wasm compiler introduced floating control, we decided to disallow it altogether. Changes: - When lowering 64-bit rol/ror/clz/ctz in 32-bit platforms, we use a diamond operator, which used to introduce floating control. This CL adds a control edge to these operators so that the diamond can be chained to that control instead. - During loop analysis, as an additional safety check, we check that the explored loop does not have floating control. Exceptionally, floating control pointing directly do start() is allowed. - Change wasm-compiler so that generated floating projections point to start() even after stack check patch-in. Bug: chromium:1184929, v8:11298 Change-Id: I1ee063f5250037ae6c84d2f16b0bd8fff3923117 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2876851Reviewed-by:
Georg Neis <neis@chromium.org> Reviewed-by:
Nico Hartmann <nicohartmann@chromium.org> Commit-Queue: Manos Koukoutos <manoskouk@chromium.org> Cr-Commit-Position: refs/heads/master@{#74527}
-
- 17 Apr, 2021 1 commit
-
-
Ng Zhi An authored
This reverts commit d16eefe0. It is not correct to check for node equality during the graph construction phase, because we can have optimizations that will combine same nodes. So it can happen that in wasm-compiler, the inputs to shuffle are not the same, so we canonicalize using that knowledge that it will not be the same, and allow indices > 15. But later we can have optimizations that combine the 2 inputs (e.g. splat of the same constants), and the instruction selector will see that the input nodes are the same. Bug: v8:11542,chromium:1199662 Change-Id: I21c175f4707708038710147f64d687d1b14c6ecc Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2829986 Commit-Queue: Zhi An Ng <zhin@chromium.org> Reviewed-by:
Bill Budge <bbudge@chromium.org> Cr-Commit-Position: refs/heads/master@{#74017}
-
- 13 Apr, 2021 1 commit
-
-
Andreas Haas authored
R=thibaudm@chromium.org, jgruber@chromium.org Bug: v8:10740 Change-Id: Iceb20f00f6f8505885856400a0c0228708ff3979 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2807610 Commit-Queue: Andreas Haas <ahaas@chromium.org> Reviewed-by:
Thibaud Michaud <thibaudm@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#73933}
-
- 12 Apr, 2021 1 commit
-
-
Wenyu Zhao authored
This CL adds features to pack/unpack map words. Currently V8 cannot store extra metadata in object headers -- because V8 objects do not have a proper header, but only a map pointer at the start of the object. To store per-object metadata like marking data, a side table is required as the per-object metadata storage. This CL enables V8 to use higher unused bits in a 64-bit map word as per-object metadata storage. Map pointer stores come with an extra step to encode the metadata into the pointer (we call it "map packing"). Map pointer loads will also remove the metadata bits as well (we call it "map packing"). Since the map word is no longer a valid pointer after packing, we also change the tag of the packed map word to make it looks like a Smi. This helps various GC and barrier code to correctly skip them instead of blindly dereferencing this invalid pointer. A ninja flag `v8_enable_map_packing` is provided to turn this map-packing feature on and off. It is disabled by default. * Only works on x64 platform, with `v8_enable_pointer_compression` set to `false` Bug: v8:11624 Change-Id: Ia2bdf79553945e5fc0b0874c87803d2cc733e073 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2247561Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Nico Hartmann <nicohartmann@chromium.org> Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#73915}
-
- 25 Mar, 2021 1 commit
-
-
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}
-
- 23 Mar, 2021 1 commit
-
-
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 1 commit
-
-
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}
-
- 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}
-
- 15 Mar, 2021 1 commit
-
-
Ng Zhi An authored
S128Load and S128Store are not used, we create a node with Load/Store opcode and store the appropriate LoadType/StoreType indicating this is a 128-bit type. Bug: v8:11384 Change-Id: Ida4a36ab893637525cb827b659753ac90fcca743 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2760539Reviewed-by:
Deepti Gandluri <gdeepti@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#73413}
-
- 10 Mar, 2021 1 commit
-
-
Ng Zhi An authored
This is done with a script that does something like: files=$(ag 'v\d\d?x\d\d?[._]?all_?true' -l) sed -i 's/V\(8x16\|16x8\|32x4\|64x2\)\([._]\?\)\([aA]ll_\?[tT]rue\)/I\1\2\3/g' $(files) sed -i 's/v\(8x16\|16x8\|32x4\|64x2\)\([._]\?\)\([aA]ll_\?[tT]rue\)/i\1\2\3/g' $(files) And manual fixups in test-run-wasm-simd.cc and wasm-opcodes-inl.h. Bug: v8:10946 Change-Id: Ib5dad388dd6dd9cd0fb575ad961dffc189a2e6ef Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2740488Reviewed-by:
Bill Budge <bbudge@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#73309}
-
- 04 Mar, 2021 3 commits
-
-
Ng Zhi An authored
This is a reland of 77838343 No changes in this reland, this wasn't causing the failures, see https://crbug.com/1163833 for the actual cause. Original change's description: > [wasm-simd] Remove add horiz instructions > > Bug: v8:6020 > Change-Id: I0605798d03f2e9f9c3c07c49141289889a10a3b0 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2727204 > Reviewed-by: Deepti Gandluri <gdeepti@chromium.org> > Commit-Queue: Zhi An Ng <zhin@chromium.org> > Cr-Commit-Position: refs/heads/master@{#73180} Bug: v8:6020 Change-Id: I83d59ed800bd73c81cb879b4ba3a5144045c62d4 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2733663Reviewed-by:
Deepti Gandluri <gdeepti@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#73200}
-
Shu-yu Guo authored
This reverts commit 77838343. Reason for revert: Mysterious win32 test262 failures: https://ci.chromium.org/ui/p/v8/builders/ci/V8%20Win32%20-%20debug/30119/overview Original change's description: > [wasm-simd] Remove add horiz instructions > > Bug: v8:6020 > Change-Id: I0605798d03f2e9f9c3c07c49141289889a10a3b0 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2727204 > Reviewed-by: Deepti Gandluri <gdeepti@chromium.org> > Commit-Queue: Zhi An Ng <zhin@chromium.org> > Cr-Commit-Position: refs/heads/master@{#73180} Bug: v8:6020 Change-Id: Id1a58d7689d506b17ed04a7df67fec4003bc523d No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2733662 Auto-Submit: Shu-yu Guo <syg@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@{#73181}
-
Ng Zhi An authored
Bug: v8:6020 Change-Id: I0605798d03f2e9f9c3c07c49141289889a10a3b0 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2727204Reviewed-by:
Deepti Gandluri <gdeepti@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#73180}
-
- 02 Mar, 2021 1 commit
-
-
Ng Zhi An authored
Wasm SIMD does not have an opcode to multiply a vector by a scalar. In these cases, Wasm code uses mul(x, shuffle(y, imms)), where the shuffle is a dup of a single lane in y. Pattern match on this to emit a fmul (element). We can do similar pattern match on f64x2 too, that will come in a future patch. Bug: v8:11257 Change-Id: I61e8c46b56719a1179c8a6032dbf8a4cc03b40a9 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2719083 Commit-Queue: Zhi An Ng <zhin@chromium.org> Reviewed-by:
Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/master@{#73141}
-
- 26 Feb, 2021 1 commit
-
-
Ng Zhi An authored
These were prototyped and not merged into the SIMD proposal. Bug: v8:10983 Change-Id: I5c30a0e9955ee5602e05d473f0f85be59d124205 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2718761Reviewed-by:
Deepti Gandluri <gdeepti@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#73080}
-
- 25 Feb, 2021 1 commit
-
-
Ng Zhi An authored
This instruction is not in the final SIMD proposal. Bug: v8:6020 Change-Id: Ifef1b3d58bf660f2d30784f587aed85f327825ec Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2716073 Commit-Queue: Zhi An Ng <zhin@chromium.org> Reviewed-by:
Deepti Gandluri <gdeepti@chromium.org> Cr-Commit-Position: refs/heads/master@{#73058}
-
- 22 Feb, 2021 1 commit
-
-
Ng Zhi An authored
This is essentially a revert of 3 commits: - a1d39bba - 5a0938e5 - 74362ae3 with merge conflicts fixed. These instructions were not merged into the SIMD proposal. Bug: v8:11297 Change-Id: Ifffe7c61cae10fadc345d0faa1b0ba45ce74e946 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2704950Reviewed-by:
Deepti Gandluri <gdeepti@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#72933}
-
- 11 Feb, 2021 1 commit
-
-
Ng Zhi An authored
Bug: v8:11416 Change-Id: I68bd6cade55472aed006638ea6d0c1d516d9d2cc Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2686308 Commit-Queue: Zhi An Ng <zhin@chromium.org> Reviewed-by:
Bill Budge <bbudge@chromium.org> Cr-Commit-Position: refs/heads/master@{#72666}
-
- 09 Feb, 2021 1 commit
-
-
Ng Zhi An authored
This is a partial revert of https://crrev.com/c/2457669/. This change is slightly longer (in code-generator-x64.cc) because we also implement support when SSE4_2 is not supported (the reverted change seems to assume SSE4_2, which is not always the case). This code sequence is from https://github.com/WebAssembly/simd/pull/412. Bug: v8:11415 Change-Id: I3eef415667b4142887cf1c449d27d19ba5bbd208 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2683219 Commit-Queue: Zhi An Ng <zhin@chromium.org> Reviewed-by:
Bill Budge <bbudge@chromium.org> Cr-Commit-Position: refs/heads/master@{#72611}
-