diff options
| author | Anton Kirilov <anton.kirilov@linaro.org> | 2017-05-11 19:33:50 +0100 |
|---|---|---|
| committer | Anton Kirilov <anton.kirilov@linaro.org> | 2017-05-22 10:19:14 +0000 |
| commit | 5601d4e18594885260cbf3270273e5e35b3b0e8c (patch) | |
| tree | 3a6d29895d907bc279ba6a3a3c21a2ed5c679a32 /compiler/optimizing/code_generator_arm_vixl.h | |
| parent | 95c7d5b995a975723113a2ef38befb86e4bfbf45 (diff) | |
| download | art-5601d4e18594885260cbf3270273e5e35b3b0e8c.tar.gz art-5601d4e18594885260cbf3270273e5e35b3b0e8c.tar.bz2 art-5601d4e18594885260cbf3270273e5e35b3b0e8c.zip | |
Revert "Revert "ARM: Improve the code generated for HCondition with a constant input""
This reverts commit 3082661d260449e1d773f077e914160c7ad58de5, and
fixes the handling of HCondition with boolean inputs.
Test: m test-art-target-run-test-409-materialized-condition
Test: art/tools/run-libcore-tests.sh
Change-Id: Ib21e3a81ba41ce20c06e9a9e454c4322af1513ae
Diffstat (limited to 'compiler/optimizing/code_generator_arm_vixl.h')
| -rw-r--r-- | compiler/optimizing/code_generator_arm_vixl.h | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/compiler/optimizing/code_generator_arm_vixl.h b/compiler/optimizing/code_generator_arm_vixl.h index daba9bf060..1cf992359e 100644 --- a/compiler/optimizing/code_generator_arm_vixl.h +++ b/compiler/optimizing/code_generator_arm_vixl.h @@ -401,9 +401,6 @@ class InstructionCodeGeneratorARMVIXL : public InstructionCodeGenerator { void GenerateCompareTestAndBranch(HCondition* condition, vixl::aarch32::Label* true_target, vixl::aarch32::Label* false_target); - void GenerateLongComparesAndJumps(HCondition* cond, - vixl::aarch32::Label* true_label, - vixl::aarch32::Label* false_label); void DivRemOneOrMinusOne(HBinaryOperation* instruction); void DivRemByPowerOfTwo(HBinaryOperation* instruction); void GenerateDivRemWithAnyConstant(HBinaryOperation* instruction); @@ -716,6 +713,14 @@ class CodeGeneratorARMVIXL : public CodeGenerator { void EmitMovwMovtPlaceholder(CodeGeneratorARMVIXL::PcRelativePatchInfo* labels, vixl::aarch32::Register out); + // `temp` is an extra temporary register that is used for some conditions; + // callers may not specify it, in which case the method will use a scratch + // register instead. + void GenerateConditionWithZero(IfCondition condition, + vixl::aarch32::Register out, + vixl::aarch32::Register in, + vixl::aarch32::Register temp = vixl32::Register()); + private: vixl::aarch32::Register GetInvokeStaticOrDirectExtraParameter(HInvokeStaticOrDirect* invoke, vixl::aarch32::Register temp); |
