1. 18 Aug, 2022 1 commit
  2. 13 Jul, 2022 1 commit
  3. 05 Jul, 2022 2 commits
    • Maya Lekova's avatar
      Reland "[fastcall] Support EnforceRange annotation" · 8559a04f
      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: 's avatarToon Verwaest <verwaest@chromium.org>
      Commit-Queue: Maya Lekova <mslekova@chromium.org>
      Cr-Commit-Position: refs/heads/main@{#81529}
      8559a04f
    • Manos Koukoutos's avatar
      Revert "[fastcall] Support EnforceRange annotation" · d9b62c16
      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}
      d9b62c16
  4. 04 Jul, 2022 1 commit
  5. 01 Jul, 2022 1 commit
  6. 23 Jun, 2022 1 commit
  7. 02 Jun, 2022 1 commit
  8. 11 May, 2022 1 commit
  9. 10 May, 2022 1 commit
  10. 22 Apr, 2022 1 commit
  11. 28 Oct, 2021 1 commit
  12. 21 Oct, 2021 1 commit
    • Ng Zhi An's avatar
      [wasm-relaxed-simd][x64] Prototype relaxed min and max · c3f346b7
      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: 's avatarDeepti Gandluri <gdeepti@chromium.org>
      Commit-Queue: Zhi An Ng <zhin@chromium.org>
      Cr-Commit-Position: refs/heads/main@{#77484}
      c3f346b7
  13. 14 Oct, 2021 1 commit
  14. 11 Oct, 2021 1 commit
  15. 30 Sep, 2021 1 commit
  16. 17 Sep, 2021 1 commit
  17. 19 Aug, 2021 3 commits
  18. 12 Aug, 2021 1 commit
  19. 12 May, 2021 1 commit
    • Manos Koukoutos's avatar
      [turbofan] Disallow floating control in wasm · 02ac71e2
      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: 's avatarGeorg Neis <neis@chromium.org>
      Reviewed-by: 's avatarNico Hartmann <nicohartmann@chromium.org>
      Commit-Queue: Manos Koukoutos <manoskouk@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#74527}
      02ac71e2
  20. 17 Apr, 2021 1 commit
    • Ng Zhi An's avatar
      Revert "[wasm-simd] Canonicalize shuffles when creating TurboFan graph" · ede5e814
      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: 's avatarBill Budge <bbudge@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#74017}
      ede5e814
  21. 13 Apr, 2021 1 commit
  22. 12 Apr, 2021 1 commit
    • Wenyu Zhao's avatar
      Allowing map word to be used for other state in GC header. · 5e0b94c4
      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: 's avatarUlan Degenbaev <ulan@chromium.org>
      Reviewed-by: 's avatarNico Hartmann <nicohartmann@chromium.org>
      Reviewed-by: 's avatarToon Verwaest <verwaest@chromium.org>
      Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#73915}
      5e0b94c4
  23. 25 Mar, 2021 1 commit
  24. 23 Mar, 2021 1 commit
    • Manos Koukoutos's avatar
      [turbofan] Introduce LoadImmutable, use it in wasm compiler · f6ee9ed0
      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: 's avatarAndreas Haas <ahaas@chromium.org>
      Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Commit-Queue: Manos Koukoutos <manoskouk@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#73594}
      f6ee9ed0
  25. 22 Mar, 2021 1 commit
  26. 17 Mar, 2021 1 commit
    • Ng Zhi An's avatar
      [wasm-simd] Canonicalize shuffles when creating TurboFan graph · d16eefe0
      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: 's avatarBill Budge <bbudge@chromium.org>
      Commit-Queue: Zhi An Ng <zhin@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#73495}
      d16eefe0
  27. 15 Mar, 2021 1 commit
  28. 10 Mar, 2021 1 commit
  29. 04 Mar, 2021 3 commits
  30. 02 Mar, 2021 1 commit
  31. 26 Feb, 2021 1 commit
  32. 25 Feb, 2021 1 commit
  33. 22 Feb, 2021 1 commit
  34. 11 Feb, 2021 1 commit
  35. 09 Feb, 2021 1 commit