1. 08 Jul, 2022 3 commits
  2. 07 Jul, 2022 1 commit
  3. 01 Jul, 2022 1 commit
  4. 30 Jun, 2022 1 commit
  5. 29 Jun, 2022 1 commit
  6. 24 Jun, 2022 2 commits
  7. 21 Jun, 2022 1 commit
  8. 20 Jun, 2022 1 commit
    • Toon Verwaest's avatar
      [maglev] Various regalloc fixes · e16e8d8b
      Toon Verwaest authored
        * Move fixed temporary allocation before arbitrary input allocation,
          so that fixed temporaries don't accidentally clobber the arbitrary
          input register. Now the input allocation will pick a different
          register.
        * For the above, make temporary allocation 'block' the register with a
          sentinel value, rather than marking it free, so that the subsequent
          input allocation knows not to use those registers (including
          spilling into them).
        * Similarly, move arbitrary input allocation after phi resolution when
          allocating control nodes, since phis may have fixed requirements.
        * Allow deopts to spill their inputs if they are not in registers and
          not yet loadable. This is done during the equivalent of input
          allocation for deopts.
        * Allow there to be multiple targets for a single source during gap
          move collection / cycle detection. There can still only be a single
          source per target, therefore there can only be one cycle for each
          connected component -- this is DCHECKed.
        * Make register validation more complete -- also walk the entire
          graph, and check whether value nodes' result register states match
          the current register allocator state.
        * Add much more printing to --trace-maglev-regalloc because these bugs
          ain't easy to debug.
      
      Bug: v8:7700
      Change-Id: Id98259c2920d772ce168bf27497162e78b136f9f
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3714235
      Auto-Submit: Toon Verwaest <verwaest@chromium.org>
      Commit-Queue: Toon Verwaest <verwaest@chromium.org>
      Reviewed-by: 's avatarIgor Sheludko <ishell@chromium.org>
      Commit-Queue: Igor Sheludko <ishell@chromium.org>
      Cr-Commit-Position: refs/heads/main@{#81252}
      e16e8d8b
  9. 15 Jun, 2022 2 commits
  10. 14 Jun, 2022 2 commits
  11. 13 Jun, 2022 1 commit
  12. 25 May, 2022 1 commit
  13. 24 May, 2022 1 commit
  14. 23 May, 2022 3 commits
  15. 20 May, 2022 1 commit
    • Leszek Swirski's avatar
      [maglev] Add more Int32/Float64 arithmetic nodes · 47090774
      Leszek Swirski authored
      Add Int32/Float64 nodes for:
      
        * Subtract
        * Multiply
        * Divide
      
      and additionally Int32 nodes for
      
        * BitwiseOr/And/Xor
        * ShiftLeft/Right/RightLogical
      
      The latter ones don't have Float64 equivalents since they're implicitly
      Int32 operations. In the future we'll add support for Number feedback by
      adding Float64-to-Int32 conversions and using the Int32 nodes.
      
      The divide node does an Int32 division and deopts if there's a remainder
      to the division -- we may want to make it output a Float64 instead if we
      think that's more likely in real-world code. There's also no peephole
      optimisations for constant operations, which would generate much better
      code, especially for shifts.
      
      Bug: v8:7700
      Change-Id: Ief1d24b46557cf4d2b7929ed50956df7b0d25992
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3652301
      Commit-Queue: Leszek Swirski <leszeks@chromium.org>
      Reviewed-by: 's avatarToon Verwaest <verwaest@chromium.org>
      Cr-Commit-Position: refs/heads/main@{#80670}
      47090774
  16. 16 May, 2022 1 commit
  17. 13 May, 2022 2 commits
  18. 06 May, 2022 1 commit
    • Jakob Linke's avatar
      [maglev] Step 1 towards ML-TF tiering · 8fc7735b
      Jakob Linke authored
      Added IR members:
      For updating the interrupt budget: Jump, JumpLoop, Return and
      JumpFromInlined apply a delta to the interrupt budget.  For OSR:
      JumpLoop needs its loop depth and the feedback slot (where cached OSR
      code lives).
      
      This CL also adds code to maintain the interrupt budget in ML code.
      
      Future tasks are documented in TODOs.
      
      Bug: v8:7700
      Change-Id: I240dc3ea76a1e60fda45e1d39b0b5f57dd9c566b
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3610423
      Auto-Submit: Jakob Linke <jgruber@chromium.org>
      Commit-Queue: Toon Verwaest <verwaest@chromium.org>
      Reviewed-by: 's avatarToon Verwaest <verwaest@chromium.org>
      Cr-Commit-Position: refs/heads/main@{#80393}
      8fc7735b
  19. 29 Apr, 2022 2 commits
  20. 28 Apr, 2022 3 commits
  21. 27 Apr, 2022 2 commits
  22. 26 Apr, 2022 1 commit
  23. 25 Apr, 2022 3 commits
  24. 22 Apr, 2022 2 commits
  25. 21 Apr, 2022 1 commit
    • Leszek Swirski's avatar
      [maglev] Fix dead predecessors after EmitUnconditionalDeopt · f7cc70de
      Leszek Swirski authored
      Fixes the iteration after emitting an unconditional deopt to kill all
      Jumps along the way, not just ones preceeding a merge point. This fixes
      several issues:
      
        a) That Jump may be to a not yet created merge point, in which case we
           were getting a nullptr deref.
        b) Not-yet created merge points would not be detected as merge points,
           so we'd skip over them and miss killing the control node before
           them.
        c) We weren't reducing predecessor counts, so even after fixing the
           nullptr deref above, merge states created later would have the wrong
           predecessor count.
      
      Now, we check bytecode targets (including fallthrough for non-returning
      bytecodes) on for every bytecode, and skip over both not-yet created
      merges, and loop merges that have no predecessors other than the loop
      jump itself.
      
      As part of this, the dead predecessor merging is changed; instead of
      setting the predecessor to nullptr, we drop the predecessor count by
      one, and trim any Phis' input counts.
      
      Bug: v8:7700
      Change-Id: I904c82df7c5dd44d7637e07f6750b35e7e219284
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3599470Reviewed-by: 's avatarVictor Gomes <victorgomes@chromium.org>
      Commit-Queue: Leszek Swirski <leszeks@chromium.org>
      Cr-Commit-Position: refs/heads/main@{#80083}
      f7cc70de