1. 12 May, 2021 1 commit
  2. 11 May, 2021 2 commits
  3. 10 May, 2021 2 commits
  4. 07 May, 2021 1 commit
  5. 04 May, 2021 1 commit
  6. 22 Apr, 2021 2 commits
  7. 21 Apr, 2021 1 commit
  8. 20 Apr, 2021 1 commit
  9. 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
  10. 14 Apr, 2021 2 commits
  11. 13 Apr, 2021 1 commit
  12. 12 Apr, 2021 2 commits
    • Milad Fa's avatar
      PPC/s390: Allowing map word to be used for other state in GC header. · fb533e8d
      Milad Fa authored
      Port 5e0b94c4
      
      Original Commit Message:
      
          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`
      
      R=wenyu.zhao@anu.edu.au, joransiu@ca.ibm.com, junyan@redhat.com, midawson@redhat.com
      BUG=
      LOG=N
      
      Change-Id: I4a13093e7b20bb38990d947c697008a920cfe715
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2821649Reviewed-by: 's avatarJunliang Yan <junyan@redhat.com>
      Commit-Queue: Milad Fa <mfarazma@redhat.com>
      Cr-Commit-Position: refs/heads/master@{#73923}
      fb533e8d
    • 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
  13. 07 Apr, 2021 1 commit
  14. 01 Apr, 2021 2 commits
  15. 31 Mar, 2021 1 commit
  16. 29 Mar, 2021 1 commit
  17. 25 Mar, 2021 2 commits
  18. 24 Mar, 2021 1 commit
  19. 22 Mar, 2021 2 commits
  20. 18 Mar, 2021 1 commit
    • Milad Fa's avatar
      PPC/s390: [wasm-simd] Canonicalize shuffles when creating TurboFan graph · d95b1645
      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: 's avatarJunliang Yan <junyan@redhat.com>
      Commit-Queue: Milad Fa <mfarazma@redhat.com>
      Cr-Commit-Position: refs/heads/master@{#73512}
      d95b1645
  21. 17 Mar, 2021 2 commits
    • 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
    • Milad Fa's avatar
      PPC [simd]: Implement vector extend multiply low/high · 63661ce7
      Milad Fa authored
      Also added multiply low/high and vector merge instructions to
      the simulator.
      
      Change-Id: I889004b5572ee7df75be706c424ac2e83e53e8b3
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2769058
      Commit-Queue: Milad Fa <mfarazma@redhat.com>
      Reviewed-by: 's avatarJunliang Yan <junyan@redhat.com>
      Cr-Commit-Position: refs/heads/master@{#73492}
      63661ce7
  22. 16 Mar, 2021 1 commit
  23. 11 Mar, 2021 1 commit
    • Milad Fa's avatar
      PPC/s390: Reland "[no-wasm] Exclude src/wasm from compilation" · 8224bdf4
      Milad Fa authored
      Port 3f9ff062
      
      Original Commit Message:
      
          This is a reland of 80f5dfda. A condition
          in pipeline.cc was inverted, which lead to a CSA verifier error.
      
          Original change's description:
          > [no-wasm] Exclude src/wasm from compilation
          >
          > This is the biggest chunk, including
          > - all of src/wasm,
          > - torque file for wasm objects,
          > - torque file for wasm builtins,
          > - wasm builtins,
          > - wasm runtime functions,
          > - int64 lowering,
          > - simd scala lowering,
          > - WasmGraphBuilder (TF graph construction for wasm),
          > - wasm frame types,
          > - wasm interrupts,
          > - the JSWasmCall opcode,
          > - wasm backing store allocation.
          >
          > Those components are all recursively entangled, so I found no way to
          > split this change up further.
          >
          > Some includes that were recursively included by wasm headers needed to
          > be added explicitly now.
          >
          > backing-store-unittest.cc is renamed to wasm-backing-store-unittest.cc
          > because it only tests wasm backing stores. This file is excluded from
          > no-wasm builds then.
          >
          > R=jkummerow@chromium.org, jgruber@chromium.org, mlippautz@chromium.org, petermarshall@chromium.org
          >
          > Bug: v8:11238
          > Change-Id: I7558f2d12d2dd6c65128c4de7b79173668c80b2b
          > Cq-Include-Trybots: luci.v8.try:v8_linux64_no_wasm_compile_rel
          > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2742955
          > Commit-Queue: Clemens Backes <clemensb@chromium.org>
          > Reviewed-by: Peter Marshall <petermarshall@chromium.org>
          > Reviewed-by: Toon Verwaest <verwaest@chromium.org>
          > Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
          > Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
          > Reviewed-by: Jakob Gruber <jgruber@chromium.org>
          > Cr-Commit-Position: refs/heads/master@{#73344}
      
      R=clemensb@chromium.org, joransiu@ca.ibm.com, junyan@redhat.com, midawson@redhat.com
      BUG=
      LOG=N
      
      Change-Id: I006f32407aea051c960f32942f9353f415547116
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2753143Reviewed-by: 's avatarJunliang Yan <junyan@redhat.com>
      Commit-Queue: Milad Fa <mfarazma@redhat.com>
      Cr-Commit-Position: refs/heads/master@{#73357}
      8224bdf4
  24. 10 Mar, 2021 1 commit
  25. 08 Mar, 2021 1 commit
  26. 06 Mar, 2021 1 commit
    • Bill Budge's avatar
      [compiler] Refactor CallDescriptor methods · 37f9742b
      Bill Budge authored
      - Renames StackParameterCount to ParameterSlotCount, to avoid
        confusion between slots and parameters, which are not in general
        equivalent.
      - Similarly, renames StackReturnCount to ReturnSlotCount.
      - Adjusts the result of GetFirstUnusedStackSlot to return one more
        than the last slot of the argument area, not including padding.
      - Renames GetFirstUnusedStackSlot to GetOffsetToFirstUnusedStackSlot
        to reflect that the result is an offset from callee to caller
        frames.
      - GetReturnsOffset is a little clearer, with adjustment for the
        different semantics of GetFirstUnusedStackSlot.
      - Renames 'optional_padding_slot' and 'first_unused_stack_slot'
        variables in Tailcall codegen to reflect that these are offsets.
      
      Bug: v8:9198
      
      Change-Id: Ib73c52710dc1f3ead640d488a6fdeb605b7b665e
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2700099
      Commit-Queue: Bill Budge <bbudge@chromium.org>
      Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#73242}
      37f9742b
  27. 05 Mar, 2021 1 commit
    • Bill Budge's avatar
      Reland "Reland "Reland "[compiler][wasm] Align Frame slots to value size""" · e639eafe
      Bill Budge authored
      This is a reland of 352b9ecb
      
      The test/fix CL has been merged in, as the fixes to return slot
      accounting are needed to fix Arm64 issues turned up by the fuzzers:
      
      https://chromium-review.googlesource.com/c/v8/v8/+/2644139
      
      The reverted fix for Wasm return slot allocation is added in
      patchset #2, to avoid fuzzer issues that it fixed:
      
      https://chromium-review.googlesource.com/c/v8/v8/+/2683024
      
      TBR=neis@chromium.org
      
      Original change's description:
      > Reland "Reland "[compiler][wasm] Align Frame slots to value size""
      >
      > This is a reland of 1694925c
      >
      > Minor fix to linkage for constexpr.
      >
      > TBR=ahaas@chromium.org,neis@chromium.org
      >
      > Original change's description:
      > > Reland "[compiler][wasm] Align Frame slots to value size"
      > >
      > > This is a reland of cddaf66c
      > >
      > > Original change's description:
      > > > [compiler][wasm] Align Frame slots to value size
      > > >
      > > > - Adds an AlignedSlotAllocator class and tests, to unify slot
      > > >   allocation. This attempts to use alignment holes for smaller
      > > >   values.
      > > > - Reworks Frame to use the new allocator for stack slots.
      > > > - Reworks LinkageAllocator to use the new allocator for stack
      > > >   slots and for ARMv7 FP register aliasing.
      > > > - Fixes the RegisterAllocator to align spill slots.
      > > > - Fixes InstructionSelector to align spill slots.
      > > >
      > > > Bug: v8:9198
      > > >
      > > > Change-Id: Ida148db428be89ef95de748ec5fc0e7b0358f523
      > > > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2512840
      > > > Commit-Queue: Bill Budge <bbudge@chromium.org>
      > > > Reviewed-by: Georg Neis <neis@chromium.org>
      > > > Reviewed-by: Andreas Haas <ahaas@chromium.org>
      > > > Cr-Commit-Position: refs/heads/master@{#71644}
      > >
      > > Bug: v8:9198
      > > Change-Id: Ib91fa6746370c38496706341e12d05c7bf999389
      > > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2633390
      > > Commit-Queue: Bill Budge <bbudge@chromium.org>
      > > Reviewed-by: Andreas Haas <ahaas@chromium.org>
      > > Reviewed-by: Georg Neis <neis@chromium.org>
      > > Cr-Commit-Position: refs/heads/master@{#72195}
      >
      > Bug: v8:9198
      > Change-Id: I91e02b823af8ec925dacf075388fb22e3eeb3384
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2640890
      > Reviewed-by: Bill Budge <bbudge@chromium.org>
      > Commit-Queue: Bill Budge <bbudge@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#72209}
      
      Bug: v8:9198
      Change-Id: Ia5cf63af4e5991bc7cf42da9972ffd044fc829f0
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2733177
      Commit-Queue: Bill Budge <bbudge@chromium.org>
      Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#73238}
      e639eafe
  28. 04 Mar, 2021 2 commits
  29. 01 Mar, 2021 1 commit
  30. 25 Feb, 2021 1 commit