Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(82)

Issue 2410673002: [Turbofan] Add concept of FP register aliasing on ARM 32. (Closed)

Created:
4 years, 2 months ago by bbudge
Modified:
4 years, 1 month ago
CC:
danno, georgia.kouveli, v8-mips-ports_googlegroups.com, v8-ppc-ports_googlegroups.com, v8-reviews_googlegroups.com
Target Ref:
refs/pending/heads/master
Project:
v8
Visibility:
Public.

Description

[Turbofan] Add concept of FP register aliasing on ARM 32. - Modifies RegisterConfiguration to specify complex aliasing on ARM 32. - Modifies RegisterAllocator to consider aliasing. - Modifies ParallelMove::PrepareInsertAfter to handle aliasing. - Modifies GapResolver to split wider register moves when interference with smaller moves is detected. - Modifies MoveOptimizer to handle aliasing. - Adds ARM 32 macro-assembler pseudo move instructions to handle cases where split moves don't correspond to actual s-registers. - Modifies CodeGenerator::AssembleMove and AssembleSwap to handle moves of different widths, and moves involving pseudo-s-registers. - Adds unit tests for FP operand interference checking and PrepareInsertAfter. - Adds more tests of FP for the move optimizer and register allocator. LOG=N BUG=v8:4124 Committed: https://crrev.com/09ab8e6ad9440d15f3083a44ca0c1ab3ae84a036 Cr-Commit-Position: refs/heads/master@{#40597}

Patch Set 1 #

Patch Set 2 : Fix non-ARM build. #

Patch Set 3 : Fix wrong register indices. #

Patch Set 4 : Fix register index out of bounds. #

Patch Set 5 : Rebase. #

Patch Set 6 : Fix reg codes (ia32) and register allocator (arm32). #

Total comments: 20

Patch Set 7 : Georgia's and Mircea's review comments. #

Patch Set 8 : Replace OperandSet typedef with class. #

Patch Set 9 : Move helper fn / macro into OperandSet class. #

Total comments: 24

Patch Set 10 : Jaro's review comments. #

Patch Set 11 : DCHECK #

Patch Set 12 : Rebase. #

Patch Set 13 : Fix build (V8_EXPORT_PRIVATE) #

Patch Set 14 : Add another export. #

Patch Set 15 : Another export. #

Patch Set 16 : More exports. #

Patch Set 17 : Try to fix windows build. #

Patch Set 18 : Add zone_allocator assignment operator. #

Patch Set 19 : Mark default zone_allocator ctor 'delete'. #

Patch Set 20 : Remove default zone_allocator ctor. #

Patch Set 21 : Make default ctor public, deleted. #

Patch Set 22 : Make ctor public and define. #

Patch Set 23 : Rebase (and derive InstructionTest from TestWithIsolateAndZone.) #

Patch Set 24 : Experiment: derive InstructionTest from InstructionSequenceTest. #

Patch Set 25 : Block default fns on InstructionTest. #

Total comments: 4

Patch Set 26 : Fix exports, make zone_allocator public and define. #

Patch Set 27 : Add a TODO. #

