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

Issue 1481133002: Subzero. ARM32. Show FP lowering some love. (Closed)

Created:
5 years ago by John
Modified:
5 years ago
Reviewers:
Jim Stichnoth, Karl, sehr
CC:
native-client-reviews_googlegroups.com
Base URL:
https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Target Ref:
refs/heads/master
Visibility:
Public.

Description

Subzero. ARM32. Show FP lowering some love. After some time of being neglected, this CL improves FP lowering for ARM32. 1) It emits vpush {list}, and vpop {list} when possible. 2) It stops saving alised Vfp registers multiple times (yes, sz used to save both D and S registers even when they aliased.) 3) Introduces Vmla (fp multiply and accumulate) and Vmls (multiply and subtract.) (1 + 2) minimally (but positively) affected SPEC. (3) caused a 2% geomean improvement. BUG= https://code.google.com/p/nativeclient/issues/detail?id=4076 R=stichnot@chromium.org Committed: https://gerrit.chromium.org/gerrit/gitweb?p=native_client/pnacl-subzero.git;a=commit;h=eb13acc6221f60642d17473b6329a82b02ae557a

Patch Set 1 #

Patch Set 2 : Enables fp Multiply and accumulate. #

Patch Set 3 : Git pull; Painful merge; Fixes lit; Make format; #

Patch Set 4 : Some refactoring. Adds a script for generating reg tables. #

Patch Set 5 : Fixes formating in the new python script. #

Patch Set 6 : #

Total comments: 56

Patch Set 7 : Addresses comments. #

Total comments: 7

Patch Set 8 : Handles comments; git pull; fixes lit tests. #

Unified diffs Side-by-side diffs Delta from patch set Stats (+817 lines, -366 lines) Patch
A pydir/gen_arm32_reg_tables.py View 1 2 3 4 5 6 1 chunk +204 lines, -0 lines 0 comments Download
M src/IceCfgNode.cpp View 1 2 1 chunk +1 line, -1 line 0 comments Download
M src/IceInstARM32.h View 1 2 3 4 5 6 7 7 chunks +60 lines, -6 lines 0 comments Download
M src/IceInstARM32.cpp View 1 2 3 4 5 6 7 6 chunks +142 lines, -75 lines 0 comments Download
M src/IceInstARM32.def View 1 2 3 4 5 4 chunks +3 lines, -63 lines 0 comments Download
M src/IceTargetLoweringARM32.h View 1 2 3 4 5 6 6 chunks +22 lines, -11 lines 0 comments Download
M src/IceTargetLoweringARM32.cpp View 1 2 3 4 5 6 7 24 chunks +273 lines, -86 lines 0 comments Download
M tests_lit/assembler/arm32/mov-const.ll View 1 2 3 4 5 6 2 chunks +79 lines, -79 lines 0 comments Download
M tests_lit/assembler/arm32/sandboxing.ll View 1 2 3 4 5 6 7 4 chunks +18 lines, -30 lines 0 comments Download
M tests_lit/llvm2ice_tests/64bit.pnacl.ll View 1 2 3 chunks +6 lines, -6 lines 0 comments Download
M tests_lit/llvm2ice_tests/arith.ll View 1 2 2 chunks +3 lines, -3 lines 0 comments Download
M tests_lit/llvm2ice_tests/fp.convert.ll View 1 2 1 chunk +1 line, -1 line 0 comments Download
M tests_lit/llvm2ice_tests/nacl-atomic-intrinsics.ll View 1 2 1 chunk +1 line, -1 line 0 comments Download
M tests_lit/llvm2ice_tests/return_immediates.ll View 1 2 1 chunk +2 lines, -2 lines 0 comments Download
M tests_lit/llvm2ice_tests/switch-opt.ll View 1 2 1 chunk +2 lines, -2 lines 0 comments Download

Messages

