From 20111d635e9210bdd105219eceb263607ec4d5c5 Mon Sep 17 00:00:00 2001 From: Anders O Nilsson Date: Wed, 10 Oct 2012 15:26:32 +0200 Subject: JIT: Use rsb and shift in easy multiply. For easy multiplication using reverse subtract (when lit is 2^n-1) use the barrel shifter for rsb. This improves arithmetic performance for code executing in Dalvik. E.g String.hashCode. Change-Id: Ifb086dcec344b30fd3e392ac21d508b43e820cdc Signed-off-by: Patrik Ryd --- vm/compiler/codegen/arm/Assemble.cpp | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'vm/compiler/codegen/arm/Assemble.cpp') diff --git a/vm/compiler/codegen/arm/Assemble.cpp b/vm/compiler/codegen/arm/Assemble.cpp index 7406d3e88..a729dc589 100644 --- a/vm/compiler/codegen/arm/Assemble.cpp +++ b/vm/compiler/codegen/arm/Assemble.cpp @@ -881,6 +881,11 @@ ArmEncodingMap EncodingMap[kArmLast] = { kFmtUnused, -1, -1, IS_BINARY_OP | REG_DEF0 | REG_USE_PC | IS_LOAD, "ldr", "r!0d, [r15pc, -#!1d]", 2), + 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), ENCODING_MAP(kThumbUndefined, 0xde00, kFmtUnused, -1, -1, kFmtUnused, -1, -1, kFmtUnused, -1, -1, kFmtUnused, -1, -1, NO_OPERAND, -- cgit v1.2.3