- 28 Oct, 2020 1 commit
-
-
Zhi An Ng authored
Prototype i8x16, i16x8, i32x4, i64x2 sign select on x64 and interpreter. Bug: v8:10983 Change-Id: I7d6f39a2cb4c2aefe31daac782978fe8b363dd1a Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2486235 Commit-Queue: Zhi An Ng <zhin@chromium.org> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Reviewed-by:
Bill Budge <bbudge@chromium.org> Cr-Commit-Position: refs/heads/master@{#70818}
-
- 21 Oct, 2020 1 commit
-
-
Jakob Gruber authored
This is a reland of fbfa9bf4 The arm64 was missing proper codegen for CFI, thus sizes were off. Original change's description: > Reland "[deoptimizer] Change deopt entries into builtins" > > This is a reland of 7f58ced7 > > It fixes the different exit size emitted on x64/Atom CPUs due to > performance tuning in TurboAssembler::Call. Additionally, add > cctests to verify the fixed size exits. > > Original change's description: > > [deoptimizer] Change deopt entries into builtins > > > > While the overall goal of this commit is to change deoptimization > > entries into builtins, there are multiple related things happening: > > > > - Deoptimization entries, formerly stubs (i.e. Code objects generated > > at runtime, guaranteed to be immovable), have been converted into > > builtins. The major restriction is that we now need to preserve the > > kRootRegister, which was formerly used on most architectures to pass > > the deoptimization id. The solution differs based on platform. > > - Renamed DEOPT_ENTRIES_OR_FOR_TESTING code kind to FOR_TESTING. > > - Removed heap/ support for immovable Code generation. > > - Removed the DeserializerData class (no longer needed). > > - arm64: to preserve 4-byte deopt exits, introduced a new optimization > > in which the final jump to the deoptimization entry is generated > > once per Code object, and deopt exits can continue to emit a > > near-call. > > - arm,ia32,x64: change to fixed-size deopt exits. This reduces exit > > sizes by 4/8, 5, and 5 bytes, respectively. > > > > On arm the deopt exit size is reduced from 12 (or 16) bytes to 8 bytes > > by using the same strategy as on arm64 (recalc deopt id from return > > address). Before: > > > > e300a002 movw r10, <id> > > e59fc024 ldr ip, [pc, <entry offset>] > > e12fff3c blx ip > > > > After: > > > > e59acb35 ldr ip, [r10, <entry offset>] > > e12fff3c blx ip > > > > On arm64 the deopt exit size remains 4 bytes (or 8 bytes in same cases > > with CFI). Additionally, up to 4 builtin jumps are emitted per Code > > object (max 32 bytes added overhead per Code object). Before: > > > > 9401cdae bl <entry offset> > > > > After: > > > > # eager deoptimization entry jump. > > f95b1f50 ldr x16, [x26, <eager entry offset>] > > d61f0200 br x16 > > # lazy deoptimization entry jump. > > f95b2b50 ldr x16, [x26, <lazy entry offset>] > > d61f0200 br x16 > > # the deopt exit. > > 97fffffc bl <eager deoptimization entry jump offset> > > > > On ia32 the deopt exit size is reduced from 10 to 5 bytes. Before: > > > > bb00000000 mov ebx,<id> > > e825f5372b call <entry> > > > > After: > > > > e8ea2256ba call <entry> > > > > On x64 the deopt exit size is reduced from 12 to 7 bytes. Before: > > > > 49c7c511000000 REX.W movq r13,<id> > > e8ea2f0700 call <entry> > > > > After: > > > > 41ff9560360000 call [r13+<entry offset>] > > > > Bug: v8:8661,v8:8768 > > Change-Id: I13e30aedc360474dc818fecc528ce87c3bfeed42 > > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2465834 > > Commit-Queue: Jakob Gruber <jgruber@chromium.org> > > Reviewed-by: Ross McIlroy <rmcilroy@chromium.org> > > Reviewed-by: Tobias Tebbi <tebbi@chromium.org> > > Reviewed-by: Ulan Degenbaev <ulan@chromium.org> > > Cr-Commit-Position: refs/heads/master@{#70597} > > Tbr: ulan@chromium.org, tebbi@chromium.org, rmcilroy@chromium.org > Bug: v8:8661,v8:8768,chromium:1140165 > Change-Id: Ibcd5c39c58a70bf2b2ac221aa375fc68d495e144 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2485506 > Reviewed-by: Jakob Gruber <jgruber@chromium.org> > Reviewed-by: Tobias Tebbi <tebbi@chromium.org> > Commit-Queue: Jakob Gruber <jgruber@chromium.org> > Cr-Commit-Position: refs/heads/master@{#70655} Tbr: ulan@chromium.org, tebbi@chromium.org, rmcilroy@chromium.org Bug: v8:8661 Bug: v8:8768 Bug: chromium:1140165 Change-Id: I471cc94fc085e527dc9bfb5a84b96bd907c2333f Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2488682Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#70672}
-
- 20 Oct, 2020 3 commits
-
-
Maya Lekova authored
This reverts commit fbfa9bf4. Reason for revert: Seems to break arm64 sim CFI build (please see DeoptExitSizeIfFixed) - https://ci.chromium.org/p/v8/builders/ci/V8%20Linux%20-%20arm64%20-%20sim%20-%20CFI/2808 Original change's description: > Reland "[deoptimizer] Change deopt entries into builtins" > > This is a reland of 7f58ced7 > > It fixes the different exit size emitted on x64/Atom CPUs due to > performance tuning in TurboAssembler::Call. Additionally, add > cctests to verify the fixed size exits. > > Original change's description: > > [deoptimizer] Change deopt entries into builtins > > > > While the overall goal of this commit is to change deoptimization > > entries into builtins, there are multiple related things happening: > > > > - Deoptimization entries, formerly stubs (i.e. Code objects generated > > at runtime, guaranteed to be immovable), have been converted into > > builtins. The major restriction is that we now need to preserve the > > kRootRegister, which was formerly used on most architectures to pass > > the deoptimization id. The solution differs based on platform. > > - Renamed DEOPT_ENTRIES_OR_FOR_TESTING code kind to FOR_TESTING. > > - Removed heap/ support for immovable Code generation. > > - Removed the DeserializerData class (no longer needed). > > - arm64: to preserve 4-byte deopt exits, introduced a new optimization > > in which the final jump to the deoptimization entry is generated > > once per Code object, and deopt exits can continue to emit a > > near-call. > > - arm,ia32,x64: change to fixed-size deopt exits. This reduces exit > > sizes by 4/8, 5, and 5 bytes, respectively. > > > > On arm the deopt exit size is reduced from 12 (or 16) bytes to 8 bytes > > by using the same strategy as on arm64 (recalc deopt id from return > > address). Before: > > > > e300a002 movw r10, <id> > > e59fc024 ldr ip, [pc, <entry offset>] > > e12fff3c blx ip > > > > After: > > > > e59acb35 ldr ip, [r10, <entry offset>] > > e12fff3c blx ip > > > > On arm64 the deopt exit size remains 4 bytes (or 8 bytes in same cases > > with CFI). Additionally, up to 4 builtin jumps are emitted per Code > > object (max 32 bytes added overhead per Code object). Before: > > > > 9401cdae bl <entry offset> > > > > After: > > > > # eager deoptimization entry jump. > > f95b1f50 ldr x16, [x26, <eager entry offset>] > > d61f0200 br x16 > > # lazy deoptimization entry jump. > > f95b2b50 ldr x16, [x26, <lazy entry offset>] > > d61f0200 br x16 > > # the deopt exit. > > 97fffffc bl <eager deoptimization entry jump offset> > > > > On ia32 the deopt exit size is reduced from 10 to 5 bytes. Before: > > > > bb00000000 mov ebx,<id> > > e825f5372b call <entry> > > > > After: > > > > e8ea2256ba call <entry> > > > > On x64 the deopt exit size is reduced from 12 to 7 bytes. Before: > > > > 49c7c511000000 REX.W movq r13,<id> > > e8ea2f0700 call <entry> > > > > After: > > > > 41ff9560360000 call [r13+<entry offset>] > > > > Bug: v8:8661,v8:8768 > > Change-Id: I13e30aedc360474dc818fecc528ce87c3bfeed42 > > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2465834 > > Commit-Queue: Jakob Gruber <jgruber@chromium.org> > > Reviewed-by: Ross McIlroy <rmcilroy@chromium.org> > > Reviewed-by: Tobias Tebbi <tebbi@chromium.org> > > Reviewed-by: Ulan Degenbaev <ulan@chromium.org> > > Cr-Commit-Position: refs/heads/master@{#70597} > > Tbr: ulan@chromium.org, tebbi@chromium.org, rmcilroy@chromium.org > Bug: v8:8661,v8:8768,chromium:1140165 > Change-Id: Ibcd5c39c58a70bf2b2ac221aa375fc68d495e144 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2485506 > Reviewed-by: Jakob Gruber <jgruber@chromium.org> > Reviewed-by: Tobias Tebbi <tebbi@chromium.org> > Commit-Queue: Jakob Gruber <jgruber@chromium.org> > Cr-Commit-Position: refs/heads/master@{#70655} TBR=ulan@chromium.org,rmcilroy@chromium.org,jgruber@chromium.org,tebbi@chromium.org Change-Id: I4739a3475bfd8ee0cfbe4b9a20382f91a6ef1bf0 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:8661 Bug: v8:8768 Bug: chromium:1140165 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2485223Reviewed-by:
Maya Lekova <mslekova@chromium.org> Commit-Queue: Maya Lekova <mslekova@chromium.org> Cr-Commit-Position: refs/heads/master@{#70658}
-
Jakob Gruber authored
This is a reland of 7f58ced7 It fixes the different exit size emitted on x64/Atom CPUs due to performance tuning in TurboAssembler::Call. Additionally, add cctests to verify the fixed size exits. Original change's description: > [deoptimizer] Change deopt entries into builtins > > While the overall goal of this commit is to change deoptimization > entries into builtins, there are multiple related things happening: > > - Deoptimization entries, formerly stubs (i.e. Code objects generated > at runtime, guaranteed to be immovable), have been converted into > builtins. The major restriction is that we now need to preserve the > kRootRegister, which was formerly used on most architectures to pass > the deoptimization id. The solution differs based on platform. > - Renamed DEOPT_ENTRIES_OR_FOR_TESTING code kind to FOR_TESTING. > - Removed heap/ support for immovable Code generation. > - Removed the DeserializerData class (no longer needed). > - arm64: to preserve 4-byte deopt exits, introduced a new optimization > in which the final jump to the deoptimization entry is generated > once per Code object, and deopt exits can continue to emit a > near-call. > - arm,ia32,x64: change to fixed-size deopt exits. This reduces exit > sizes by 4/8, 5, and 5 bytes, respectively. > > On arm the deopt exit size is reduced from 12 (or 16) bytes to 8 bytes > by using the same strategy as on arm64 (recalc deopt id from return > address). Before: > > e300a002 movw r10, <id> > e59fc024 ldr ip, [pc, <entry offset>] > e12fff3c blx ip > > After: > > e59acb35 ldr ip, [r10, <entry offset>] > e12fff3c blx ip > > On arm64 the deopt exit size remains 4 bytes (or 8 bytes in same cases > with CFI). Additionally, up to 4 builtin jumps are emitted per Code > object (max 32 bytes added overhead per Code object). Before: > > 9401cdae bl <entry offset> > > After: > > # eager deoptimization entry jump. > f95b1f50 ldr x16, [x26, <eager entry offset>] > d61f0200 br x16 > # lazy deoptimization entry jump. > f95b2b50 ldr x16, [x26, <lazy entry offset>] > d61f0200 br x16 > # the deopt exit. > 97fffffc bl <eager deoptimization entry jump offset> > > On ia32 the deopt exit size is reduced from 10 to 5 bytes. Before: > > bb00000000 mov ebx,<id> > e825f5372b call <entry> > > After: > > e8ea2256ba call <entry> > > On x64 the deopt exit size is reduced from 12 to 7 bytes. Before: > > 49c7c511000000 REX.W movq r13,<id> > e8ea2f0700 call <entry> > > After: > > 41ff9560360000 call [r13+<entry offset>] > > Bug: v8:8661,v8:8768 > Change-Id: I13e30aedc360474dc818fecc528ce87c3bfeed42 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2465834 > Commit-Queue: Jakob Gruber <jgruber@chromium.org> > Reviewed-by: Ross McIlroy <rmcilroy@chromium.org> > Reviewed-by: Tobias Tebbi <tebbi@chromium.org> > Reviewed-by: Ulan Degenbaev <ulan@chromium.org> > Cr-Commit-Position: refs/heads/master@{#70597} Tbr: ulan@chromium.org, tebbi@chromium.org, rmcilroy@chromium.org Bug: v8:8661,v8:8768,chromium:1140165 Change-Id: Ibcd5c39c58a70bf2b2ac221aa375fc68d495e144 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2485506Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#70655}
-
Jakob Gruber authored
This reverts commit 7f58ced7. Reason for revert: Segfaults on Atom_x64 https://ci.chromium.org/p/v8-internal/builders/ci/v8_linux64_atom_perf/5686? Original change's description: > [deoptimizer] Change deopt entries into builtins > > While the overall goal of this commit is to change deoptimization > entries into builtins, there are multiple related things happening: > > - Deoptimization entries, formerly stubs (i.e. Code objects generated > at runtime, guaranteed to be immovable), have been converted into > builtins. The major restriction is that we now need to preserve the > kRootRegister, which was formerly used on most architectures to pass > the deoptimization id. The solution differs based on platform. > - Renamed DEOPT_ENTRIES_OR_FOR_TESTING code kind to FOR_TESTING. > - Removed heap/ support for immovable Code generation. > - Removed the DeserializerData class (no longer needed). > - arm64: to preserve 4-byte deopt exits, introduced a new optimization > in which the final jump to the deoptimization entry is generated > once per Code object, and deopt exits can continue to emit a > near-call. > - arm,ia32,x64: change to fixed-size deopt exits. This reduces exit > sizes by 4/8, 5, and 5 bytes, respectively. > > On arm the deopt exit size is reduced from 12 (or 16) bytes to 8 bytes > by using the same strategy as on arm64 (recalc deopt id from return > address). Before: > > e300a002 movw r10, <id> > e59fc024 ldr ip, [pc, <entry offset>] > e12fff3c blx ip > > After: > > e59acb35 ldr ip, [r10, <entry offset>] > e12fff3c blx ip > > On arm64 the deopt exit size remains 4 bytes (or 8 bytes in same cases > with CFI). Additionally, up to 4 builtin jumps are emitted per Code > object (max 32 bytes added overhead per Code object). Before: > > 9401cdae bl <entry offset> > > After: > > # eager deoptimization entry jump. > f95b1f50 ldr x16, [x26, <eager entry offset>] > d61f0200 br x16 > # lazy deoptimization entry jump. > f95b2b50 ldr x16, [x26, <lazy entry offset>] > d61f0200 br x16 > # the deopt exit. > 97fffffc bl <eager deoptimization entry jump offset> > > On ia32 the deopt exit size is reduced from 10 to 5 bytes. Before: > > bb00000000 mov ebx,<id> > e825f5372b call <entry> > > After: > > e8ea2256ba call <entry> > > On x64 the deopt exit size is reduced from 12 to 7 bytes. Before: > > 49c7c511000000 REX.W movq r13,<id> > e8ea2f0700 call <entry> > > After: > > 41ff9560360000 call [r13+<entry offset>] > > Bug: v8:8661,v8:8768 > Change-Id: I13e30aedc360474dc818fecc528ce87c3bfeed42 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2465834 > Commit-Queue: Jakob Gruber <jgruber@chromium.org> > Reviewed-by: Ross McIlroy <rmcilroy@chromium.org> > Reviewed-by: Tobias Tebbi <tebbi@chromium.org> > Reviewed-by: Ulan Degenbaev <ulan@chromium.org> > Cr-Commit-Position: refs/heads/master@{#70597} TBR=ulan@chromium.org,rmcilroy@chromium.org,jgruber@chromium.org,tebbi@chromium.org # Not skipping CQ checks because original CL landed > 1 day ago. Bug: v8:8661,v8:8768,chromium:1140165 Change-Id: I3df02ab42f6e02233d9f6fb80e8bb18f76870d91 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2485504Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#70649}
-
- 19 Oct, 2020 1 commit
-
-
Jakob Gruber authored
While the overall goal of this commit is to change deoptimization entries into builtins, there are multiple related things happening: - Deoptimization entries, formerly stubs (i.e. Code objects generated at runtime, guaranteed to be immovable), have been converted into builtins. The major restriction is that we now need to preserve the kRootRegister, which was formerly used on most architectures to pass the deoptimization id. The solution differs based on platform. - Renamed DEOPT_ENTRIES_OR_FOR_TESTING code kind to FOR_TESTING. - Removed heap/ support for immovable Code generation. - Removed the DeserializerData class (no longer needed). - arm64: to preserve 4-byte deopt exits, introduced a new optimization in which the final jump to the deoptimization entry is generated once per Code object, and deopt exits can continue to emit a near-call. - arm,ia32,x64: change to fixed-size deopt exits. This reduces exit sizes by 4/8, 5, and 5 bytes, respectively. On arm the deopt exit size is reduced from 12 (or 16) bytes to 8 bytes by using the same strategy as on arm64 (recalc deopt id from return address). Before: e300a002 movw r10, <id> e59fc024 ldr ip, [pc, <entry offset>] e12fff3c blx ip After: e59acb35 ldr ip, [r10, <entry offset>] e12fff3c blx ip On arm64 the deopt exit size remains 4 bytes (or 8 bytes in same cases with CFI). Additionally, up to 4 builtin jumps are emitted per Code object (max 32 bytes added overhead per Code object). Before: 9401cdae bl <entry offset> After: # eager deoptimization entry jump. f95b1f50 ldr x16, [x26, <eager entry offset>] d61f0200 br x16 # lazy deoptimization entry jump. f95b2b50 ldr x16, [x26, <lazy entry offset>] d61f0200 br x16 # the deopt exit. 97fffffc bl <eager deoptimization entry jump offset> On ia32 the deopt exit size is reduced from 10 to 5 bytes. Before: bb00000000 mov ebx,<id> e825f5372b call <entry> After: e8ea2256ba call <entry> On x64 the deopt exit size is reduced from 12 to 7 bytes. Before: 49c7c511000000 REX.W movq r13,<id> e8ea2f0700 call <entry> After: 41ff9560360000 call [r13+<entry offset>] Bug: v8:8661,v8:8768 Change-Id: I13e30aedc360474dc818fecc528ce87c3bfeed42 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2465834 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#70597}
-
- 15 Oct, 2020 1 commit
-
-
Ng Zhi An authored
These instructions will be used for prototyping Wasm SIMD's store lane later on, separated the implementation for assembler and disassembler into this patch to make things smaller. Curiously, movhps and movlhps seems to have the same encoding, 0f 16, so I'm not sure not sure how to differentiate them in the disassembler besides using the mod field, since movlhps only takes xmm registers, whereas movhps always take 1 operand. Bug: v8:10975 Change-Id: I8be9a31b1c9a5515038f9c8c55ef30d1ba063ea7 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2471977Reviewed-by:
Bill Budge <bbudge@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#70520}
-
- 07 Oct, 2020 1 commit
-
-
Ng Zhi An authored
The existing macro assembler define Pinsrb, which expects 3 arguments: - XMMRegister dst - Register/Operand src - uint8_t imm which overwrites dst with src at lane specified by imm. That means we cannot use the AVX version, which has 4 arguments, and does not overwrite dst. This refactoring defines the 4 argument AVX version instead, and if AVX is not supported, fall back to the SSE version, and ensure that the value is copied over into dst first. For convenience, we define an overload with 3 arguments that duplicates dst, this replicates the SSE behavior, so that not all callers have to be updated. Bug: v8:10975, v8:10933 Change-Id: I6f9b9d37fa08d3f5cff4f040ae7d5e1f0cf36455 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2444096 Commit-Queue: Zhi An Ng <zhin@chromium.org> Reviewed-by:
Bill Budge <bbudge@chromium.org> Cr-Commit-Position: refs/heads/master@{#70392}
-
- 30 Sep, 2020 1 commit
-
-
Jakob Gruber authored
CodeKind::OPTIMIZED_CODE -> TURBOFAN Kinds are now more fine-grained and distinguish between TF, TP, NCI. CodeKind::STUB -> DEOPT_ENTRIES_OR_FOR_TESTING Code stubs (like builtins, but generated at runtime) were removed from the codebase years ago, this is the last remnant. This kind is used only for deopt entries (which should be converted into builtins) and for tests. Change-Id: I67beb15377cb60f395e9b051b25f3e5764982e93 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2440335 Auto-Submit: Jakob Gruber <jgruber@chromium.org> Commit-Queue: Mythri Alle <mythria@chromium.org> Reviewed-by:
Mythri Alle <mythria@chromium.org> Cr-Commit-Position: refs/heads/master@{#70234}
-
- 25 Aug, 2020 1 commit
-
-
Ng Zhi An authored
Some shuffles take have either register or memory operand for second input, but the codegen incorrectly assumes that it is always a register. Bug: v8:10824 Change-Id: Ia2df233dad4ed451e52e57e35cce5c80db0905db Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2373586 Commit-Queue: Zhi An Ng <zhin@chromium.org> Reviewed-by:
Bill Budge <bbudge@chromium.org> Cr-Commit-Position: refs/heads/master@{#69562}
-
- 05 Aug, 2020 1 commit
-
-
Jakob Gruber authored
With the new Turbofan variants (NCI and Turboprop), we need a way to distinguish between them both during and after compilation. We initially introduced CompilationTarget to track the variant during compilation, but decided to reuse the code kind as the canonical spot to store this information instead. Why? Because it is an established mechanism, already available in most of the necessary spots (inside the pipeline, on Code objects, in profiling traces). This CL removes CompilationTarget and adds a new NATIVE_CONTEXT_INDEPENDENT kind, plus helper functions to determine various things about a given code kind (e.g.: does this code kind deopt?). As a (very large) drive-by, refactor both Code::Kind and AbstractCode::Kind into a new CodeKind enum class. Bug: v8:8888 Change-Id: Ie858b9a53311b0731630be35cf5cd108dee95b39 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2336793 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Clemens Backes <clemensb@chromium.org> Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Dominik Inführ <dinfuehr@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#69244}
-
- 10 Jun, 2020 1 commit
-
-
Ng Zhi An authored
This is a reland of f7f72b7b This was reverted because of a test timing out on slow_path variant (https://crrev.com/c/2237131 for details). Turns out the test is just really slow, and was skipped on this variant in https://crrev.com/c/2237628. Relanding without changes. Original change's description: > [wasm-simd] Prototype f64x2 rounding instructions > > Implements f64x2 ceil, floor, trunc, nearestint, for interpreter and > x64. > > Bug: v8:10553 > Change-Id: I12a260a3b1d728368e5525d317d30fc9581cae04 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2213082 > Commit-Queue: Zhi An Ng <zhin@chromium.org> > Reviewed-by: Tobias Tebbi <tebbi@chromium.org> > Reviewed-by: Deepti Gandluri <gdeepti@chromium.org> > Cr-Commit-Position: refs/heads/master@{#68241} Tbr: tebbi@chromium.org Bug: v8:10553 Change-Id: I4cdc23d0556f11310d32fa066f40b057fd49d2d7 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2237350 Commit-Queue: Zhi An Ng <zhin@chromium.org> Reviewed-by:
Deepti Gandluri <gdeepti@chromium.org> Reviewed-by:
Adam Klein <adamk@chromium.org> Cr-Commit-Position: refs/heads/master@{#68304}
-
- 09 Jun, 2020 1 commit
-
-
Leszek Swirski authored
This reverts commit f7f72b7b. Reason for revert: Flaky timeouts of slow-path tests -- specifically, mjsunit/regress/wasm/regress-9017, which appears to have regressed from ~2 min to ~3-4 min https://logs.chromium.org/logs/v8/buildbucket/cr-buildbucket.appspot.com/8878016799136124416/+/steps/Check_-_slow_path__flakes_/0/logs/regress-9017/0 Original change's description: > [wasm-simd] Prototype f64x2 rounding instructions > > Implements f64x2 ceil, floor, trunc, nearestint, for interpreter and > x64. > > Bug: v8:10553 > Change-Id: I12a260a3b1d728368e5525d317d30fc9581cae04 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2213082 > Commit-Queue: Zhi An Ng <zhin@chromium.org> > Reviewed-by: Tobias Tebbi <tebbi@chromium.org> > Reviewed-by: Deepti Gandluri <gdeepti@chromium.org> > Cr-Commit-Position: refs/heads/master@{#68241} TBR=gdeepti@chromium.org,tebbi@chromium.org,zhin@chromium.org Change-Id: I9915dd375c7f0e08b5414189efb29ed1c90cb96d No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:10553 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2237131Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Commit-Queue: Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/master@{#68248}
-
- 08 Jun, 2020 1 commit
-
-
Ng Zhi An authored
Implements f64x2 ceil, floor, trunc, nearestint, for interpreter and x64. Bug: v8:10553 Change-Id: I12a260a3b1d728368e5525d317d30fc9581cae04 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2213082 Commit-Queue: Zhi An Ng <zhin@chromium.org> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Reviewed-by:
Deepti Gandluri <gdeepti@chromium.org> Cr-Commit-Position: refs/heads/master@{#68241}
-
- 03 Jun, 2020 1 commit
-
-
Ng Zhi An authored
vroundps assembly is incorrect: - the signature was wrong, vroundps takes 2 operands and 1 immediate - when calling vinstr, should always pass xmm0, this wasn't causing issues because our test cases were restricted enough that it was always xmm0 anyway - the macro assembler should use AVX_OP_SSE4_1, since roundps requires SSE4_1 - drive-by fix for roundss and roundsd to be AVX_OP_SSE4_1 - add disasm for roundps and vroundps, and test them Bug: v8:10553 Change-Id: I4046eb81a9f18d5af7137bbd46bfa0478e5a9ab2 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2227252Reviewed-by:
Deepti Gandluri <gdeepti@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#68157}
-
- 09 Apr, 2020 1 commit
-
-
Ng Zhi An authored
While working on some AVX stuff, saw that these ops were missing from the test cases. Change-Id: Ie41be465a0715323096c6549b21aa9e994eaac3e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2137472Reviewed-by:
Deepti Gandluri <gdeepti@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#67072}
-
- 06 Apr, 2020 1 commit
-
-
Ng Zhi An authored
Implement i8x16.bitmask, i16x8.bitmask, i32x4.bitmask on x64. Bug: v8:10308 Change-Id: Id47cb229de77d80d0a7ec91f4862a91258ff1979 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2127317 Commit-Queue: Zhi An Ng <zhin@chromium.org> Reviewed-by:
Deepti Gandluri <gdeepti@chromium.org> Cr-Commit-Position: refs/heads/master@{#67022}
-
- 25 Mar, 2020 1 commit
-
-
Ng Zhi An authored
For a bunch of s8x16, s16x2 and s32x4 shuffle ops (generated by s8x16shuffle). Bug: v8:9561 Change-Id: I0e5cd8a90edba8bc15918c0ca1dc830475db2769 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2110952Reviewed-by:
Deepti Gandluri <gdeepti@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#66865}
-
- 04 Mar, 2020 1 commit
-
-
Ng Zhi An authored
Bug: v8:9561 Change-Id: I4a2c6217dea540b81256dcc833412da573f54795 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2069403Reviewed-by:
Deepti Gandluri <gdeepti@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#66587}
-
- 27 Feb, 2020 1 commit
-
-
Ng Zhi An authored
Bug: v8:9561 Change-Id: Ic57b38cefbdc21045d71601c67995d3568634c27 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2069400 Commit-Queue: Zhi An Ng <zhin@chromium.org> Reviewed-by:
Deepti Gandluri <gdeepti@chromium.org> Cr-Commit-Position: refs/heads/master@{#66479}
-
- 21 Feb, 2020 1 commit
-
-
Ng Zhi An authored
The AVX versions of pabsb, pabsw, and pabsd have an incorrect function signature, they should only have two operands. So, extract them into another macro list. And separately generate the right signatures and implementations. Also update the disasm and tests. Bug: v8:10233 Change-Id: I95ee0bf12bb285d10324ecedcec28e941f64d2dc Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2063199Reviewed-by:
Deepti Gandluri <gdeepti@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#66382}
-
- 05 Feb, 2020 1 commit
-
-
Ng Zhi An authored
These instructions were probably leftover from an earlier cleanup. We can move them into respective macro lists, then delete away the redundant declarations, definitions, disasm, and tests. We were missing disasm tests for SSE2_INSTRUCTION_LIST_SD, so add that in. Change-Id: I8f27beaf57e7a338097690073910a0863f00b26a Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2036833Reviewed-by:
Deepti Gandluri <gdeepti@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#66123}
-
- 03 Feb, 2020 1 commit
-
-
Ng Zhi An authored
The assembly of sqrtpd when using Sqrtpd macro was wrong, since Sqrtpd(xmm1, xmm1) will incorrect generated vsqrtpd(xmm1, xmm1, xmm1), which is nonsensical, since vsqrtpd only takes two operands. The expected instruction should be vsqrtpd(xmm1, xmm0, xmm1) in terms of the encoding, which is vsqrtpd(xmm1, xmm1). So, move sqrtpd and cvtps2dq out into their own macro list, because they have two operands in their AVX form, unlike the rest of the instructions in SSE2_INSTRUCTION_LIST. Also updated disasm and tests to use this new list. Fixed: v8:10170 Change-Id: Ia9343c9a3ae64596bbc876744556e1dcea2a443b Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2032195Reviewed-by:
Deepti Gandluri <gdeepti@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#66088}
-
- 27 Jan, 2020 1 commit
-
-
Andreas Haas authored
This CL introduces the negb and negw instructions (8-bit and 16-bit versions of neg) in the x64 assembler. These instructions are needed to implement I32AtomicSub8U and similar WebAssembly instructions efficiently. The existing implementation was embedded in a generic macro, and it was difficult to change it without introducing also the 8-bit and 16-bit versions of many other instructions. This would have introduced a lot of dead code. Instead this CL extracted the neg instructions from the macro and implements them directly. This should be fine because the assembler does not change much, and approachability of the code is improved. R=clemensb@chromium.org Bug: v8:10108 Change-Id: I46099bbebd47f864311a67da3ba8ddc4fe4cd35d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2019165 Commit-Queue: Andreas Haas <ahaas@chromium.org> Reviewed-by:
Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#65989}
-
- 21 Jan, 2020 1 commit
-
-
Andreas Haas authored
This CL introduces the xadd instruction to the x64 assembler so it can be used to implement WebAssembly's AtomicAdd. This is done in a separate CL though. R=clemensb@chromium.org Bug: v8:10108 Change-Id: I36dcb900ed4c39b23c4996328774780afd8b816a Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2011105 Commit-Queue: Andreas Haas <ahaas@chromium.org> Reviewed-by:
Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#65879}
-
- 16 Jan, 2020 1 commit
-
-
Ng Zhi An authored
Add missing disasm tests for vroundss and vpalignr. Fix disasm for vinsertps and vpinsrq. Change-Id: I0f3907761b998d27ec00435a569084724af54ae2 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1990140Reviewed-by:
Deepti Gandluri <gdeepti@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#65799}
-
- 14 Jan, 2020 2 commits
-
-
Ng Zhi An authored
blendvpd should not be defined in the macro list, since the AVX version has 4 operands, not 3. Change-Id: Id020b460fa1a3510a91490f3b2286024cc6c5994 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1990139 Commit-Queue: Zhi An Ng <zhin@chromium.org> Reviewed-by:
Deepti Gandluri <gdeepti@chromium.org> Cr-Commit-Position: refs/heads/master@{#65771}
-
Ng Zhi An authored
Also add missing disasm for SSE4_2 instruction. Bug: v8:9561 Change-Id: Idc8d3c0e59f0e9aff57ebdcc5774bba375828597 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1986386Reviewed-by:
Deepti Gandluri <gdeepti@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#65769}
-
- 09 Jan, 2020 1 commit
-
-
Ng Zhi An authored
Bug: v8:9561 Change-Id: I18c832737cbea89e08af2ca166de7b01b7fe51b0 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1986256Reviewed-by:
Deepti Gandluri <gdeepti@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#65674}
-
- 08 Jan, 2020 1 commit
-
-
Ng Zhi An authored
Bug: v8:9561 Change-Id: I2259e72829c0ad688284dcecef8aaf418ad53022 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1980503Reviewed-by:
Deepti Gandluri <gdeepti@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#65643}
-
- 07 Jan, 2020 2 commits
-
-
Ng Zhi An authored
Bug: v8:9561 Change-Id: Ie3231038312495c2d8f77062ee5b81b2b55ab4d7 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1980502Reviewed-by:
Deepti Gandluri <gdeepti@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#65617}
-
Ng Zhi An authored
Bug: v8:9415 Bug: v8:10021 Change-Id: I77c24b58f575b612e5422bfcb9bb7ab83986659a Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1986249Reviewed-by:
Deepti Gandluri <gdeepti@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#65616}
-
- 06 Jan, 2020 1 commit
-
-
Ng Zhi An authored
The AVX version should only take one argument, so these instructions have to be split from the main list of SSE4 instructions, whose AVX version have two arguments. Bug: v8:9886 Change-Id: Ie37e060711babd7760547e2aa01c9c0fb0c728b5 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1986215 Commit-Queue: Zhi An Ng <zhin@chromium.org> Reviewed-by:
Deepti Gandluri <gdeepti@chromium.org> Cr-Commit-Position: refs/heads/master@{#65588}
-
- 09 Dec, 2019 1 commit
-
-
Ng Zhi An authored
Mostly for f32x4 instructions. Bug: v8:9561 Change-Id: I3a3dc06305acb9e336c494fc399cf5d21518c0e8 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1950488Reviewed-by:
Deepti Gandluri <gdeepti@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#65382}
-
- 06 Dec, 2019 1 commit
-
-
Ng Zhi An authored
Bug: v8:10021 Change-Id: Ibececfd23b852d7cecf609f6ae1a4b01ea8b55f6 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1950485Reviewed-by:
Deepti Gandluri <gdeepti@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#65361}
-
- 04 Dec, 2019 2 commits
-
-
Ng Zhi An authored
Bug: v8:9561 Change-Id: I39a3148570664909eb08f1559b2cb418477a6c15 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1948717 Commit-Queue: Zhi An Ng <zhin@chromium.org> Reviewed-by:
Deepti Gandluri <gdeepti@chromium.org> Cr-Commit-Position: refs/heads/master@{#65322}
-
Ng Zhi An authored
Bug: v8:9909 Change-Id: I997ae6f19c580f08eb9ff8ee039e0dd647091616 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1947350 Commit-Queue: Zhi An Ng <zhin@chromium.org> Reviewed-by:
Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#65320}
-
- 02 Dec, 2019 2 commits
-
-
Ng Zhi An authored
Bug: v8:9886 Change-Id: I321e93d02971c6ba568d9d7c52d464ffc2754665 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1929837 Commit-Queue: Zhi An Ng <zhin@chromium.org> Reviewed-by:
Bill Budge <bbudge@chromium.org> Cr-Commit-Position: refs/heads/master@{#65277}
-
Ng Zhi An authored
This change includes splitting the existing SSE_INSTRUCTION_LIST into two: 1. sse instructions with two-operand AVX 2. sse instructions with three-operand AVX Also a drive by fix for disasm of pblendw, the printing of imm8 doesn't not require AND-ing with 3, since all 8 bits are significant. Bug: v8:9561 Change-Id: I56c93a24bb9905ae6422698c793b27f3b9e66d8f Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1933593Reviewed-by:
Bill Budge <bbudge@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#65274}
-
- 06 Nov, 2019 1 commit
-
-
Michael Starzinger authored
R=clemensb@chromium.org TEST=cctest/test-disasm-x64/DisasmX64 Change-Id: I011d0d5e25c472c5a62ad73edd42165e55b34e2b Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1900460Reviewed-by:
Clemens Backes <clemensb@chromium.org> Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#64809}
-