OSDN Git Service

ARM: VIXL32: Use DontCare for SetFlags + fix for GenerateFrameEntry.
authorArtem Serov <artem.serov@linaro.org>
Fri, 2 Dec 2016 18:46:40 +0000 (18:46 +0000)
committerArtem Serov <artem.serov@linaro.org>
Tue, 6 Dec 2016 19:48:17 +0000 (19:48 +0000)
commitd494c5e37c656d92fcf83987d886e999457d9252
tree38b5d0a6d3fda3a811fba9f7f7a997fabd3fcc1d
parentf99e0d0f28a60032d9f5e84191ab627ae7adf009
ARM: VIXL32: Use DontCare for SetFlags + fix for GenerateFrameEntry.

In T32 some of the instructions (add, mov, etc) outside an IT block
have only 32-bit encodings. But there are 16-bit flag setting
versions of these instructions (adds, movs, etc). In most of the
cases in ART we don't care if the instructions keep flags or not;
thus we can benefit from smaller code size.
VIXL will never generate flag setting versions (for example, adds
for Add macro instruction) unless vixl32::DontCare option is
explicitly specified. That's why we introduce wrappers to use
DontCare option by default.

This patch reduces code size of compiled code. For example,
core.oat has shown over 1.16% code size reduction.

Also contains a fix for GenerateFrameEntry.

Test: ART_USE_VIXL_ARM_BACKEND=true m test-art-host
Test: ART_USE_VIXL_ARM_BACKEND=true m test-art-target

Change-Id: Id55a16f34208e7b702016ee83e2f2d0daeb42eaf
compiler/optimizing/code_generator_arm_vixl.cc
compiler/utils/arm/assembler_arm_vixl.cc
compiler/utils/arm/assembler_arm_vixl.h
test/538-checker-embed-constants/src/Main.java