DescriptionSubzero: Align spill locations to natural alignment.
This requires sorting the spilled variables based on alignment and
introducing additional padding around the spill location areas.
These changes allow vector instructions to accept memory operands.
Old stack frame layout: New stack frame layout:
+---------------------+ +---------------------+
| return address | | return address |
+---------------------+ +---------------------+
| preserved registers | | preserved registers |
+---------------------+ +---------------------+
| global spill area | | padding |
+---------------------+ +---------------------+
| local spill area | | global spill area |
+---------------------+ +---------------------+
| padding | | padding |
+---------------------+ +---------------------+
| local variables | | local spill area |
+---------------------+ +---------------------+
| padding |
+---------------------+
| local variables |
+---------------------+
BUG=none
R=jvoung@chromium.org, stichnot@chromium.org
Committed: https://gerrit.chromium.org/gerrit/gitweb?p=native_client/pnacl-subzero.git;a=commit;h=d4799f4
Patch Set 1 #Patch Set 2 : Don't sort everything. #
Total comments: 15
Patch Set 3 : Comments, round 1 #
Total comments: 1
Patch Set 4 : Fix padding calculation in debugging output. #Patch Set 5 : Clarify bucket calculation. #
Total comments: 4
Patch Set 6 : Reserve some space in the destination vector prior to sorting. #Patch Set 7 : LocalsSizeBytes -> SpillAreaSizeBytes, local variables -> allocas #
Messages
Total messages: 13 (0 generated)
|