Unified diffs Side-by-side diffs Delta from patch set Stats (+1209 lines, -288 lines) Patch
M src/arm/macro-assembler-arm.h View 1 2 3 4 5 6 7 8 9 10 11 1 chunk +8 lines, -0 lines 0 comments Download
M src/arm/macro-assembler-arm.cc View 1 2 3 4 5 6 7 8 9 10 11 1 chunk +63 lines, -0 lines 0 comments Download
M src/compiler/arm/code-generator-arm.cc View 1 2 3 4 5 6 7 8 9 10 11 21 chunks +128 lines, -83 lines 0 comments Download
M src/compiler/gap-resolver.h View 1 2 3 4 5 6 7 8 9 1 chunk +11 lines, -5 lines 0 comments Download
M src/compiler/gap-resolver.cc View 1 2 3 4 5 6 7 8 9 10 5 chunks +162 lines, -27 lines 0 comments Download
M src/compiler/instruction.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 7 chunks +19 lines, -17 lines 0 comments Download
M src/compiler/instruction.cc View 1 2 3 4 5 6 7 8 9 2 chunks +43 lines, -13 lines 0 comments Download
M src/compiler/move-optimizer.cc View 1 2 3 4 5 6 7 8 11 chunks +89 lines, -23 lines 0 comments Download
M src/compiler/register-allocator.h View 1 2 3 4 5 6 7 8 9 10 11 4 chunks +21 lines, -0 lines 0 comments Download
M src/compiler/register-allocator.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 21 chunks +198 lines, -44 lines 0 comments Download
M src/compiler/wasm-linkage.cc View 1 2 3 4 5 6 7 8 9 10 11 1 chunk +11 lines, -0 lines 0 comments Download
M src/machine-type.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 chunk +1 line, -1 line 0 comments Download
M src/register-configuration.h View 1 2 3 4 5 6 7 8 9 10 11 3 chunks +0 lines, -8 lines 0 comments Download
M src/register-configuration.cc View 4 chunks +0 lines, -12 lines 0 comments Download
M src/zone/zone-allocator.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 2 chunks +2 lines, -1 line 0 comments Download
M test/cctest/compiler/test-gap-resolver.cc View 5 chunks +144 lines, -9 lines 0 comments Download
M test/cctest/compiler/test-run-native-calls.cc View 1 2 3 4 5 6 7 8 9 10 11 2 chunks +14 lines, -2 lines 0 comments Download
M test/unittests/BUILD.gn View 1 2 3 4 5 6 7 8 9 10 11 1 chunk +1 line, -0 lines 0 comments Download
M test/unittests/compiler/instruction-sequence-unittest.h View 1 2 3 4 5 1 chunk +2 lines, -0 lines 0 comments Download
M test/unittests/compiler/instruction-sequence-unittest.cc View 1 2 3 4 5 2 chunks +1 line, -5 lines 0 comments Download
A test/unittests/compiler/instruction-unittest.cc View 23 24 25 1 chunk +175 lines, -0 lines 0 comments Download
M test/unittests/compiler/move-optimizer-unittest.cc View 1 2 3 9 chunks +99 lines, -20 lines 0 comments Download
M test/unittests/compiler/register-allocator-unittest.cc View 1 chunk +8 lines, -7 lines 0 comments Download
M test/unittests/register-configuration-unittest.cc View 4 chunks +8 lines, -11 lines 0 comments Download
M test/unittests/unittests.gyp View 1 2 3 4 5 6 7 8 9 10 11 1 chunk +1 line, -0 lines 0 comments Download

Messages

