1. 12 Sep, 2018 3 commits
    • Clemens Hammacher's avatar
      Reland^2 "[Liftoff] Implement f32.copysign and f64.copysign" · a39fcbd2
      Clemens Hammacher authored
      This is a reland of 6afe7d18.
      The reason for the revert is fixed in https://crrev.com/c/1219633.
      
      Original change's description:
      > [Liftoff] Implement f32.copysign and f64.copysign
      >
      > These are two of the few missing instructions. This CL implements them
      > for ia32 and x64, and bails out on other platforms.
      > On x64, we are using the BTR instruction since we cannot have 64-bit
      > immediates.
      >
      > Drive-by: Fix naming of existing bt/bts instructions on x64.
      >
      > R=titzer@chromium.org
      >
      > Bug: v8:6600
      > Change-Id: Ib8532ca811160cd61f4ba7c06b04ce093861c872
      > Reviewed-on: https://chromium-review.googlesource.com/1174383
      > Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      > Reviewed-by: Ben Titzer <titzer@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#55780}
      
      Bug: v8:6600
      Change-Id: Ie14ba3a14848ba8e67f97e66d3379178f35dea40
      
      TBR=titzer@chromium.org
      
      Change-Id: Ie14ba3a14848ba8e67f97e66d3379178f35dea40
      Reviewed-on: https://chromium-review.googlesource.com/1219693Reviewed-by: 's avatarClemens Hammacher <clemensh@chromium.org>
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#55817}
      a39fcbd2
    • Clemens Hammacher's avatar
      Revert "Reland "[Liftoff] Implement f32.copysign and f64.copysign"" · 1c860ca4
      Clemens Hammacher authored
      This reverts commit f0f5f877.
      
      Reason for revert: Merge conflict (does not compile).
      
      Original change's description:
      > Reland "[Liftoff] Implement f32.copysign and f64.copysign"
      > 
      > This is a reland of 6afe7d18.
      > The reason for the revert is fixed in https://crrev.com/c/1219633.
      > 
      > Original change's description:
      > > [Liftoff] Implement f32.copysign and f64.copysign
      > >
      > > These are two of the few missing instructions. This CL implements them
      > > for ia32 and x64, and bails out on other platforms.
      > > On x64, we are using the BTR instruction since we cannot have 64-bit
      > > immediates.
      > >
      > > Drive-by: Fix naming of existing bt/bts instructions on x64.
      > >
      > > R=titzer@chromium.org
      > >
      > > Bug: v8:6600
      > > Change-Id: Ib8532ca811160cd61f4ba7c06b04ce093861c872
      > > Reviewed-on: https://chromium-review.googlesource.com/1174383
      > > Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      > > Reviewed-by: Ben Titzer <titzer@chromium.org>
      > > Cr-Commit-Position: refs/heads/master@{#55780}
      > 
      > Bug: v8:6600
      > Change-Id: I4baeec6b02b17450988cfa7fedd5037f9cfe1638
      > Reviewed-on: https://chromium-review.googlesource.com/1219508
      > Reviewed-by: Ben Titzer <titzer@chromium.org>
      > Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#55812}
      
      TBR=titzer@chromium.org,clemensh@chromium.org
      
      Change-Id: Iae075a8f5225f1678691698bf3a304faa5ae2aab
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: v8:6600
      Reviewed-on: https://chromium-review.googlesource.com/1220747Reviewed-by: 's avatarClemens Hammacher <clemensh@chromium.org>
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#55813}
      1c860ca4
    • Clemens Hammacher's avatar
      Reland "[Liftoff] Implement f32.copysign and f64.copysign" · f0f5f877
      Clemens Hammacher authored
      This is a reland of 6afe7d18.
      The reason for the revert is fixed in https://crrev.com/c/1219633.
      
      Original change's description:
      > [Liftoff] Implement f32.copysign and f64.copysign
      >
      > These are two of the few missing instructions. This CL implements them
      > for ia32 and x64, and bails out on other platforms.
      > On x64, we are using the BTR instruction since we cannot have 64-bit
      > immediates.
      >
      > Drive-by: Fix naming of existing bt/bts instructions on x64.
      >
      > R=titzer@chromium.org
      >
      > Bug: v8:6600
      > Change-Id: Ib8532ca811160cd61f4ba7c06b04ce093861c872
      > Reviewed-on: https://chromium-review.googlesource.com/1174383
      > Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      > Reviewed-by: Ben Titzer <titzer@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#55780}
      
      Bug: v8:6600
      Change-Id: I4baeec6b02b17450988cfa7fedd5037f9cfe1638
      Reviewed-on: https://chromium-review.googlesource.com/1219508Reviewed-by: 's avatarBen Titzer <titzer@chromium.org>
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#55812}
      f0f5f877
  2. 11 Sep, 2018 2 commits
  3. 10 Sep, 2018 1 commit
  4. 04 Sep, 2018 1 commit
    • Clemens Hammacher's avatar
      [Liftoff] Load memory size as ptr-sized int · 0e460c25
      Clemens Hammacher authored
      Since https://crrev.com/c/1112003, the memory size is stored as size_t
      instead of uint32_t in order to support 4GB memories.
      Loading it as uint32_t only works on little-endian systems, and only for
      memory sizes <4GB. This CL fixes this to load and process the memory
      size as pointer-sized value.
      Additional platform-specific methods are added to perform a shift by a
      constant value. This can be reused to improve the generated code for
      other shifts.
      
      R=titzer@chromium.org
      
      Bug: v8:8130, v8:6600
      Change-Id: Ifa688a3ed0e2809190571f24bdf47a7f53880b3d
      Reviewed-on: https://chromium-review.googlesource.com/1203950
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Reviewed-by: 's avatarBen Titzer <titzer@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#55609}
      0e460c25
  5. 10 Aug, 2018 1 commit
  6. 26 Jul, 2018 1 commit
  7. 06 Jul, 2018 1 commit
  8. 02 Jul, 2018 1 commit
  9. 28 Jun, 2018 1 commit
  10. 20 Jun, 2018 1 commit
    • Ben L. Titzer's avatar
      [asm] Rework Assembler::IsolateData into Assembler::Options · 4252d53f
      Ben L. Titzer authored
      This CL attempts to simplify the Assembler's dependency on the
      isolate, in particular on a global "serializer_enabled" mode contained
      therein. The "serializer_enabled" condition enabled and disabled
      a number of things in both the assemblers and macro assemblers. To
      make these dependencies explicit, the Assembler::IsolateData is refactored
      to be a proper Assembler::Options struct that controls specific assembler
      behaviors, with default settings easily computable from the isolate.
      
      This also helps make the contract for compiling WASM code more explicit
      (since WASM code needs to have reloc info recorded for external references)
      we can explicitly enable this recording without trying to "trick" the
      assembler using "serializer_enabled".
      
      R=jgruber@chromium.org
      CC=mstarzinger@chromium.org, herhut@chromium.org
      
      Change-Id: I7a8ba49df7b75b292d73ec2aa6e507c27a3d99c8
      Reviewed-on: https://chromium-review.googlesource.com/1105982
      Commit-Queue: Ben Titzer <titzer@chromium.org>
      Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#53890}
      4252d53f
  11. 11 Jun, 2018 1 commit
  12. 07 Jun, 2018 1 commit
  13. 05 Jun, 2018 1 commit
  14. 18 May, 2018 1 commit
  15. 15 May, 2018 1 commit
  16. 14 May, 2018 1 commit
  17. 11 May, 2018 1 commit
  18. 03 May, 2018 1 commit
  19. 27 Apr, 2018 4 commits
  20. 26 Apr, 2018 4 commits
  21. 25 Apr, 2018 2 commits
    • Clemens Hammacher's avatar
      [Liftoff] Implement i64 division and remainder · 52f07582
      Clemens Hammacher authored
      This adds support for i64.div_s, i64.div_u, i64.rem_s, and i64.rem_u.
      
      R=ahaas@chromium.org
      
      Bug: v8:6600
      Change-Id: I37e564684b278c8d2f664a859851c67f4bd83190
      Reviewed-on: https://chromium-review.googlesource.com/1027612Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52785}
      52f07582
    • Andreas Haas's avatar
      Reland: [refactoring] Remove the isolate from signatures of ExternalReferences · 2a3c2c73
      Andreas Haas authored
      I missed one required change which was hidden behind an #if. The fix is in
      the diff between Patch 1 and Patch 3.
      
      Original message:
      In this CL I remove the isolate from signatures of ExternalReference
      accessor functions where the isolate is not used. The uses of the
      isolate were already removed in previous CLs.
      
      Changes:
      * I split the ExternalReference list in external-reference.h into
      those which need the isolate for initialization and those which do not.
      
      * I removed the public constructors and replaced them by
        ExternalReference::Create(). The reason is to separate external
        creation more clearly from internal creation, because externally
        created ExternalReferences sometimes need redirection, whereas
        internally created ExternalReferences are just stored as they are.
        In addition, by removing the isolate from the signature of the
        public constructors, they suddenly exactly matched the interal
        constructor.
      
      * Replace all uses of the public constructors with
        ExternalReference::Create().
      
      * Remove the isolate from all call sites where necessary.
      
      
      This is a step towards making WebAssembly compilation independent of
      the isolate.
      
      R=mstarzinger@chromium.org
      
      Bug: v8:7570
      Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng
      Change-Id: I750c162f5d58ed32e866722b0db920f8b9bd8057
      Reviewed-on: https://chromium-review.googlesource.com/1026673Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Commit-Queue: Andreas Haas <ahaas@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52777}
      2a3c2c73
  22. 24 Apr, 2018 4 commits
    • Andreas Haas's avatar
      Revert "[refactoring] Remove the isolate from signatures of ExternalReferences" · 7bfed2ad
      Andreas Haas authored
      This reverts commit 44ea425a.
      
      Reason for revert: https://ci.chromium.org/buildbot/client.v8.ports/V8%20Arm%20-%20debug%20builder/13575
      
      Original change's description:
      > [refactoring] Remove the isolate from signatures of ExternalReferences
      > 
      > In this CL I remove the isolate from signatures of ExternalReference
      > accessor functions where the isolate is not used. The uses of the
      > isolate were already removed in previous CLs.
      > 
      > Changes:
      > * I split the ExternalReference list in external-reference.h into
      > those which need the isolate for initialization and those which do not.
      > 
      > * I removed the public constructors and replaced them by
      >   ExternalReference::Create(). The reason is to separate external
      >   creation more clearly from internal creation, because externally
      >   created ExternalReferences sometimes need redirection, whereas
      >   internally created ExternalReferences are just stored as they are.
      >   In addition, by removing the isolate from the signature of the
      >   public constructors, they suddenly exactly matched the interal
      >   constructor.
      > 
      > * Replace all uses of the public constructors with
      >   ExternalReference::Create().
      > 
      > * Remove the isolate from all call sites where necessary.
      > 
      > 
      > This is a step towards making WebAssembly compilation independent of
      > the isolate.
      > 
      > Bug: v8:7570
      > R=​mstarzinger@chromium.org
      > 
      > Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng
      > Change-Id: I14f511fc6acc50ab2d6a6641299f5ddbeabef0da
      > Reviewed-on: https://chromium-review.googlesource.com/1018982
      > Commit-Queue: Andreas Haas <ahaas@chromium.org>
      > Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#52768}
      
      TBR=mstarzinger@chromium.org,ahaas@chromium.org
      
      Change-Id: I7c0d8d420f815cede23d550dee8942ac4d7791cc
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: v8:7570
      Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng
      Reviewed-on: https://chromium-review.googlesource.com/1026570Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
      Commit-Queue: Andreas Haas <ahaas@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52769}
      7bfed2ad
    • Andreas Haas's avatar
      [refactoring] Remove the isolate from signatures of ExternalReferences · 44ea425a
      Andreas Haas authored
      In this CL I remove the isolate from signatures of ExternalReference
      accessor functions where the isolate is not used. The uses of the
      isolate were already removed in previous CLs.
      
      Changes:
      * I split the ExternalReference list in external-reference.h into
      those which need the isolate for initialization and those which do not.
      
      * I removed the public constructors and replaced them by
        ExternalReference::Create(). The reason is to separate external
        creation more clearly from internal creation, because externally
        created ExternalReferences sometimes need redirection, whereas
        internally created ExternalReferences are just stored as they are.
        In addition, by removing the isolate from the signature of the
        public constructors, they suddenly exactly matched the interal
        constructor.
      
      * Replace all uses of the public constructors with
        ExternalReference::Create().
      
      * Remove the isolate from all call sites where necessary.
      
      
      This is a step towards making WebAssembly compilation independent of
      the isolate.
      
      Bug: v8:7570
      R=mstarzinger@chromium.org
      
      Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng
      Change-Id: I14f511fc6acc50ab2d6a6641299f5ddbeabef0da
      Reviewed-on: https://chromium-review.googlesource.com/1018982
      Commit-Queue: Andreas Haas <ahaas@chromium.org>
      Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52768}
      44ea425a
    • Clemens Hammacher's avatar
      [Liftoff] Implement i32.rem_u and i32.rem_s · 75922ead
      Clemens Hammacher authored
      This adds support for i32.rem_u and i32.rem_s, implemented on ia32 and
      x64.
      
      R=ahaas@chromium.org
      
      Bug: v8:6600
      Change-Id: Id08a51f7a0dcb7a1ed43c5a97be7a7dafff85397
      Reviewed-on: https://chromium-review.googlesource.com/1023932Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52764}
      75922ead
    • Andreas Haas's avatar
      [wasm][cleanup] Move ValueType into its own header file · 3a56441a
      Andreas Haas authored
      This CL splits the definition of ValueType and its helper functions
      into its own header file.
      
      R=clemensh@chromium.org
      
      Bug: v8:7570
      Change-Id: I3aa776edb45839d7d38836e131df45732c685310
      Reviewed-on: https://chromium-review.googlesource.com/1021810
      Commit-Queue: Andreas Haas <ahaas@chromium.org>
      Reviewed-by: 's avatarClemens Hammacher <clemensh@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52758}
      3a56441a
  23. 23 Apr, 2018 2 commits
  24. 20 Apr, 2018 1 commit
    • Clemens Hammacher's avatar
      [wasm] Simplify C calls · 8d2d0513
      Clemens Hammacher authored
      Instead of passing multiple pointers to input and output, or to two
      input values, just pass one pointer which holds all inputs and where
      the output is written.
      This also reduces the size of generated Turbofan graphs, since only one
      stack slot is needed and less arguments are passed to the call.
      It also fixes undefined behaviour, since we were passing a pointer e.g.
      as {uint64_t*}, but accessed it using {ReadUnalignedValue}. Now we pass
      an Address, which does not have any alignment constraints.
      
      R=ahaas@chromium.org
      
      Bug: v8:3770, v8:6600
      Change-Id: I54ef80b7e27f77587a9062560c0b3e01d6593e6d
      Reviewed-on: https://chromium-review.googlesource.com/1019147
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52702}
      8d2d0513
  25. 19 Apr, 2018 1 commit
  26. 18 Apr, 2018 1 commit