1. 19 Aug, 2020 8 commits
  2. 18 Aug, 2020 28 commits
  3. 17 Aug, 2020 4 commits
    • Ng Zhi An's avatar
      [wasm-simd] Support returning Simd128 on caller's stack · 360c9294
      Ng Zhi An authored
      In Liftoff, we were missing kS128 cases to load to/from stack.
      
      For the x64 and ARM64 instruction selector, the calculation of
      reverse_slot is incorrect for 128-bit values:
      
      - reverse_slot += 2 (size of 128-bit values, 2 pointers)
      - this copies from slot -2 into register
      - but the value starts at slot -1, it occupies slots -1 and -2
      - we end up copying slot -2 (most significant half) of the register, and
      also slot -3, which is where rsi was store (Wasm instance addr)
      - the test ends up with a different result every time
      
      The calculation of reverse_slot is changed to follow how ia32 and ARM
      does it, which is to start with
      
      - reverse_slot = 0
      - in the code-generator, add 1 to the slot
      - then after emitting Peek operation, reverse_slot += 2
      
      The fixes for x64 and ARM64 are in both instruction-selector and
      code-generator.
      
      ia32 and ARM didn't support writing kSimd128 values yet, it was only a
      missing check in code-generator, so add that in.
      
      For ARM, the codegen is more involved, vld1 does not support addressing
      with an offset, so we have to do the addition into a scratch register.
      
      Also adding a test for returning multiple v128. V128 is not exposed to
      JavaScript, so we use a Wasm function call, and then an involved chain
      of extract lanes, returning 6 i32 which we verify the values of. It
      extracts the first and last lane of the i32x4 value in order to catch
      bugs where we write or read to a wrong stack slot (off by 1).
      
      The simd-scalar-lowering for kCall was only handling single s128 return,
      we adopt the way i64-lowering handles kCall, so that is can now handle
      any kinds of calls with s128 in the descriptor.
      
      Bug: v8:10794
      Bug: chromium:1115230
      Change-Id: I2ccdd55f6292bc5794be78053b27e14da8cce70e
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2355189
      Commit-Queue: Zhi An Ng <zhin@chromium.org>
      Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
      Reviewed-by: 's avatarBill Budge <bbudge@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69439}
      360c9294
    • Francis McCabe's avatar
      Revert "Reland^3 "[flags] warn about contradictory flags"" · a5756085
      Francis McCabe authored
      This reverts commit dc18b822.
      
      Reason for revert: still causing failures: https://ci.chromium.org/p/v8/builders/ci/V8%20Linux%20-%20debug/31566
      
      Original change's description:
      > Reland^3 "[flags] warn about contradictory flags"
      > 
      > This is a reland of 0ba115e6
      > Changes:
      > - Also allow second parameter influenced by --cache to be reassigned.
      > - Fix --stress-opt to only --always-opt in the last iteration as before.
      > 
      > Original change's description:
      > > Reland^2 "[flags] warn about contradictory flags"
      > >
      > > This is a reland of d8f8a7e2
      > > Change compared to last reland:
      > > - Do not check for d8 flag contradictions in the presence of --fuzzing
      > > - Allow identical re-declaration of --cache=*
      > >
      > > Original change's description:
      > > > Reland "[flags] warn about contradictory flags"
      > > >
      > > > This is a reland of b8f91666
      > > > Difference to previous CL: Additional functionality to specify
      > > > incompatible flags based on GN variables and extra-flags, used
      > > > to fix the issues that came up on the waterfall.
      > > >
      > > > This also changes the rules regarding repeated flags: While
      > > > explicitly repeated flags are allowed for boolean values as long
      > > > as they are identical, repeated flags or explicit flags in the
      > > > presence of an active implication are disallowed for non-boolean
      > > > flags. The latter simplifies specifying conflict rules in
      > > > variants.py. Otherwise a rule like
      > > >
      > > > INCOMPATIBLE_FLAGS_PER_EXTRA_FLAG = {
      > > >   "--gc-interval=*": ["--gc-interval=*"],
      > > > }
      > > >
      > > > wouldn't work because specifying the same GC interval twice
      > > > wouldn't actually count as a conflict. This was an issue with
      > > > test/mjsunit/wasm/gc-buffer.js, which specifies
      > > > --gc-interval=500 exactly like the extra flag by the stress bot.
      > > >
      > > > Also, this now expands contradictory flags checking to d8 flags
      > > > for consistency.
      > > >
      > > > Original change's description:
      > > > > [flags] warn about contradictory flags
      > > > >
      > > > > Design Doc: https://docs.google.com/document/d/1lkvu8crkK7Ei39qjkPCFijpNyxWXsOktG9GB-7K34jM/
      > > > >
      > > > > Bug: v8:10577
      > > > > Change-Id: Ib9cfdffa401c48c895bf31caed5ee03545beddab
      > > > > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2154792
      > > > > Reviewed-by: Clemens Backes <clemensb@chromium.org>
      > > > > Reviewed-by: Michael Achenbach <machenbach@chromium.org>
      > > > > Reviewed-by: Georg Neis <neis@chromium.org>
      > > > > Reviewed-by: Tamer Tas <tmrts@chromium.org>
      > > > > Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
      > > > > Cr-Commit-Position: refs/heads/master@{#68168}
      > > >
      > > > Bug: v8:10577
      > > > Change-Id: I268e590ee18a535b13dee14eeb15ddd0a9ee8341
      > > > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2235115
      > > > Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
      > > > Reviewed-by: Tamer Tas <tmrts@chromium.org>
      > > > Reviewed-by: Clemens Backes <clemensb@chromium.org>
      > > > Reviewed-by: Georg Neis <neis@chromium.org>
      > > > Cr-Commit-Position: refs/heads/master@{#68989}
      > >
      > > Bug: v8:10577
      > > Change-Id: I31d2794d4f9ff630f3444210100c64d67d881276
      > > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2339464
      > > Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
      > > Reviewed-by: Clemens Backes <clemensb@chromium.org>
      > > Cr-Commit-Position: refs/heads/master@{#69339}
      > 
      > Bug: v8:10577
      > Cq-Include-Trybots: luci.v8.try:v8_linux64_tsan_rel_ng
      > Cq-Include-Trybots: luci.v8.try:v8_linux64_tsan_isolates_rel_ng
      > Change-Id: I4a69dc57a102782cb453144323e3752ac8278624
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2352770
      > Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
      > Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
      > Reviewed-by: Clemens Backes <clemensb@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#69433}
      
      TBR=machenbach@chromium.org,neis@chromium.org,clemensb@chromium.org,tebbi@chromium.org,tmrts@chromium.org
      
      Change-Id: I4ccdd7b931d0ddccbcec1d6cfae8d4874ee49cfc
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: v8:10577
      Cq-Include-Trybots: luci.v8.try:v8_linux64_tsan_rel_ng
      Cq-Include-Trybots: luci.v8.try:v8_linux64_tsan_isolates_rel_ng
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2360414Reviewed-by: 's avatarFrancis McCabe <fgm@chromium.org>
      Commit-Queue: Francis McCabe <fgm@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69438}
      a5756085
    • Francis McCabe's avatar
      Revert "[csa][cleanup] Remove ParameterMode/TNodify IntPtrOrSmiConstant" · 7a5d72d3
      Francis McCabe authored
      This reverts commit 0fe7a6cf.
      
      Reason for revert: Causing tree to fail: https://ci.chromium.org/p/v8/builders/ci/V8%20Linux%20-%20debug/31566
      
      Original change's description:
      > [csa][cleanup] Remove ParameterMode/TNodify IntPtrOrSmiConstant
      > 
      > Bug: v8:9708, v8:6949
      > Change-Id: I0a17eab689d8297218af92658bf5e63d34c94dfc
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2356387
      > Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
      > Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#69435}
      
      TBR=rmcilroy@chromium.org,solanes@chromium.org
      
      Change-Id: Ie816bffee696bb03cf26e195405f0fe8509dd0f3
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: v8:9708
      Bug: v8:6949
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2360048Reviewed-by: 's avatarFrancis McCabe <fgm@chromium.org>
      Commit-Queue: Francis McCabe <fgm@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69437}
      7a5d72d3
    • Santiago Aboy Solanes's avatar
      [csa][cleanup] Remove ParameterMode versions of parameter casting · 4ca68db1
      Santiago Aboy Solanes authored
      Removed all uses of ParameterToTagged and TaggedToParameter but
      forgot to remove the method themselves.
      
      Bug: v8:9708, v8:6949
      Change-Id: I8718a0739ce81ca42546125fac765618e0208cb2
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2356388Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
      Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69436}
      4ca68db1