From 80c0826f67ee7a2fd678e7500ccb11608306b3cb Mon Sep 17 00:00:00 2001 From: Steve Kondik Date: Sun, 2 Feb 2014 11:59:08 -0800 Subject: vm: Enable fast multiply on perf builds too Change-Id: I74d152ea9cfe5b15daa9a8353ca27d8afa7474d2 --- vm/compiler/codegen/arm/ArmLIR.h | 2 -- vm/compiler/codegen/arm/Assemble.cpp | 2 -- vm/compiler/codegen/arm/CodegenDriver.cpp | 7 ------- vm/compiler/codegen/arm/Thumb/Gen.cpp | 2 +- vm/compiler/codegen/arm/Thumb2/Gen.cpp | 2 +- 5 files changed, 2 insertions(+), 13 deletions(-) (limited to 'vm') 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. -- cgit v1.2.3