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

Issue 597003004: Subzero: Automatically infer regalloc preferences and overlap. (Closed)

Created:
6 years, 2 months ago by Jim Stichnoth
Modified:
6 years, 2 months ago
CC:
native-client-reviews_googlegroups.com
Base URL:
https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Visibility:
Public.

Description

Subzero: Automatically infer regalloc preferences and overlap. Originally, for a given Variable, register preference and overlap were manually specified. That is, when choosing a free register for a Variable, it would be manually specified which (if any) related Variable would be a good choice for register selection, all things being equal. Also, it allowed the rather dangerous "AllowOverlap" specification which let the Variable use its preferred Variable's register, even if their live ranges overlap. Now, all this selection is automatic, and the machinery for manual specification is removed. A few other changes in this CL: - Address mode inference leverages the more precise - Better regalloc dump messages to follow the logic - "-verbose most" enables all verbose options except regalloc and time - "-ias" is an alias for "-integrated-as" - Bug fix: prevent 8-bit register ah from being used in register allocation, unless it is pre-colored - Bug fix: the _mov helper where Dest is NULL wasn't always actually creating a new Variable - A few tests are updated based on slightly different O2 register allocation decisions The static stats actually improve slightly across the board (around 1%), except that frame size improves by 6-10%. This is probably from smarter register allocation decisions, particularly involving phi lowering temporaries, where the manual hints weren't too good to start with. BUG= none R=jvoung@chromium.org Committed: https://gerrit.chromium.org/gerrit/gitweb?p=native_client/pnacl-subzero.git;a=commit;h=ad4035397bdf3484dbc12ade5f9ebd87fb5f037d

Patch Set 1 #

Patch Set 2 : Remove manual specification of prefer/overlap. #

Total comments: 20

Patch Set 3 : Mostly cleanup, and improved logging #

Patch Set 4 : Code review changes #

Unified diffs Side-by-side diffs Delta from patch set Stats (+314 lines, -127 lines) Patch
M src/IceCfg.cpp View 1 chunk +0 lines, -7 lines 0 comments Download
M src/IceCfgNode.cpp View 1 chunk +0 lines, -7 lines 0 comments Download
M src/IceDefs.h View 1 1 chunk +2 lines, -1 line 0 comments Download
M src/IceInst.h View 2 chunks +3 lines, -0 lines 0 comments Download
M src/IceInst.cpp View 1 chunk +1 line, -6 lines 0 comments Download
M src/IceInstX8632.h View 1 2 chunks +2 lines, -1 line 0 comments Download
M src/IceInstX8632.def View 1 chunk +6 lines, -1 line 0 comments Download
M src/IceOperand.h View 1 2 3 9 chunks +53 lines, -28 lines 0 comments Download
M src/IceOperand.cpp View 1 5 chunks +80 lines, -9 lines 0 comments Download
M src/IceRegAlloc.cpp View 1 2 3 6 chunks +117 lines, -11 lines 0 comments Download
M src/IceTargetLoweringX8632.h View 1 2 chunks +4 lines, -8 lines 0 comments Download
M src/IceTargetLoweringX8632.cpp View 1 2 3 22 chunks +37 lines, -43 lines 0 comments Download
M src/llvm2ice.cpp View 1 2 chunks +4 lines, -0 lines 0 comments Download
M tests_lit/llvm2ice_tests/address-mode-opt.ll View 1 chunk +1 line, -1 line 0 comments Download
M tests_lit/llvm2ice_tests/nacl-atomic-intrinsics.ll View 4 chunks +4 lines, -4 lines 0 comments Download

Messages

Total messages: 6 (1 generated)
Jim Stichnoth
6 years, 2 months ago (2014-09-25 07:02:09 UTC) #2
jvoung (off chromium)
https://codereview.chromium.org/597003004/diff/20001/src/IceOperand.cpp File src/IceOperand.cpp (right): https://codereview.chromium.org/597003004/diff/20001/src/IceOperand.cpp#newcode339 src/IceOperand.cpp:339: const Inst *VariablesMetadata::getFirstDefinition(const Variable *Var) const { I don't ...
6 years, 2 months ago (2014-09-25 16:42:11 UTC) #3
Jim Stichnoth
https://codereview.chromium.org/597003004/diff/20001/src/IceOperand.cpp File src/IceOperand.cpp (right): https://codereview.chromium.org/597003004/diff/20001/src/IceOperand.cpp#newcode339 src/IceOperand.cpp:339: const Inst *VariablesMetadata::getFirstDefinition(const Variable *Var) const { On 2014/09/25 ...
6 years, 2 months ago (2014-09-25 18:13:55 UTC) #4
jvoung (off chromium)
LGTM
6 years, 2 months ago (2014-09-25 18:38:11 UTC) #5
Jim Stichnoth
6 years, 2 months ago (2014-09-25 19:44:21 UTC) #6
Message was sent while issue was closed.
Committed patchset #4 (id:60001) manually as ad40353 (presubmit successful).

Powered by Google App Engine
This is Rietveld 408576698