summaryrefslogtreecommitdiff
path: root/compiler/driver/compiler_driver_test.cc
diff options
context:
space:
mode:
authorxueliang.zhong <xueliang.zhong@linaro.org>2016-11-04 09:23:32 +0000
committerxueliang.zhong <xueliang.zhong@linaro.org>2016-11-24 11:39:20 +0000
commitf51bc62a1d89a35fabaaf7e766d49502881fd591 (patch)
treeeadb80d9e842476ed599a129a3babad27f7d2167 /compiler/driver/compiler_driver_test.cc
parent8f3435981e67e4b78caf0130f81dcd9a87af531e (diff)
ARM: VIXL32: Improve codegen on CBZ/CBNZ
This patch improves codegen on CBZ/CBNZ. CompareAndBranchIfZero/CompareAndBranchIfNonZero are introduced. These two functions can generate CMP+Bcc or Cbz/Cbnz. CMP+Bcc are generated by default. If a hint is given (is_far_target = false) and rn and label can all fit into Cbz/Cbnz, then Cbz/Cbnz is generated. Prefer these two interfaces to using vixl32::MacroAssembler::Cbz/Cbnz. In T32, Cbz/Cbnz instructions have following limitations: - Far targets, which are over 126 bytes away, are not supported. - Only low registers can be encoded. - Backward branches are not supported. Test: ART_USE_VIXL_ARM_BACKEND=true m test-art-host Test: ART_USE_VIXL_ARM_BACKEND=true m test-art-target Change-Id: I5d2ada19ea4f83dab78baf0cf78c72e99e58d946
Diffstat (limited to 'compiler/driver/compiler_driver_test.cc')
0 files changed, 0 insertions, 0 deletions