diff options
author | Calin Juravle <calin@google.com> | 2014-10-28 16:57:40 +0000 |
---|---|---|
committer | Calin Juravle <calin@google.com> | 2014-10-28 17:53:33 +0000 |
commit | 7c4954d429626a6ceafbf05be41bf5f840894e44 (patch) | |
tree | 9d4a088cc2e259235819f105a21e5a3d58bd0139 /compiler/optimizing/builder.cc | |
parent | 4816ecfc1b2d544685ec5edcdeaad6870f6bfd7e (diff) | |
download | art-7c4954d429626a6ceafbf05be41bf5f840894e44.tar.gz art-7c4954d429626a6ceafbf05be41bf5f840894e44.tar.bz2 art-7c4954d429626a6ceafbf05be41bf5f840894e44.zip |
[optimizing compiler] Add division for floats and doubles
backends: x86, x86_64, arm.
Also:
- ordered instructions based on their name.
- add missing kNoOutputOverlap to add/sub/mul.
Change-Id: Ie47cde3b15ac74e7a1660c67a2eed1d7871f0ad0
Diffstat (limited to 'compiler/optimizing/builder.cc')
-rw-r--r-- | compiler/optimizing/builder.cc | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/compiler/optimizing/builder.cc b/compiler/optimizing/builder.cc index cc9c6c15b..f80ebdb5e 100644 --- a/compiler/optimizing/builder.cc +++ b/compiler/optimizing/builder.cc @@ -828,6 +828,16 @@ bool HGraphBuilder::AnalyzeDexInstruction(const Instruction& instruction, uint32 break; } + case Instruction::DIV_FLOAT: { + Binop_23x<HDiv>(instruction, Primitive::kPrimFloat); + break; + } + + case Instruction::DIV_DOUBLE: { + Binop_23x<HDiv>(instruction, Primitive::kPrimDouble); + break; + } + case Instruction::ADD_LONG_2ADDR: { Binop_12x<HAdd>(instruction, Primitive::kPrimLong); break; @@ -883,6 +893,16 @@ bool HGraphBuilder::AnalyzeDexInstruction(const Instruction& instruction, uint32 break; } + case Instruction::DIV_FLOAT_2ADDR: { + Binop_12x<HDiv>(instruction, Primitive::kPrimFloat); + break; + } + + case Instruction::DIV_DOUBLE_2ADDR: { + Binop_12x<HDiv>(instruction, Primitive::kPrimDouble); + break; + } + case Instruction::ADD_INT_LIT16: { Binop_22s<HAdd>(instruction, false); break; |