1. 11 May, 2022 1 commit
  2. 09 May, 2022 1 commit
  3. 05 May, 2022 1 commit
  4. 28 Apr, 2022 1 commit
    • Igor Sheludko's avatar
      Reland "[rwx][mac] Support fast W^X permission switching on Apple Silicon (M1)" · 449ece38
      Igor Sheludko authored
      This is a reland of commit 9d31f866
      There were issues with --future flag implications on M1.
      
      Original change's description:
      > [rwx][mac] Support fast W^X permission switching on Apple Silicon (M1)
      >
      > ... for V8 code space. The feature is currently disabled.
      >
      > In order to use fast W^X permission switching we must allocate
      > executable pages with readable writable executable permissions (RWX).
      > However, MacOS on ARM64 ("Apple M1"/Apple Silicon) prohibits further
      > permission changing of RWX memory pages. This means that the code page
      > headers must be allocated with RWX permissions too because otherwise
      > it wouldn't be possible to allocate a large code page over the freed
      > regular code page and vice versa.
      >
      > When enabled, the new machinery works as follows:
      >
      > 1) when memory region is reserved for allocating executable pages, the
      >    whole region is committed with RWX permissions and then decommitted,
      > 2) since reconfiguration of RWX page permissions is not allowed on
      >    MacOS on ARM64 ("Apple M1"/Apple Silicon), there must be no attempts
      >    to change them,
      > 3) the request to set RWX permissions in the executable page region
      >    just recommits the pages without changing permissions (see (1), they
      >    were already allocated as RWX and then discarded),
      > 4) in order to make executable pages inaccessible one must use
      >    OS::DiscardSystemPages() instead of OS::DecommitPages() or
      >    setting permissions to kNoAccess because the latter two are not
      >    allowed by the MacOS (see (2)).
      > 5) since code space page headers are allocated as RWX pages it's also
      >    necessary to switch between W^X modes when updating the data in the
      >    page headers (i.e. when marking, updating stats, wiring pages in
      >    lists, etc.). The new CodePageHeaderModificationScope class is used
      >    in the respective places. On unrelated configurations it's a no-op.
      >
      > The fast permission switching can't be used for V8 configuration with
      > enabled pointer compression and disabled external code space because
      > a) the pointer compression cage has to be reserved with MAP_JIT flag
      >    which is too expensive,
      > b) in case of shared pointer compression cage if the code range will
      >    be deleted while the cage is still alive then attempt to configure
      >    permissions of pages that were previously set to RWX will fail.
      >
      > This also CL extends the unmapper unit tests with permissions tracking
      > for discarded pages.
      >
      > Bug: v8:12797
      > Change-Id: Idb28cbc481306477589eee9962d2e75167d87c61
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3579303
      > Reviewed-by: Nico Hartmann <nicohartmann@chromium.org>
      > Reviewed-by: Clemens Backes <clemensb@chromium.org>
      > Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
      > Commit-Queue: Igor Sheludko <ishell@chromium.org>
      > Cr-Commit-Position: refs/heads/main@{#80238}
      
      Bug: v8:12797
      Change-Id: I0fe86666f31bad37d7074e217555c95900d2afba
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3610433Reviewed-by: 's avatarNico Hartmann <nicohartmann@chromium.org>
      Reviewed-by: 's avatarMichael Lippautz <mlippautz@chromium.org>
      Commit-Queue: Igor Sheludko <ishell@chromium.org>
      Reviewed-by: 's avatarClemens Backes <clemensb@chromium.org>
      Cr-Commit-Position: refs/heads/main@{#80259}
      449ece38
  5. 27 Apr, 2022 2 commits
    • Adam Klein's avatar
      Revert "[rwx][mac] Support fast W^X permission switching on Apple Silicon (M1)" · 10807c9f
      Adam Klein authored
      This reverts commit 9d31f866.
      
      Reason for revert: crashes on Mac/arm64 bots:
      https://ci.chromium.org/ui/p/v8/builders/ci/V8%20Mac%20-%20arm64%20-%20debug/5923/overview
      
      Original change's description:
      > [rwx][mac] Support fast W^X permission switching on Apple Silicon (M1)
      >
      > ... for V8 code space. The feature is currently disabled.
      >
      > In order to use fast W^X permission switching we must allocate
      > executable pages with readable writable executable permissions (RWX).
      > However, MacOS on ARM64 ("Apple M1"/Apple Silicon) prohibits further
      > permission changing of RWX memory pages. This means that the code page
      > headers must be allocated with RWX permissions too because otherwise
      > it wouldn't be possible to allocate a large code page over the freed
      > regular code page and vice versa.
      >
      > When enabled, the new machinery works as follows:
      >
      > 1) when memory region is reserved for allocating executable pages, the
      >    whole region is committed with RWX permissions and then decommitted,
      > 2) since reconfiguration of RWX page permissions is not allowed on
      >    MacOS on ARM64 ("Apple M1"/Apple Silicon), there must be no attempts
      >    to change them,
      > 3) the request to set RWX permissions in the executable page region
      >    just recommits the pages without changing permissions (see (1), they
      >    were already allocated as RWX and then discarded),
      > 4) in order to make executable pages inaccessible one must use
      >    OS::DiscardSystemPages() instead of OS::DecommitPages() or
      >    setting permissions to kNoAccess because the latter two are not
      >    allowed by the MacOS (see (2)).
      > 5) since code space page headers are allocated as RWX pages it's also
      >    necessary to switch between W^X modes when updating the data in the
      >    page headers (i.e. when marking, updating stats, wiring pages in
      >    lists, etc.). The new CodePageHeaderModificationScope class is used
      >    in the respective places. On unrelated configurations it's a no-op.
      >
      > The fast permission switching can't be used for V8 configuration with
      > enabled pointer compression and disabled external code space because
      > a) the pointer compression cage has to be reserved with MAP_JIT flag
      >    which is too expensive,
      > b) in case of shared pointer compression cage if the code range will
      >    be deleted while the cage is still alive then attempt to configure
      >    permissions of pages that were previously set to RWX will fail.
      >
      > This also CL extends the unmapper unit tests with permissions tracking
      > for discarded pages.
      >
      > Bug: v8:12797
      > Change-Id: Idb28cbc481306477589eee9962d2e75167d87c61
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3579303
      > Reviewed-by: Nico Hartmann <nicohartmann@chromium.org>
      > Reviewed-by: Clemens Backes <clemensb@chromium.org>
      > Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
      > Commit-Queue: Igor Sheludko <ishell@chromium.org>
      > Cr-Commit-Position: refs/heads/main@{#80238}
      
      Bug: v8:12797
      Change-Id: Ic07948e036db36326d464a2a901d052aa060a406
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3611665
      Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
      Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
      Auto-Submit: Adam Klein <adamk@chromium.org>
      Cr-Commit-Position: refs/heads/main@{#80239}
      10807c9f
    • Igor Sheludko's avatar
      [rwx][mac] Support fast W^X permission switching on Apple Silicon (M1) · 9d31f866
      Igor Sheludko authored
      ... for V8 code space. The feature is currently disabled.
      
      In order to use fast W^X permission switching we must allocate
      executable pages with readable writable executable permissions (RWX).
      However, MacOS on ARM64 ("Apple M1"/Apple Silicon) prohibits further
      permission changing of RWX memory pages. This means that the code page
      headers must be allocated with RWX permissions too because otherwise
      it wouldn't be possible to allocate a large code page over the freed
      regular code page and vice versa.
      
      When enabled, the new machinery works as follows:
      
      1) when memory region is reserved for allocating executable pages, the
         whole region is committed with RWX permissions and then decommitted,
      2) since reconfiguration of RWX page permissions is not allowed on
         MacOS on ARM64 ("Apple M1"/Apple Silicon), there must be no attempts
         to change them,
      3) the request to set RWX permissions in the executable page region
         just recommits the pages without changing permissions (see (1), they
         were already allocated as RWX and then discarded),
      4) in order to make executable pages inaccessible one must use
         OS::DiscardSystemPages() instead of OS::DecommitPages() or
         setting permissions to kNoAccess because the latter two are not
         allowed by the MacOS (see (2)).
      5) since code space page headers are allocated as RWX pages it's also
         necessary to switch between W^X modes when updating the data in the
         page headers (i.e. when marking, updating stats, wiring pages in
         lists, etc.). The new CodePageHeaderModificationScope class is used
         in the respective places. On unrelated configurations it's a no-op.
      
      The fast permission switching can't be used for V8 configuration with
      enabled pointer compression and disabled external code space because
      a) the pointer compression cage has to be reserved with MAP_JIT flag
         which is too expensive,
      b) in case of shared pointer compression cage if the code range will
         be deleted while the cage is still alive then attempt to configure
         permissions of pages that were previously set to RWX will fail.
      
      This also CL extends the unmapper unit tests with permissions tracking
      for discarded pages.
      
      Bug: v8:12797
      Change-Id: Idb28cbc481306477589eee9962d2e75167d87c61
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3579303Reviewed-by: 's avatarNico Hartmann <nicohartmann@chromium.org>
      Reviewed-by: 's avatarClemens Backes <clemensb@chromium.org>
      Reviewed-by: 's avatarMichael Lippautz <mlippautz@chromium.org>
      Commit-Queue: Igor Sheludko <ishell@chromium.org>
      Cr-Commit-Position: refs/heads/main@{#80238}
      9d31f866
  6. 22 Apr, 2022 1 commit
  7. 19 Apr, 2022 1 commit
  8. 18 Apr, 2022 1 commit
    • Deepti Gandluri's avatar
      Revert "[rwx][mac] Introduce RwxMemoryWriteScope" · e73757be
      Deepti Gandluri authored
      This reverts commit 4d8e1846.
      
      Reason for revert: Blocks V8 roll, crbug.com/1316800
      
      Original change's description:
      > [rwx][mac] Introduce RwxMemoryWriteScope
      >
      > ... as a single bottleneck that encapsulates the semantics and
      > implementation of fast per-thread W^X permission switching supported
      > by Apple Silicon (arm64 M1).
      > On other architectures this class is a no-op.
      >
      > Bug: v8:12797
      > Change-Id: Ica842ff9f843e20b7f61fd7e80591e7a1fd29771
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3586986
      > Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
      > Commit-Queue: Igor Sheludko <ishell@chromium.org>
      > Cr-Commit-Position: refs/heads/main@{#79994}
      
      Bug: v8:12797
      Change-Id: I81792567839e72b4147d009c0845b0c0de003eb0
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3590752
      Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
      Commit-Queue: Deepti Gandluri <gdeepti@chromium.org>
      Owners-Override: Deepti Gandluri <gdeepti@chromium.org>
      Cr-Commit-Position: refs/heads/main@{#80007}
      e73757be
  9. 14 Apr, 2022 1 commit
  10. 01 Mar, 2022 1 commit
  11. 17 Feb, 2022 1 commit
  12. 31 Jan, 2022 1 commit
  13. 27 Jan, 2022 1 commit
    • Manos Koukoutos's avatar
      [wasm-gc] Implement iso-recursive types · fe531e1f
      Manos Koukoutos authored
      This CL replaces the equirecursive type system for wasm-gc with the
      isorecursive hybrid type system presented here:
      https://github.com/WebAssembly/gc/issues/257.
      
      In broad strokes, this includes the following changes:
      - In the module decoder, remove equirecursive types. Implement recursive
        type groups, subtype definitions, and function/struct/array
        definitions. Treat nominal modules as syntactic sugar of an
        isorecursive module, where all types belong in the same recursive
        group.
      - Remove rtt.sub and all related infrastructure.
      - Change subtyping to work with explicit supertypes only.
      - Add ValidSubtypeDefinition in subtyping, to check that subtype
        declarations are valid during decoding.
      - Remove the subtyping cache.
      - Add support for functions to have specific signature index in
        WasmModuleBuilder and in test-gc.cc.
      - Adapt tests.
      
      Current restrictions:
      - Recursive groups are not stored beyond decoding.
      - Type canonicalization is not implemented. No tests relying on types
        being considered identical post-canonicalization.
      - No cross-module subtyping is possible. Tests relying on cross-module
        subtyping have been commented out.
      
      Bug: v8:7748
      Change-Id: I69fd04ecc5611f6230c95d5c89d1c520163fffae
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3416239Reviewed-by: 's avatarTobias Tebbi <tebbi@chromium.org>
      Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
      Commit-Queue: Manos Koukoutos <manoskouk@chromium.org>
      Cr-Commit-Position: refs/heads/main@{#78816}
      fe531e1f
  14. 19 Jan, 2022 1 commit
    • Manos Koukoutos's avatar
      Reland "[wasm] Various small cleanups/fixes" · 069d62eb
      Manos Koukoutos authored
      This is a reland of f1c2a208
      
      Changes compared to original:
      Revert test change which used simd and caused problems in multiple test
      configurations.
      
      Original change's description:
      > [wasm] Various small cleanups/fixes
      >
      > Changes:
      > - Fix a bug in objects-printer where array elements were not treated as
      >   tagged pointers.
      > - Fix a few TODOs, mainly in the wasm interpreter.
      > - Improve documentation, small refactorings.
      >
      > Change-Id: I1d70ad454b3a0693b9b784b17395434d81d01b61
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3383136
      > Reviewed-by: Nikolaos Papaspyrou <nikolaos@chromium.org>
      > Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
      > Commit-Queue: Manos Koukoutos <manoskouk@chromium.org>
      > Cr-Commit-Position: refs/heads/main@{#78656}
      
      Change-Id: I91f4fed5fbc91acb8b42413a6f40a8202bd43096
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3398111Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
      Commit-Queue: Manos Koukoutos <manoskouk@chromium.org>
      Cr-Commit-Position: refs/heads/main@{#78677}
      069d62eb
  15. 18 Jan, 2022 1 commit
    • Maya Lekova's avatar
      Revert "[wasm] Various small cleanups/fixes" · b1e12d70
      Maya Lekova authored
      This reverts commit f1c2a208.
      
      Reason for revert: Breaks some tests on no-sse configuration, please see https://ci.chromium.org/ui/p/v8/builders/ci/V8%20Linux/45243/overview
      
      Original change's description:
      > [wasm] Various small cleanups/fixes
      >
      > Changes:
      > - Fix a bug in objects-printer where array elements were not treated as
      >   tagged pointers.
      > - Fix a few TODOs, mainly in the wasm interpreter.
      > - Improve documentation, small refactorings.
      >
      > Change-Id: I1d70ad454b3a0693b9b784b17395434d81d01b61
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3383136
      > Reviewed-by: Nikolaos Papaspyrou <nikolaos@chromium.org>
      > Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
      > Commit-Queue: Manos Koukoutos <manoskouk@chromium.org>
      > Cr-Commit-Position: refs/heads/main@{#78656}
      
      Change-Id: Ic698177259bb14b4c251a4212c79cc0d945b07f8
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3398109
      Auto-Submit: Maya Lekova <mslekova@chromium.org>
      Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
      Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
      Commit-Queue: Maya Lekova <mslekova@chromium.org>
      Owners-Override: Maya Lekova <mslekova@chromium.org>
      Cr-Commit-Position: refs/heads/main@{#78657}
      b1e12d70
  16. 17 Jan, 2022 1 commit
  17. 12 Jan, 2022 2 commits
  18. 11 Jan, 2022 1 commit
  19. 24 Nov, 2021 1 commit
    • Manos Koukoutos's avatar
      [wasm] Internal representation for function references · f60132e9
      Manos Koukoutos authored
      Design doc: bit.ly/3jEVgzz
      
      We separate the internal representation of function references in Wasm
      from their JSFunction-based (external) representation. This improves
      performance of call_ref by requiring less indirections to load the
      context and call target from a function reference. In the boundary
      between wasm and JS/the C API, we add transformations between the two
      representations.
      
      Detailed changes:
      - Introduce WasmInternalFunction, containing fields required by
        call_ref, as well as a reference to the corresponding
        WasmExternalFunction. Add a reference to the WasmInternalFunction in
        WasmFunctionData. The {WasmInternalFunction::FromExternal} helper
        extracts the internal out of an external function.
      - Change {WasmInstanceObject::external_functions()} to internal
        functions.
      - Change wasm function tables to contain internal functions.
      - Change the following code to use internal functions:
        - call_ref in liftoff and Turbofan
        - function type checks in liftoff and Turbofan
        - CallRefIC and GenericJSToWasmWrapper builtins
        - {InitExprInterface::RefFunc}
        - module-compiler.cc in {ProcessTypeFeedback}
        - In module-instantiate.cc, in function-rtt creation.
      - Add transformations between internal and external functions in:
        - WasmWrapperGraphBuilder::{ToJS, BuildUnpackObjectWrapper, FromJS,
          BuildJSToJSWrapper}.
        - debug-wasm-objects.cc in {FunctionProxy::Get},
          {WasmValueObject::New} and {AddWasmTableObjectInternalProperties}.
        - runtime-wasm.cc in ReplaceWrapper
        - the C and JS APIs
        - module-instantiate.cc, in import and export processing, as well as
          {InitializeIndirectFunctionTables}
        - WasmTableObject::{IsValidElement, SetFunctionTableEntry}
        - {WasmGlobalObject::SetFuncRef}
      - Simplify body descriptors of WasmExternalFunction variants.
      - Adjust tests.
      
      Bug: v8:11510
      
      Change-Id: I8377f46f55c3771391ae1c5c8201a83854ee7878
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3277878Reviewed-by: 's avatarMichael Lippautz <mlippautz@chromium.org>
      Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
      Commit-Queue: Manos Koukoutos <manoskouk@chromium.org>
      Cr-Commit-Position: refs/heads/main@{#78068}
      f60132e9
  20. 19 Nov, 2021 1 commit
  21. 16 Nov, 2021 1 commit
  22. 08 Nov, 2021 1 commit
  23. 28 Oct, 2021 1 commit
  24. 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
  25. 14 Oct, 2021 1 commit
  26. 11 Oct, 2021 1 commit
  27. 07 Oct, 2021 1 commit
  28. 28 Sep, 2021 1 commit
  29. 27 Sep, 2021 1 commit
  30. 24 Sep, 2021 1 commit
    • Clemens Backes's avatar
      [wasm][test] Cleanup macros · 156b2409
      Clemens Backes authored
      Some macros are redundant or unused.
      - WASM_RETURN1 is identical to WASM_RETURN.
      - WASM_RETURNN has an unused {count} parameter, and is otherwise
        identical to WASM_RETURN.
      - WASM_IFB is identical to WASM_IF.
      - WASM_CASE and WASM_CASE_BR are unused.
      - WASM_BR_TABLEV is unused.
      
      R=thibaudm@chromium.org
      
      Bug: v8:12244
      Change-Id: Ie7be00351f2dfe38d6e84d80e157a85df37233a9
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3178860Reviewed-by: 's avatarThibaud Michaud <thibaudm@chromium.org>
      Commit-Queue: Clemens Backes <clemensb@chromium.org>
      Cr-Commit-Position: refs/heads/main@{#77056}
      156b2409
  31. 20 Sep, 2021 1 commit
  32. 17 Sep, 2021 1 commit
    • Thibaud Michaud's avatar
      [wasm][eh] Fix interpreter delegate in catch block · 159e440d
      Thibaud Michaud authored
      The recent change in the delegate semantics was incorrectly implemented
      in the interpreter. It only checked that the first opcode of the target
      block is a 'try': we also need to skip try blocks when we are already in
      their 'catch' or 'catch_all' sub-block.
      Use the exception_stack instead, since it already only contains indices
      of try blocks that haven't reached their handlers yet.
      
      R=clemensb@chromium.org
      
      Bug: chromium:1249306
      Change-Id: I15746b4bfabf3dcf04cfe0f2ad438c573cce65e7
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3168622
      Commit-Queue: Thibaud Michaud <thibaudm@chromium.org>
      Reviewed-by: 's avatarClemens Backes <clemensb@chromium.org>
      Cr-Commit-Position: refs/heads/main@{#76919}
      159e440d
  33. 15 Sep, 2021 1 commit
  34. 13 Sep, 2021 1 commit
  35. 08 Sep, 2021 1 commit
  36. 17 Aug, 2021 1 commit
  37. 13 Aug, 2021 2 commits
    • Clemens Backes's avatar
      Revert "[arm64][wasm] Use NEON S/Usra for Wasm SIMD add(shr(x, imm), y)" · 55e6a51f
      Clemens Backes authored
      This reverts commit 2261e053.
      
      Reason for revert: No issues with the CL, but it is taking the
      last two available opcodes on arm64 (we use 9 bits to encode it,
      so we are limited to 512 opcodes). We need to land a security fix
      which includes the addition of two opcodes. Before relanding this,
      we need to figure out a strategy to either reduce opcodes, or use
      one more bit to encode them.
      
      Original change's description:
      > [arm64][wasm] Use NEON S/Usra for Wasm SIMD add(shr(x, imm), y)
      >
      > A single AArch64 SIMD signed/unsigned Shift Right and Accumulate can be
      > used to implement Wasm SIMD add(shr(x, imm), y). This gives a 1-1.5%
      > improvement on some compute intensive Wasm benchmarks on Neoverse-N1.
      >
      > Mla and Adalp optimisations were refactored to match the style of the
      > added code.
      >
      > Change-Id: Id5959a31ca267e02b7d60e7ff6f942adb029b41e
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3089157
      > Reviewed-by: Zhi An Ng <zhin@chromium.org>
      > Commit-Queue: Martyn Capewell <martyn.capewell@arm.com>
      > Cr-Commit-Position: refs/heads/master@{#76280}
      
      Change-Id: Ifad0625ed8a6b66e7a7a74da11ad7d60941207e5
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3094014
      Auto-Submit: Clemens Backes <clemensb@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@{#76282}
      55e6a51f
    • Ilja Iskovs's avatar
      [arm64][wasm] Use NEON S/Usra for Wasm SIMD add(shr(x, imm), y) · 2261e053
      Ilja Iskovs authored
      A single AArch64 SIMD signed/unsigned Shift Right and Accumulate can be
      used to implement Wasm SIMD add(shr(x, imm), y). This gives a 1-1.5%
      improvement on some compute intensive Wasm benchmarks on Neoverse-N1.
      
      Mla and Adalp optimisations were refactored to match the style of the
      added code.
      
      Change-Id: Id5959a31ca267e02b7d60e7ff6f942adb029b41e
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3089157Reviewed-by: 's avatarZhi An Ng <zhin@chromium.org>
      Commit-Queue: Martyn Capewell <martyn.capewell@arm.com>
      Cr-Commit-Position: refs/heads/master@{#76280}
      2261e053