Total messages: 113 (92 generated)
bbudge
Benedikt / Jarin for ARM assembler / macroassembler Mircea for everything else.
4 years, 2 months ago (2016-10-11 19:57:17 UTC) #26
bbudge
cc'ing Danno (you're welcome to review!) and Georgia (feel free to review or leave comments.)
4 years, 2 months ago (2016-10-11 20:26:49 UTC) #27
georgia.kouveli
https://codereview.chromium.org/2410673002/diff/100001/src/compiler/gap-resolver.cc File src/compiler/gap-resolver.cc (right): https://codereview.chromium.org/2410673002/diff/100001/src/compiler/gap-resolver.cc#newcode203 src/compiler/gap-resolver.cc:203: // Ensure source is a register, to limit swap ...
4 years, 2 months ago (2016-10-12 17:38:41 UTC) #28
Mircea Trofin
https://codereview.chromium.org/2410673002/diff/100001/src/compiler/move-optimizer.cc File src/compiler/move-optimizer.cc (right): https://codereview.chromium.org/2410673002/diff/100001/src/compiler/move-optimizer.cc#newcode36 src/compiler/move-optimizer.cc:36: void InsertOp(OperandSet* set, const InstructionOperand& op, int* fp_reg_reps) { ...
4 years, 2 months ago (2016-10-12 21:09:26 UTC) #29
bbudge
https://codereview.chromium.org/2410673002/diff/100001/src/compiler/gap-resolver.cc File src/compiler/gap-resolver.cc (right): https://codereview.chromium.org/2410673002/diff/100001/src/compiler/gap-resolver.cc#newcode203 src/compiler/gap-resolver.cc:203: // Ensure source is a register, to limit swap ...
4 years, 2 months ago (2016-10-12 23:07:18 UTC) #32
Mircea Trofin
lgtm for my side, with one comment https://codereview.chromium.org/2410673002/diff/100001/src/compiler/move-optimizer.cc File src/compiler/move-optimizer.cc (right): https://codereview.chromium.org/2410673002/diff/100001/src/compiler/move-optimizer.cc#newcode36 src/compiler/move-optimizer.cc:36: void InsertOp(OperandSet* ...
4 years, 2 months ago (2016-10-14 20:58:40 UTC) #35
bbudge
https://codereview.chromium.org/2410673002/diff/100001/src/compiler/move-optimizer.cc File src/compiler/move-optimizer.cc (right): https://codereview.chromium.org/2410673002/diff/100001/src/compiler/move-optimizer.cc#newcode36 src/compiler/move-optimizer.cc:36: void InsertOp(OperandSet* set, const InstructionOperand& op, int* fp_reg_reps) { ...
4 years, 2 months ago (2016-10-15 01:30:26 UTC) #38
bbudge
On 2016/10/15 01:30:26, bbudge wrote: > https://codereview.chromium.org/2410673002/diff/100001/src/compiler/move-optimizer.cc > File src/compiler/move-optimizer.cc (right): > > https://codereview.chromium.org/2410673002/diff/100001/src/compiler/move-optimizer.cc#newcode36 > ...
4 years, 2 months ago (2016-10-15 14:20:21 UTC) #45
Mircea Trofin
On 2016/10/15 14:20:21, bbudge wrote: > On 2016/10/15 01:30:26, bbudge wrote: > > > https://codereview.chromium.org/2410673002/diff/100001/src/compiler/move-optimizer.cc ...
4 years, 2 months ago (2016-10-15 23:39:47 UTC) #46
Jarin
First batch of comments. https://codereview.chromium.org/2410673002/diff/160001/src/compiler/gap-resolver.cc File src/compiler/gap-resolver.cc (right): https://codereview.chromium.org/2410673002/diff/160001/src/compiler/gap-resolver.cc#newcode17 src/compiler/gap-resolver.cc:17: #define REP_BIT(rep) (1 << static_cast<int>(rep)); ...
4 years, 2 months ago (2016-10-18 11:44:28 UTC) #47
bbudge
https://codereview.chromium.org/2410673002/diff/160001/src/compiler/gap-resolver.cc File src/compiler/gap-resolver.cc (right): https://codereview.chromium.org/2410673002/diff/160001/src/compiler/gap-resolver.cc#newcode17 src/compiler/gap-resolver.cc:17: #define REP_BIT(rep) (1 << static_cast<int>(rep)); On 2016/10/18 11:44:27, Jarin ...
4 years, 2 months ago (2016-10-19 00:32:21 UTC) #50
Jarin
lgtm. https://codereview.chromium.org/2410673002/diff/160001/src/compiler/gap-resolver.cc File src/compiler/gap-resolver.cc (right): https://codereview.chromium.org/2410673002/diff/160001/src/compiler/gap-resolver.cc#newcode32 src/compiler/gap-resolver.cc:32: DCHECK(!kSimpleFPAliasing); On 2016/10/19 00:32:20, bbudge wrote: > On ...
4 years, 2 months ago (2016-10-19 19:23:51 UTC) #57
bbudge
I've been having trouble with the Windows build. I needed to export InstructionOperand and ParallelMove ...
4 years, 1 month ago (2016-10-25 00:58:23 UTC) #93
jochen (gone - plz use gerrit)
https://codereview.chromium.org/2410673002/diff/500001/src/compiler/instruction.h File src/compiler/instruction.h (right): https://codereview.chromium.org/2410673002/diff/500001/src/compiler/instruction.h#newcode667 src/compiler/instruction.h:667: class V8_EXPORT_PRIVATE MoveOperands final : public ZoneObject { if ...
4 years, 1 month ago (2016-10-25 11:56:08 UTC) #95
bbudge
Jaro, after all my thrashing around, I think the only changes since your last review ...
4 years, 1 month ago (2016-10-25 14:01:10 UTC) #98
jochen (gone - plz use gerrit)
On 2016/10/25 at 14:01:10, bbudge wrote: > Jaro, after all my thrashing around, I think ...
4 years, 1 month ago (2016-10-26 08:19:28 UTC) #101
Jarin
still lgtm (assuming jochen is approving the zone_allocator change).
4 years, 1 month ago (2016-10-26 11:38:16 UTC) #102
jochen (gone - plz use gerrit)
lgtm
4 years, 1 month ago (2016-10-26 13:02:40 UTC) #103
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.org/2410673002/540001
4 years, 1 month ago (2016-10-26 16:02:11 UTC) #110
commit-bot: I haz the power
Committed patchset #27 (id:540001)
4 years, 1 month ago (2016-10-26 16:04:17 UTC) #111
commit-bot: I haz the power
4 years, 1 month ago (2016-11-17 22:14:23 UTC) #113
Message was sent while issue was closed.
Patchset 27 (id:??) landed as
https://crrev.com/09ab8e6ad9440d15f3083a44ca0c1ab3ae84a036
Cr-Commit-Position: refs/heads/master@{#40597}

Powered by Google App Engine
This is Rietveld 408576698