|
|
Description[ARM64] Support 128 bit moves and swaps in code generator.
LOG=N
BUG=v8:6020
Review-Url: https://codereview.chromium.org/2928853002
Cr-Commit-Position: refs/heads/master@{#45928}
Committed: https://chromium.googlesource.com/v8/v8/+/a4cf434f5bf4019373460ffd917697167c212501
Patch Set 1 #
Total comments: 2
Patch Set 2 : Martyn's review comments. #
Total comments: 1
Patch Set 3 : Invert simd128 conditionals. #Patch Set 4 : Rebase. #Messages
Total messages: 38 (28 generated)
The CQ bit was checked by bbudge@chromium.org to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at: https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: Try jobs failed on following builders: v8_linux_nodcheck_rel_ng on master.tryserver.v8 (JOB_FAILED, http://build.chromium.org/p/tryserver.v8/builders/v8_linux_nodcheck_rel_ng/bu...)
The CQ bit was checked by bbudge@chromium.org to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at: https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
bbudge@chromium.org changed reviewers: + martyn.capewell@arm.com
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: This issue passed the CQ dry run.
https://codereview.chromium.org/2928853002/diff/1/src/compiler/arm64/code-gen... File src/compiler/arm64/code-generator-arm64.cc (right): https://codereview.chromium.org/2928853002/diff/1/src/compiler/arm64/code-gen... src/compiler/arm64/code-generator-arm64.cc:2236: __ st1(src, dst); I'm not sure this will work - I think ToDoubleRegister returns a D-sized VRegister, so both sides of this conditional store 64 bits from src to dst, but with different instructions. On ARM64, the normal Ldr and Str methods support Q registers, so something like this might work: VRegister src = (destination->IsSimd128StackSlot) ? g.ToSimd128Register() : g.ToDoubleRegister(); __ Str(src, dst); Alternatively, as the way VRegisters overlay is different in ARM64, the size modifiers could be applied, eg. src.Q().
The CQ bit was checked by bbudge@chromium.org to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at: https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: This issue passed the CQ dry run.
https://codereview.chromium.org/2928853002/diff/1/src/compiler/arm64/code-gen... File src/compiler/arm64/code-generator-arm64.cc (right): https://codereview.chromium.org/2928853002/diff/1/src/compiler/arm64/code-gen... src/compiler/arm64/code-generator-arm64.cc:2236: __ st1(src, dst); On 2017/06/08 08:29:13, martyn.capewell wrote: > I'm not sure this will work - I think ToDoubleRegister returns a D-sized > VRegister, so both sides of this conditional store 64 bits from src to dst, but > with different instructions. > > On ARM64, the normal Ldr and Str methods support Q registers, so something like > this might work: > VRegister src = (destination->IsSimd128StackSlot) ? g.ToSimd128Register() : > g.ToDoubleRegister(); > __ Str(src, dst); > > Alternatively, as the way VRegisters overlay is different in ARM64, the size > modifiers could be applied, eg. src.Q(). I forgot that VRegisters have a size. I think your alternative solution is the only one that would work, as ToSimd128Register calls VRegister::from_code, which assumes it's a d-register. Done here and below.
lgtm https://codereview.chromium.org/2928853002/diff/20001/src/compiler/arm64/code... File src/compiler/arm64/code-generator-arm64.cc (right): https://codereview.chromium.org/2928853002/diff/20001/src/compiler/arm64/code... src/compiler/arm64/code-generator-arm64.cc:2233: if (!destination->IsSimd128StackSlot()) { One minor comment - can you switch these clauses? I'm always distracted by if/else where the if is inverted.
The CQ bit was checked by bbudge@chromium.org to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at: https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: This issue passed the CQ dry run.
The CQ bit was checked by bbudge@chromium.org to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at: https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: This issue passed the CQ dry run.
The CQ bit was checked by bbudge@chromium.org
The patchset sent to the CQ was uploaded after l-g-t-m from martyn.capewell@arm.com Link to the patchset: https://codereview.chromium.org/2928853002/#ps60001 (title: "Rebase.")
CQ is trying da patch. Follow status at: https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by commit-bot@chromium.org
Try jobs failed on following builders: v8_presubmit on master.tryserver.v8 (JOB_FAILED, http://build.chromium.org/p/tryserver.v8/builders/v8_presubmit/builds/43061)
bbudge@chromium.org changed reviewers: + mtrofin@chromium.org
+Mircea, for compiler
lgtm
The CQ bit was checked by bbudge@chromium.org
CQ is trying da patch. Follow status at: https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
CQ is committing da patch. Bot data: {"patchset_id": 60001, "attempt_start_ts": 1497392711126250, "parent_rev": "aea68b5a2601d9a86381d7301515dbc5f9eb4ca7", "commit_rev": "a4cf434f5bf4019373460ffd917697167c212501"}
Message was sent while issue was closed.
Description was changed from ========== [ARM64] Support 128 bit moves and swaps in code generator. LOG=N BUG=v8:6020 ========== to ========== [ARM64] Support 128 bit moves and swaps in code generator. LOG=N BUG=v8:6020 Review-Url: https://codereview.chromium.org/2928853002 Cr-Commit-Position: refs/heads/master@{#45928} Committed: https://chromium.googlesource.com/v8/v8/+/a4cf434f5bf4019373460ffd917697167c2... ==========
Message was sent while issue was closed.
Committed patchset #4 (id:60001) as https://chromium.googlesource.com/v8/v8/+/a4cf434f5bf4019373460ffd917697167c2... |