summaryrefslogtreecommitdiffstats
path: root/compiler/dex/compiler_ir.h
diff options
context:
space:
mode:
authorDave Allison <dallison@google.com>2013-10-22 17:52:19 -0700
committerDave Allison <dallison@google.com>2013-11-05 16:48:53 -0800
commit7020278bce98a0735dc6abcbd33bdf1ed2634f1d (patch)
tree533cf9a77046a49525d916043a58949e59319f2d /compiler/dex/compiler_ir.h
parent67f128a4023bbbe55827dd2c11ed0538ee387233 (diff)
downloadart-7020278bce98a0735dc6abcbd33bdf1ed2634f1d.zip
art-7020278bce98a0735dc6abcbd33bdf1ed2634f1d.tar.gz
art-7020278bce98a0735dc6abcbd33bdf1ed2634f1d.tar.bz2
Support hardware divide instruction
Bug: 11299025 Uses sdiv for division and a combo of sdiv, mul and sub for modulus. Only does this on processors that are capable of the sdiv instruction, as determined by the build system. Also provides a command line arg --instruction-set-features= to allow cross compilation. Makefile adds the --instruction-set-features= arg to build-time dex2oat runs and defaults it to something obtained from the target architecture. Provides a GetInstructionSetFeatures() function on CompilerDriver that can be queried for various features. The only feature supported right now is hasDivideInstruction(). Also adds a few more instructions to the ARM disassembler b/11535253 is an addition to this CL to be done later. Change-Id: Ia8aaf801fd94bc71e476902749cf20f74eba9f68
Diffstat (limited to 'compiler/dex/compiler_ir.h')
-rw-r--r--compiler/dex/compiler_ir.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/compiler/dex/compiler_ir.h b/compiler/dex/compiler_ir.h
index 0d7209e..fd46975 100644
--- a/compiler/dex/compiler_ir.h
+++ b/compiler/dex/compiler_ir.h
@@ -97,6 +97,9 @@ struct CompilationUnit {
CompilerBackend compiler_backend;
InstructionSet instruction_set;
+ const InstructionSetFeatures& GetInstructionSetFeatures() {
+ return compiler_driver->GetInstructionSetFeatures();
+ }
// TODO: much of this info available elsewhere. Go to the original source?
uint16_t num_dalvik_registers; // method->registers_size.
const uint16_t* insns;