summaryrefslogtreecommitdiffstats
path: root/compiler/utils
diff options
context:
space:
mode:
authorGuillaume "Vermeille" Sanchez <guillaumesa@google.com>2015-03-11 14:00:30 +0000
committerGuillaume "Vermeille" Sanchez <guillaumesa@google.com>2015-03-25 10:19:27 +0000
commitab4a2f5995b79c2b5b28c91b419a2c91cb88e377 (patch)
tree5c39b9f7ef283ee75d437903cfd10c3af49ff331 /compiler/utils
parentdc62c48937a6476ed9c0d739f6b3b5c26f758371 (diff)
downloadandroid_art-ab4a2f5995b79c2b5b28c91b419a2c91cb88e377.tar.gz
android_art-ab4a2f5995b79c2b5b28c91b419a2c91cb88e377.tar.bz2
android_art-ab4a2f5995b79c2b5b28c91b419a2c91cb88e377.zip
Forbid the use of shifts in ShifterOperand in Thumb2
Change-Id: I4b3b4d90f11f2dd0c9a274b724051fa98982fb19
Diffstat (limited to 'compiler/utils')
-rw-r--r--compiler/utils/arm/assembler_arm.h4
-rw-r--r--compiler/utils/arm/assembler_thumb2.cc2
2 files changed, 6 insertions, 0 deletions
diff --git a/compiler/utils/arm/assembler_arm.h b/compiler/utils/arm/assembler_arm.h
index 8730f52eca..dd0dba2df4 100644
--- a/compiler/utils/arm/assembler_arm.h
+++ b/compiler/utils/arm/assembler_arm.h
@@ -100,6 +100,10 @@ class ShifterOperand {
return rm_;
}
+ Register GetSecondRegister() const {
+ return rs_;
+ }
+
enum Type {
kUnknown = -1,
kRegister,
diff --git a/compiler/utils/arm/assembler_thumb2.cc b/compiler/utils/arm/assembler_thumb2.cc
index e95db0d6e9..a894319c99 100644
--- a/compiler/utils/arm/assembler_thumb2.cc
+++ b/compiler/utils/arm/assembler_thumb2.cc
@@ -924,6 +924,8 @@ void Thumb2Assembler::Emit16BitDataProcessing(Condition cond,
use_immediate = true;
immediate = so.GetImmediate();
} else {
+ CHECK(!(so.IsRegister() && so.IsShift() && so.GetSecondRegister() != kNoRegister))
+ << "No register-shifted register instruction available in thumb";
// Adjust rn and rd: only two registers will be emitted.
switch (opcode) {
case AND: