diff options
| author | 2014-05-23 17:38:18 +0100 | |
|---|---|---|
| committer | 2014-05-26 14:36:10 -0700 | |
| commit | 032d3775552e27eda98af2066306b773f3762b64 (patch) | |
| tree | e158bdf2924dfb72339a7d2df23ce19d0c1dc00c /compiler/dex/frontend.cc | |
| parent | 1b1aea22c0cc5567b5967590cb3f949cc45c3a9a (diff) | |
AArch64: Enable FLOAT and DOUBLE opcodes
This patch enables all the DOUBLE and FLOAT opcodes except for REM ones.
It has been tested and passes all Dalvik tests except for:
failed: 018-stack-overflow[pid=1076]
failed: 107-int-math2[pid=1593]
Change-Id: I581f219bde354e3402aa3ad6e24ef15566da5f78
Signed-off-by: Serban Constantinescu <serban.constantinescu@arm.com>
Diffstat (limited to 'compiler/dex/frontend.cc')
| -rw-r--r-- | compiler/dex/frontend.cc | 66 |
1 files changed, 33 insertions, 33 deletions
diff --git a/compiler/dex/frontend.cc b/compiler/dex/frontend.cc index 9bad736c8d..beebe626ab 100644 --- a/compiler/dex/frontend.cc +++ b/compiler/dex/frontend.cc @@ -180,10 +180,10 @@ int arm64_support_list[] = { // Instruction::GOTO_32, // Instruction::PACKED_SWITCH, // Instruction::SPARSE_SWITCH, - // Instruction::CMPL_FLOAT, - // Instruction::CMPG_FLOAT, - // Instruction::CMPL_DOUBLE, - // Instruction::CMPG_DOUBLE, + Instruction::CMPL_FLOAT, + Instruction::CMPG_FLOAT, + Instruction::CMPL_DOUBLE, + Instruction::CMPG_DOUBLE, Instruction::CMP_LONG, // Instruction::IF_EQ, // Instruction::IF_NE, @@ -262,20 +262,20 @@ int arm64_support_list[] = { Instruction::NOT_INT, Instruction::NEG_LONG, Instruction::NOT_LONG, - // Instruction::NEG_FLOAT, - // Instruction::NEG_DOUBLE, + Instruction::NEG_FLOAT, + Instruction::NEG_DOUBLE, Instruction::INT_TO_LONG, - // Instruction::INT_TO_FLOAT, - // Instruction::INT_TO_DOUBLE, + Instruction::INT_TO_FLOAT, + Instruction::INT_TO_DOUBLE, Instruction::LONG_TO_INT, - // Instruction::LONG_TO_FLOAT, - // Instruction::LONG_TO_DOUBLE, - // Instruction::FLOAT_TO_INT, - // Instruction::FLOAT_TO_LONG, - // Instruction::FLOAT_TO_DOUBLE, - // Instruction::DOUBLE_TO_INT, - // Instruction::DOUBLE_TO_LONG, - // Instruction::DOUBLE_TO_FLOAT, + Instruction::LONG_TO_FLOAT, + Instruction::LONG_TO_DOUBLE, + Instruction::FLOAT_TO_INT, + Instruction::FLOAT_TO_LONG, + Instruction::FLOAT_TO_DOUBLE, + Instruction::DOUBLE_TO_INT, + Instruction::DOUBLE_TO_LONG, + Instruction::DOUBLE_TO_FLOAT, Instruction::INT_TO_BYTE, Instruction::INT_TO_CHAR, Instruction::INT_TO_SHORT, @@ -301,15 +301,15 @@ int arm64_support_list[] = { Instruction::SHL_LONG, Instruction::SHR_LONG, Instruction::USHR_LONG, - // Instruction::ADD_FLOAT, - // Instruction::SUB_FLOAT, - // Instruction::MUL_FLOAT, - // Instruction::DIV_FLOAT, + Instruction::ADD_FLOAT, + Instruction::SUB_FLOAT, + Instruction::MUL_FLOAT, + Instruction::DIV_FLOAT, // Instruction::REM_FLOAT, - // Instruction::ADD_DOUBLE, - // Instruction::SUB_DOUBLE, - // Instruction::MUL_DOUBLE, - // Instruction::DIV_DOUBLE, + Instruction::ADD_DOUBLE, + Instruction::SUB_DOUBLE, + Instruction::MUL_DOUBLE, + Instruction::DIV_DOUBLE, // Instruction::REM_DOUBLE, Instruction::ADD_INT_2ADDR, Instruction::SUB_INT_2ADDR, @@ -333,15 +333,15 @@ int arm64_support_list[] = { Instruction::SHL_LONG_2ADDR, Instruction::SHR_LONG_2ADDR, Instruction::USHR_LONG_2ADDR, - // Instruction::ADD_FLOAT_2ADDR, - // Instruction::SUB_FLOAT_2ADDR, - // Instruction::MUL_FLOAT_2ADDR, - // Instruction::DIV_FLOAT_2ADDR, + Instruction::ADD_FLOAT_2ADDR, + Instruction::SUB_FLOAT_2ADDR, + Instruction::MUL_FLOAT_2ADDR, + Instruction::DIV_FLOAT_2ADDR, // Instruction::REM_FLOAT_2ADDR, - // Instruction::ADD_DOUBLE_2ADDR, - // Instruction::SUB_DOUBLE_2ADDR, - // Instruction::MUL_DOUBLE_2ADDR, - // Instruction::DIV_DOUBLE_2ADDR, + Instruction::ADD_DOUBLE_2ADDR, + Instruction::SUB_DOUBLE_2ADDR, + Instruction::MUL_DOUBLE_2ADDR, + Instruction::DIV_DOUBLE_2ADDR, // Instruction::REM_DOUBLE_2ADDR, Instruction::ADD_INT_LIT16, Instruction::RSUB_INT, @@ -699,7 +699,7 @@ int x86_64_support_list[] = { // V : void // (ARM64) Current calling conversion only support 32bit softfp // which has problems with long, float, double -constexpr char arm64_supported_types[] = "ZBSCILVJ"; +constexpr char arm64_supported_types[] = "ZBSCILVJFD"; // (x84_64) We still have troubles with compiling longs/doubles/floats constexpr char x86_64_supported_types[] = "ZBSCILV"; |