diff options
| author | 2015-07-23 10:44:35 +0100 | |
|---|---|---|
| committer | 2015-09-11 09:51:58 +0100 | |
| commit | 9ee23f4273efed8d6378f6ad8e63c65e30a17139 (patch) | |
| tree | 3b1bfb8a6260a57ccb2f025fcdc457464714701e /compiler/utils/arm/assembler_arm32.cc | |
| parent | 62ba40149be3d1c65e4db1f455822a585149d32f (diff) | |
ARM/ARM64: Intrinsics - numberOfTrailingZeros, rotateLeft, rotateRight
Change-Id: I2a07c279756ee804fb7c129416bdc4a3962e93ed
Diffstat (limited to 'compiler/utils/arm/assembler_arm32.cc')
| -rw-r--r-- | compiler/utils/arm/assembler_arm32.cc | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/compiler/utils/arm/assembler_arm32.cc b/compiler/utils/arm/assembler_arm32.cc index d91ddee9b9..64fa9a4c0d 100644 --- a/compiler/utils/arm/assembler_arm32.cc +++ b/compiler/utils/arm/assembler_arm32.cc @@ -735,6 +735,20 @@ void Arm32Assembler::movt(Register rd, uint16_t imm16, Condition cond) { } +void Arm32Assembler::rbit(Register rd, Register rm, Condition cond) { + CHECK_NE(rd, kNoRegister); + CHECK_NE(rm, kNoRegister); + CHECK_NE(cond, kNoCondition); + CHECK_NE(rd, PC); + CHECK_NE(rm, PC); + int32_t encoding = (static_cast<int32_t>(cond) << kConditionShift) | + B26 | B25 | B23 | B22 | B21 | B20 | (0xf << 16) | + (static_cast<int32_t>(rd) << kRdShift) | + (0xf << 8) | B5 | B4 | static_cast<int32_t>(rm); + Emit(encoding); +} + + void Arm32Assembler::EmitMulOp(Condition cond, int32_t opcode, Register rd, Register rn, Register rm, Register rs) { |