From 849cc5e54cbd05f4efbd6082e03547ed9284639f Mon Sep 17 00:00:00 2001 From: Andreas Gampe Date: Tue, 18 Nov 2014 13:46:46 -0800 Subject: ART: Assembler_arm_test Add some generic test infrastructure, and update the arm32 test. Supports many of the GPR instructions. Change-Id: I8a270ec377f3266d6ab486e636abb50c56b87823 --- compiler/utils/arm/assembler_arm.cc | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'compiler/utils/arm/assembler_arm.cc') diff --git a/compiler/utils/arm/assembler_arm.cc b/compiler/utils/arm/assembler_arm.cc index 591d461244..9c84bc1e37 100644 --- a/compiler/utils/arm/assembler_arm.cc +++ b/compiler/utils/arm/assembler_arm.cc @@ -92,16 +92,29 @@ uint32_t ShifterOperand::encodingArm() const { break; case kRegister: if (is_shift_) { + uint32_t shift_type; + switch (shift_) { + case arm::Shift::ROR: + shift_type = static_cast(shift_); + CHECK_NE(immed_, 0U); + break; + case arm::Shift::RRX: + shift_type = static_cast(arm::Shift::ROR); // Same encoding as ROR. + CHECK_EQ(immed_, 0U); + break; + default: + shift_type = static_cast(shift_); + } // Shifted immediate or register. if (rs_ == kNoRegister) { // Immediate shift. return immed_ << kShiftImmShift | - static_cast(shift_) << kShiftShift | + shift_type << kShiftShift | static_cast(rm_); } else { // Register shift. return static_cast(rs_) << kShiftRegisterShift | - static_cast(shift_) << kShiftShift | (1 << 4) | + shift_type << kShiftShift | (1 << 4) | static_cast(rm_); } } else { -- cgit v1.2.3