Total messages: 10 (3 generated)
John
5 years ago (2015-12-07 15:26:26 UTC) #3
Karl
https://codereview.chromium.org/1481133002/diff/100001/src/IceInstARM32.cpp File src/IceInstARM32.cpp (right): https://codereview.chromium.org/1481133002/diff/100001/src/IceInstARM32.cpp#newcode1253 src/IceInstARM32.cpp:1253: return; I assume you return here because you modified ...
5 years ago (2015-12-07 19:11:07 UTC) #4
Jim Stichnoth
https://codereview.chromium.org/1481133002/diff/100001/src/IceInstARM32.cpp File src/IceInstARM32.cpp (right): https://codereview.chromium.org/1481133002/diff/100001/src/IceInstARM32.cpp#newcode582 src/IceInstARM32.cpp:582: Type PreviousTy = IceType_void; What do you think about ...
5 years ago (2015-12-07 20:58:15 UTC) #5
John
ptal https://codereview.chromium.org/1481133002/diff/100001/src/IceInstARM32.cpp File src/IceInstARM32.cpp (right): https://codereview.chromium.org/1481133002/diff/100001/src/IceInstARM32.cpp#newcode582 src/IceInstARM32.cpp:582: Type PreviousTy = IceType_void; On 2015/12/07 20:58:14, stichnot ...
5 years ago (2015-12-08 13:54:25 UTC) #6
Jim Stichnoth
otherwise lgtm https://codereview.chromium.org/1481133002/diff/100001/src/IceInstARM32.cpp File src/IceInstARM32.cpp (right): https://codereview.chromium.org/1481133002/diff/100001/src/IceInstARM32.cpp#newcode582 src/IceInstARM32.cpp:582: Type PreviousTy = IceType_void; On 2015/12/08 13:54:24, ...
5 years ago (2015-12-08 19:20:16 UTC) #7
John
Committed patchset #8 (id:140001) manually as eb13acc6221f60642d17473b6329a82b02ae557a (presubmit successful).
5 years ago (2015-12-09 13:11:03 UTC) #9
John
5 years ago (2015-12-09 13:11:09 UTC) #10
Message was sent while issue was closed.
https://codereview.chromium.org/1481133002/diff/100001/src/IceInstARM32.cpp
File src/IceInstARM32.cpp (right):

https://codereview.chromium.org/1481133002/diff/100001/src/IceInstARM32.cpp#n...
src/IceInstARM32.cpp:1235: assert(DestSize > 0);
On 2015/12/08 19:20:16, stichnot wrote:
> On 2015/12/08 13:54:24, John wrote:
> > On 2015/12/07 20:58:14, stichnot wrote:
> > > Maybe move the assert into the "if" branch, right before the return?  I
> think
> > > that documents the intention slightly better.
> > 
> > Done.
> 
> Actually, looks like not (yet) done...

Done.

https://codereview.chromium.org/1481133002/diff/100001/src/IceTargetLoweringA...
File src/IceTargetLoweringARM32.h (right):

https://codereview.chromium.org/1481133002/diff/100001/src/IceTargetLoweringA...
src/IceTargetLoweringARM32.h:1144: using ComputationMap =
std::unordered_map<SizeT, ComputationEntry>;
On 2015/12/08 19:20:16, stichnot wrote:
> On 2015/12/08 13:54:25, John wrote:
> > On 2015/12/07 20:58:14, stichnot wrote:
> > > Add a comment indicating the meaning of the SizeT key.  (I think it's the
> Dest
> > > variable number, but I no longer remember for sure.)
> > 
> > Done -- maybe add a comment to X86 as well? Happy to add it on this CL if
you
> > want.
> 
> That would be great, thanks.

The comment was already there. :)

https://codereview.chromium.org/1481133002/diff/120001/src/IceInstARM32.cpp
File src/IceInstARM32.cpp (right):

https://codereview.chromium.org/1481133002/diff/120001/src/IceInstARM32.cpp#n...
src/IceInstARM32.cpp:584: //
On 2015/12/08 19:20:16, stichnot wrote:
> Fill in the comment, or delete this line.

Done.

https://codereview.chromium.org/1481133002/diff/120001/src/IceInstARM32.cpp#n...
src/IceInstARM32.cpp:585: void ValidatePushOrPopRegisterListOrDie(const VarList
&RegList) {
On 2015/12/08 19:20:16, stichnot wrote:
> lowerCase function name

Done.

https://codereview.chromium.org/1481133002/diff/120001/src/IceTargetLoweringA...
File src/IceTargetLoweringARM32.cpp (right):

https://codereview.chromium.org/1481133002/diff/120001/src/IceTargetLoweringA...
src/IceTargetLoweringARM32.cpp:1159: // Make a two-pass over the used registers.
The first pass records all the
On 2015/12/08 19:20:16, stichnot wrote:
> "Make two passes over"
> 
> I'm not familiar with the "two-pass". :)

Done.

Powered by Google App Engine
This is Rietveld 408576698