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

Issue 1532233002: Add VPUSH/VPOP instructions to the ARM32 integrated assembler. (Closed)

Created:
5 years ago by Karl
Modified:
5 years ago
Reviewers:
Jim Stichnoth, sehr, John
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

Add VPUSH/VPOP instructions to the ARM32 integrated assembler. Also fixes the corresponding emit methods for vpush and vpop to match constraint that the maximum number of consecutive registers that can be pushed/popped is 16. BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4334 R=jpp@chromium.org, stichnot@chromium.org Committed: https://gerrit.chromium.org/gerrit/gitweb?p=native_client/pnacl-subzero.git;a=commit;h=a3c32146545c7c54c465606d5b5e71882ddb56e6

Patch Set 1 #

Patch Set 2 : Remove TODO that doesn't apply anymore. #

Total comments: 14

Patch Set 3 : Fix issues raised in last patch. #

Unified diffs Side-by-side diffs Delta from patch set Stats (+320 lines, -58 lines) Patch
M src/DartARM32/assembler_arm.h View 1 2 1 chunk +3 lines, -1 line 0 comments Download
M src/IceAssemblerARM32.h View 1 2 2 chunks +12 lines, -0 lines 0 comments Download
M src/IceAssemblerARM32.cpp View 1 2 3 chunks +58 lines, -0 lines 0 comments Download
M src/IceInstARM32.cpp View 1 2 6 chunks +121 lines, -57 lines 0 comments Download
M src/IceRegistersARM32.h View 1 chunk +8 lines, -0 lines 0 comments Download
A tests_lit/assembler/arm32/vpush.ll View 1 2 1 chunk +118 lines, -0 lines 0 comments Download

Messages

Total messages: 8 (3 generated)
Karl
5 years ago (2015-12-17 23:50:54 UTC) #3
John
lgtm https://codereview.chromium.org/1532233002/diff/20001/src/IceAssemblerARM32.cpp File src/IceAssemblerARM32.cpp (right): https://codereview.chromium.org/1532233002/diff/20001/src/IceAssemblerARM32.cpp#newcode1976 src/IceAssemblerARM32.cpp:1976: IValueT BaseReg = getEncodedSRegNum(OpBaseReg); Optional: const on everything ...
5 years ago (2015-12-18 00:02:32 UTC) #4
Jim Stichnoth
otherwise lgtm https://codereview.chromium.org/1532233002/diff/20001/src/IceAssemblerARM32.cpp File src/IceAssemblerARM32.cpp (right): https://codereview.chromium.org/1532233002/diff/20001/src/IceAssemblerARM32.cpp#newcode206 src/IceAssemblerARM32.cpp:206: assert(Var->hasReg() && RegARM32::isEncodedSReg(Var->getRegNum())); Better to change assert(c1 ...
5 years ago (2015-12-18 00:03:11 UTC) #5
Karl
Committed patchset #3 (id:40001) manually as a3c32146545c7c54c465606d5b5e71882ddb56e6 (presubmit successful).
5 years ago (2015-12-18 16:26:25 UTC) #7
Karl
5 years ago (2015-12-18 16:26:51 UTC) #8
Message was sent while issue was closed.
https://codereview.chromium.org/1532233002/diff/20001/src/IceAssemblerARM32.cpp
File src/IceAssemblerARM32.cpp (right):

https://codereview.chromium.org/1532233002/diff/20001/src/IceAssemblerARM32.c...
src/IceAssemblerARM32.cpp:206: assert(Var->hasReg() &&
RegARM32::isEncodedSReg(Var->getRegNum()));
On 2015/12/18 00:03:11, stichnot wrote:
> Better to change
>   assert(c1 && c2);
> into
>   assert(c1);
>   assert(c2);

Done.

https://codereview.chromium.org/1532233002/diff/20001/src/IceAssemblerARM32.c...
src/IceAssemblerARM32.cpp:1976: IValueT BaseReg = getEncodedSRegNum(OpBaseReg);
On 2015/12/18 00:02:31, John wrote:
> Optional: const on everything that's a const

Done.

https://codereview.chromium.org/1532233002/diff/20001/src/IceAssemblerARM32.c...
src/IceAssemblerARM32.cpp:1979: assert(0 < NumConsecRegs && NumConsecRegs <=
VpushVpopMaxConsecRegs &&
On 2015/12/18 00:03:11, stichnot wrote:
> Break this into 3 asserts, as above.

Done.

https://codereview.chromium.org/1532233002/diff/20001/src/IceAssemblerARM32.c...
src/IceAssemblerARM32.cpp:1998: const char *VpopName = "vpop";
On 2015/12/18 00:03:10, stichnot wrote:
> constexpr for these 2 vars

Done.

https://codereview.chromium.org/1532233002/diff/20001/src/IceAssemblerARM32.c...
src/IceAssemblerARM32.cpp:2013: const char *VpushName = "vpush";
On 2015/12/18 00:03:11, stichnot wrote:
> constexpr

Done.

https://codereview.chromium.org/1532233002/diff/20001/src/IceInstARM32.cpp
File src/IceInstARM32.cpp (right):

https://codereview.chromium.org/1532233002/diff/20001/src/IceInstARM32.cpp#ne...
src/IceInstARM32.cpp:1389: assert((Var && Var->hasReg()) && "pop only applies to
registers");
On 2015/12/18 00:03:11, stichnot wrote:
> I think you can assume Var!=nullptr, and remove that test from the assert?

Done.

https://codereview.chromium.org/1532233002/diff/20001/tests_lit/assembler/arm...
File tests_lit/assembler/arm32/vpush.ll (right):

https://codereview.chromium.org/1532233002/diff/20001/tests_lit/assembler/arm...
tests_lit/assembler/arm32/vpush.ll:55: call void @foo()
On 2015/12/18 00:02:31, John wrote:
> Move the call to line 65?

Done.

Powered by Google App Engine
This is Rietveld 408576698