DescriptionSubzero: 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 #
Messages
Total messages: 6 (1 generated)
|