summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteve Kondik <shade@chemlab.org>2014-02-02 11:59:08 -0800
committerSteve Kondik <shade@chemlab.org>2014-02-02 11:59:08 -0800
commit80c0826f67ee7a2fd678e7500ccb11608306b3cb (patch)
treebdbc8b5a48e9baf532361184fbf2b066beefbcb7
parent462bc921aefe3b96e8cc7dae91e234b0e455966c (diff)
downloadandroid_dalvik-80c0826f67ee7a2fd678e7500ccb11608306b3cb.tar.gz
android_dalvik-80c0826f67ee7a2fd678e7500ccb11608306b3cb.tar.bz2
android_dalvik-80c0826f67ee7a2fd678e7500ccb11608306b3cb.zip
vm: Enable fast multiply on perf builds too
Change-Id: I74d152ea9cfe5b15daa9a8353ca27d8afa7474d2
-rw-r--r--vm/compiler/codegen/arm/ArmLIR.h2
-rw-r--r--vm/compiler/codegen/arm/Assemble.cpp2
-rw-r--r--vm/compiler/codegen/arm/CodegenDriver.cpp7
-rw-r--r--vm/compiler/codegen/arm/Thumb/Gen.cpp2
-rw-r--r--vm/compiler/codegen/arm/Thumb2/Gen.cpp2
5 files changed, 2 insertions, 13 deletions
diff --git a/vm/compiler/codegen/arm/ArmLIR.h b/vm/compiler/codegen/arm/ArmLIR.h
index 9b404af6a..da99410c2 100644
--- a/vm/compiler/codegen/arm/ArmLIR.h
+++ b/vm/compiler/codegen/arm/ArmLIR.h
@@ -640,10 +640,8 @@ typedef enum ArmOpcode {
kThumb2Dmb, /* dmb [1111001110111111100011110101] option[3-0] */
kThumb2LdrPcReln12, /* ldr rd,[pc,-#imm12] [1111100011011111] rt[15-12]
imm12[11-0] */
-#ifndef WITH_QC_PERF
kThumb2RsbRRR, /* rsb [111010111101] rn[19..16] [0000] rd[11..8]
[0000] rm[3..0] */
-#endif
kThumbUndefined, /* undefined [11011110xxxxxxxx] */
kArmLast,
} ArmOpcode;
diff --git a/vm/compiler/codegen/arm/Assemble.cpp b/vm/compiler/codegen/arm/Assemble.cpp
index 5cc35cc79..96a1b69e5 100644
--- a/vm/compiler/codegen/arm/Assemble.cpp
+++ b/vm/compiler/codegen/arm/Assemble.cpp
@@ -908,13 +908,11 @@ ArmEncodingMap EncodingMap[kArmLast] = {
kFmtUnused, -1, -1,
IS_BINARY_OP | REG_DEF0 | REG_USE_PC | IS_LOAD,
"ldr", "r!0d, [r15pc, -#!1d]", 2),
-#ifndef WITH_QC_PERF
ENCODING_MAP(kThumb2RsbRRR, 0xebd00000, /* setflags encoding */
kFmtBitBlt, 11, 8, kFmtBitBlt, 19, 16, kFmtBitBlt, 3, 0,
kFmtShift, -1, -1,
IS_QUAD_OP | REG_DEF0_USE12 | SETS_CCODES,
"rsb", "r!0d, r!1d, r!2d!3H", 2),
-#endif
ENCODING_MAP(kThumbUndefined, 0xde00,
kFmtUnused, -1, -1, kFmtUnused, -1, -1, kFmtUnused, -1, -1,
kFmtUnused, -1, -1, NO_OPERAND,
diff --git a/vm/compiler/codegen/arm/CodegenDriver.cpp b/vm/compiler/codegen/arm/CodegenDriver.cpp
index e8b497c90..b61b89407 100644
--- a/vm/compiler/codegen/arm/CodegenDriver.cpp
+++ b/vm/compiler/codegen/arm/CodegenDriver.cpp
@@ -2342,14 +2342,7 @@ static bool handleEasyMultiply(CompilationUnit *cUnit,
} else {
// Reverse subtract: (src << (shift + 1)) - src.
assert(powerOfTwoMinusOne);
-#ifdef WITH_QC_PERF
- // TODO: rsb dst, src, src lsl#lowestSetBit(lit + 1)
- int tReg = dvmCompilerAllocTemp(cUnit);
- opRegRegImm(cUnit, kOpLsl, tReg, rlSrc.lowReg, lowestSetBit(lit + 1));
- opRegRegReg(cUnit, kOpSub, rlResult.lowReg, tReg, rlSrc.lowReg);
-#else
genMultiplyByShiftAndReverseSubtract(cUnit, rlSrc, rlResult, lowestSetBit(lit + 1));
-#endif
}
storeValue(cUnit, rlDest, rlResult);
return true;
diff --git a/vm/compiler/codegen/arm/Thumb/Gen.cpp b/vm/compiler/codegen/arm/Thumb/Gen.cpp
index 52d492c32..aa11f2cc8 100644
--- a/vm/compiler/codegen/arm/Thumb/Gen.cpp
+++ b/vm/compiler/codegen/arm/Thumb/Gen.cpp
@@ -275,7 +275,6 @@ static void genMultiplyByTwoBitMultiplier(CompilationUnit *cUnit,
opRegRegImm(cUnit, kOpMul, rlResult.lowReg, rlSrc.lowReg, lit);
}
-#ifndef WITH_QC_PERF
static void genMultiplyByShiftAndReverseSubtract(CompilationUnit *cUnit,
RegLocation rlSrc, RegLocation rlResult, int lit)
{
@@ -284,6 +283,7 @@ static void genMultiplyByShiftAndReverseSubtract(CompilationUnit *cUnit,
opRegRegReg(cUnit, kOpSub, rlResult.lowReg, tReg, rlSrc.lowReg);
}
+#ifndef WITH_QC_PERF
/*
* Generate array load
*/
diff --git a/vm/compiler/codegen/arm/Thumb2/Gen.cpp b/vm/compiler/codegen/arm/Thumb2/Gen.cpp
index d49f027b5..57e51a907 100644
--- a/vm/compiler/codegen/arm/Thumb2/Gen.cpp
+++ b/vm/compiler/codegen/arm/Thumb2/Gen.cpp
@@ -476,7 +476,6 @@ static void genMultiplyByTwoBitMultiplier(CompilationUnit *cUnit,
}
}
-#ifndef WITH_QC_PERF
static void genMultiplyByShiftAndReverseSubtract(CompilationUnit *cUnit,
RegLocation rlSrc, RegLocation rlResult, int lit)
{
@@ -484,6 +483,7 @@ static void genMultiplyByShiftAndReverseSubtract(CompilationUnit *cUnit,
encodeShift(kArmLsl, lit));
}
+#ifndef WITH_QC_PERF
/*
* Generate array load.
* For wide array access using scale, combine add with shift.