• Tobias Tebbi's avatar
    [turboshaft] some IR refactorings · 7a61dad0
    Tobias Tebbi authored
    - Remove TruncateInt64ToInt32 instead of translating to Turboshaft, since it has no effect. Removing it simplifies pattern-matching in optimizations.
    - Change how exception handling is done in Turboshaft: The exception value is obtained as the result of `CatchExceptionOp` instead of a special projection. This simplifies projections.
    - Add `TupleOp` as the counterpart to `ProjectionOp`, which is useful
      for lowerings of operations that have multiple outputs.
    
    - Split BinopOp into WordBinopOp and FloatBinopOp because they have quite different semantics and many kinds only exist for one of them.
    - rename IntegerUnary to WordUnary and other occurences of
      Integer/Integral
    - rename ChangeOp::Kind::kUnsignedFloatTruncate` to `kJSFloatTruncate`
      because it actually has JS wrap-around semantics.
    - move/add representation DCHECKs to operation constructors.
    - add some convinience helpers to `AssemblerInterface`.
    
    - Add a mechanism to check which operations are supported by the machine.
    
    Drive-by fix: Abort current block in OptimizationPhase::VisitBlock if
      we lower to a block-terminator.
    
    Bug: v8:12783
    Change-Id: Ib738accccd22fb1606d9dab86f57ac1e739fcec2
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3857449
    Auto-Submit: Tobias Tebbi <tebbi@chromium.org>
    Reviewed-by: 's avatarDarius Mercadier <dmercadier@chromium.org>
    Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#82857}
    7a61dad0